diff --git a/InvenTree/part/templates/part/part_pricing.html b/InvenTree/part/templates/part/part_pricing.html
index 55d68f06e2..c0b23ffbd7 100644
--- a/InvenTree/part/templates/part/part_pricing.html
+++ b/InvenTree/part/templates/part/part_pricing.html
@@ -24,14 +24,14 @@ Pricing information for:
{% if min_total_buy_price %}
Unit Cost |
- Min: {{ min_unit_buy_price }} |
- Max: {{ max_unit_buy_price }} |
+ Min: {% include "price.html" with price=min_unit_buy_price %} |
+ Max: {% include "price.html" with price=max_unit_buy_price %} |
{% if quantity > 1 %}
Total Cost |
- Min: {{ min_total_buy_price }} |
- Max: {{ max_total_buy_price }} |
+ Min: {% include "price.html" with price=min_total_buy_price %} |
+ Max: {% include "price.html" with price=max_total_buy_price %} |
{% endif %}
{% else %}
@@ -50,14 +50,14 @@ Pricing information for:
{% if min_total_bom_price %}
Unit Cost |
- Min: {{ min_unit_bom_price }} |
- Max: {{ max_unit_bom_price }} |
+ Min: {% include "price.html" with price=min_unit_bom_price %} |
+ Max: {% include "price.html" with price=max_unit_bom_price %} |
{% if quantity > 1 %}
Total Cost |
- Min: {{ min_total_bom_price }} |
- Max: {{ max_total_bom_price }} |
+ Min: {% include "price.html" with price=min_total_bom_price %} |
+ Max: {% include "price.html" with price=max_total_bom_price %} |
{% endif %}
{% if part.has_complete_bom_pricing == False %}
diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py
index cc1300238e..ca5272ad71 100644
--- a/InvenTree/part/views.py
+++ b/InvenTree/part/views.py
@@ -17,12 +17,14 @@ from django.forms import HiddenInput, CheckboxInput
import tablib
from fuzzywuzzy import fuzz
+from decimal import Decimal
from .models import PartCategory, Part, PartAttachment
from .models import PartParameterTemplate, PartParameter
from .models import BomItem
from .models import match_part_names
+from common.models import Currency
from company.models import SupplierPart
from . import forms as part_forms
@@ -1325,7 +1327,7 @@ class PartPricing(AjaxView):
except Part.DoesNotExist:
return None
- def get_pricing(self, quantity=1):
+ def get_pricing(self, quantity=1, currency=None):
try:
quantity = int(quantity)
@@ -1335,11 +1337,18 @@ class PartPricing(AjaxView):
if quantity < 1:
quantity = 1
+ # Currency scaler
+ scaler = Decimal(1.0)
+
+ if currency is not None:
+ scaler = Decimal(currency.value)
+
part = self.get_part()
ctx = {
'part': part,
- 'quantity': quantity
+ 'quantity': quantity,
+ 'currency': currency,
}
if part is None:
@@ -1352,6 +1361,12 @@ class PartPricing(AjaxView):
if buy_price is not None:
min_buy_price, max_buy_price = buy_price
+ min_buy_price /= scaler
+ max_buy_price /= scaler
+
+ min_buy_price = round(min_buy_price, 3)
+ max_buy_price = round(max_buy_price, 3)
+
if min_buy_price:
ctx['min_total_buy_price'] = min_buy_price
ctx['min_unit_buy_price'] = min_buy_price / quantity
@@ -1368,6 +1383,12 @@ class PartPricing(AjaxView):
if bom_price is not None:
min_bom_price, max_bom_price = bom_price
+ min_bom_price /= scaler
+ max_bom_price /= scaler
+
+ min_bom_price = round(min_bom_price, 3)
+ max_bom_price = round(max_bom_price, 3)
+
if min_bom_price:
ctx['min_total_bom_price'] = min_bom_price
ctx['min_unit_bom_price'] = min_bom_price / quantity
@@ -1384,17 +1405,28 @@ class PartPricing(AjaxView):
def post(self, request, *args, **kwargs):
+ currency = None
+
try:
quantity = int(self.request.POST.get('quantity', 1))
except ValueError:
quantity = 1
+ try:
+ currency_id = int(self.request.POST.get('currency', None))
+
+ if currency_id:
+ currency = Currency.objects.get(pk=currency_id)
+ except (ValueError, Currency.DoesNotExist):
+ pass
+
+
# Always mark the form as 'invalid' (the user may wish to keep getting pricing data)
data = {
'form_valid': False,
}
- return self.renderJsonResponse(request, self.form_class(), data=data, context=self.get_pricing(quantity))
+ return self.renderJsonResponse(request, self.form_class(), data=data, context=self.get_pricing(quantity, currency))
class PartParameterTemplateCreate(AjaxCreateView):
diff --git a/InvenTree/templates/price.html b/InvenTree/templates/price.html
new file mode 100644
index 0000000000..ef47d5edf2
--- /dev/null
+++ b/InvenTree/templates/price.html
@@ -0,0 +1 @@
+{% if currency %}{{ currency.symbol }}{% endif %}{{ price }}{% if currency %} {{ currency.suffix }}{% endif %}
\ No newline at end of file