diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html
index 620db18df7..b2102ed74b 100644
--- a/InvenTree/build/templates/build/build_base.html
+++ b/InvenTree/build/templates/build/build_base.html
@@ -36,6 +36,19 @@ InvenTree | Build - {{ build }}
Quantity |
{{ build.quantity }} |
+
+ BOM Price |
+
+ {% if bom_price %}
+ {{ bom_price }}
+ {% if build.part.has_complete_bom_pricing == False %}
+ BOM pricing is incomplete
+ {% endif %}
+ {% else %}
+ No pricing information
+ {% endif %}
+ |
+
diff --git a/InvenTree/build/views.py b/InvenTree/build/views.py
index 6f19c67754..14e22a3fe8 100644
--- a/InvenTree/build/views.py
+++ b/InvenTree/build/views.py
@@ -265,6 +265,16 @@ class BuildDetail(DetailView):
template_name = 'build/detail.html'
context_object_name = 'build'
+ def get_context_data(self, **kwargs):
+
+ ctx = super(DetailView, self).get_context_data(**kwargs)
+
+ build = self.get_object()
+
+ ctx['bom_price'] = build.part.get_price_info(build.quantity, buy=False)
+
+ return ctx
+
class BuildAllocate(DetailView):
""" View for allocating parts to a Build """
diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py
index 536ed50798..a9278e0dec 100644
--- a/InvenTree/part/models.py
+++ b/InvenTree/part/models.py
@@ -598,11 +598,17 @@ class Part(models.Model):
return self.get_price_info()
- def get_price_info(self, quantity=1):
- """ Return a simplified pricing string for this part """
-
- min_price = self.get_min_price(quantity)
- max_price = self.get_max_price(quantity)
+ def get_price_info(self, quantity=1, buy=True, bom=True):
+ """ Return a simplified pricing string for this part
+
+ Args:
+ quantity: Number of units to calculate price for
+ buy: Include supplier pricing (default = True)
+ bom: Include BOM pricing (default = True)
+ """
+
+ min_price = self.get_min_price(quantity, buy, bom)
+ max_price = self.get_max_price(quantity, buy, bom)
if min_price is None:
return None
@@ -710,7 +716,7 @@ class Part(models.Model):
return max_price
- def get_min_price(self, quantity=1):
+ def get_min_price(self, quantity=1, buy=True, bom=True):
""" Return the minimum price for this part. This price can be either:
- Supplier price (if purchased from suppliers)
@@ -720,8 +726,8 @@ class Part(models.Model):
Minimum of the supplier price or BOM price. If no pricing available, returns None
"""
- buy_price = self.get_min_supplier_price(quantity)
- bom_price = self.get_min_bom_price(quantity)
+ buy_price = self.get_min_supplier_price(quantity) if buy else None
+ bom_price = self.get_min_bom_price(quantity) if bom else None
if buy_price is None:
return bom_price
@@ -731,7 +737,7 @@ class Part(models.Model):
return min(buy_price, bom_price)
- def get_max_price(self, quantity=1):
+ def get_max_price(self, quantity=1, buy=True, bom=True):
""" Return the maximum price for this part. This price can be either:
- Supplier price (if purchsed from suppliers)
@@ -741,8 +747,8 @@ class Part(models.Model):
Maximum of the supplier price or BOM price. If no pricing available, returns None
"""
- buy_price = self.get_max_supplier_price(quantity)
- bom_price = self.get_max_bom_price(quantity)
+ buy_price = self.get_max_supplier_price(quantity) if buy else None
+ bom_price = self.get_max_bom_price(quantity) if bom else None
if buy_price is None:
return bom_price