adds in money-conversion helper

This commit is contained in:
Matthias 2021-06-27 14:18:37 +02:00
parent a3ec24fbcc
commit 4f726931a6
2 changed files with 26 additions and 7 deletions

View File

@ -21,6 +21,9 @@ import InvenTree.version
from common.models import InvenTreeSetting from common.models import InvenTreeSetting
from .settings import MEDIA_URL, STATIC_URL from .settings import MEDIA_URL, STATIC_URL
from common.settings import currency_code_default
from djmoney.money import Money
def getSetting(key, backup_value=None): def getSetting(key, backup_value=None):
@ -247,6 +250,22 @@ def decimal2string(d):
return s.rstrip("0").rstrip(".") return s.rstrip("0").rstrip(".")
def decimal2money(d, currency = None):
"""
Format a Decimal number as Money
Args:
d: A python Decimal object
currency: Currency of the input amount, defaults to default currency in settings
Returns:
A Money object from the input(s)
"""
if not currency:
currency = currency_code_default()
return Money(d, currency)
def WrapWithQuotes(text, quote='"'): def WrapWithQuotes(text, quote='"'):
""" Wrap the supplied text with quotes """ Wrap the supplied text with quotes

View File

@ -39,7 +39,7 @@ from InvenTree import helpers
from InvenTree import validators from InvenTree import validators
from InvenTree.models import InvenTreeTree, InvenTreeAttachment from InvenTree.models import InvenTreeTree, InvenTreeAttachment
from InvenTree.fields import InvenTreeURLField from InvenTree.fields import InvenTreeURLField
from InvenTree.helpers import decimal2string, normalize from InvenTree.helpers import decimal2string, normalize, decimal2money
from InvenTree.status_codes import BuildStatus, PurchaseOrderStatus, SalesOrderStatus from InvenTree.status_codes import BuildStatus, PurchaseOrderStatus, SalesOrderStatus
@ -2414,7 +2414,7 @@ class BomItem(models.Model):
return "{n} x {child} to make {parent}".format( return "{n} x {child} to make {parent}".format(
parent=self.part.full_name, parent=self.part.full_name,
child=self.sub_part.full_name, child=self.sub_part.full_name,
n=helpers.decimal2string(self.quantity)) n=decimal2string(self.quantity))
def available_stock(self): def available_stock(self):
""" """
@ -2498,12 +2498,12 @@ class BomItem(models.Model):
return required return required
@property @property
def price_range(self): def price_range(self, internal = False):
""" Return the price-range for this BOM item. """ """ Return the price-range for this BOM item. """
# get internal price setting # get internal price setting
use_internal = common.models.InvenTreeSetting.get_setting('PART_BOM_USE_INTERNAL_PRICE', False) use_internal = common.models.InvenTreeSetting.get_setting('PART_BOM_USE_INTERNAL_PRICE', False)
prange = self.sub_part.get_price_range(self.quantity, internal=use_internal) prange = self.sub_part.get_price_range(self.quantity, internal=use_internal and internal)
if prange is None: if prange is None:
return prange return prange
@ -2511,11 +2511,11 @@ class BomItem(models.Model):
pmin, pmax = prange pmin, pmax = prange
if pmin == pmax: if pmin == pmax:
return decimal2string(pmin) return decimal2money(pmin)
# Convert to better string representation # Convert to better string representation
pmin = decimal2string(pmin) pmin = decimal2money(pmin)
pmax = decimal2string(pmax) pmax = decimal2money(pmax)
return "{pmin} to {pmax}".format(pmin=pmin, pmax=pmax) return "{pmin} to {pmax}".format(pmin=pmin, pmax=pmax)