diff --git a/CHANGELOG b/CHANGELOG index 14cbec54cc..f7d834b361 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Check price_decimal configuration + Version 5.6.0 - 2020-05-04 * Bug fixes (see mercurial logs for details) * Add round_price diff --git a/__init__.py b/__init__.py index 134d210c72..4314810344 100644 --- a/__init__.py +++ b/__init__.py @@ -2,6 +2,7 @@ # this repository contains the full copyright notices and license terms. from trytond.pool import Pool +from . import ir from . import uom from . import category from . import product @@ -14,6 +15,7 @@ __all__ = [price_digits, round_price, uom_conversion_digits] def register(): Pool.register( + ir.Configuration, uom.UomCategory, uom.Uom, category.Category, diff --git a/ir.py b/ir.py new file mode 100644 index 0000000000..ef981fedd9 --- /dev/null +++ b/ir.py @@ -0,0 +1,24 @@ +# This file is part of Tryton. The COPYRIGHT file at the top level of +# this repository contains the full copyright notices and license terms. +from trytond.config import config +from trytond.model import fields +from trytond.pool import PoolMeta + +price_decimal = config.getint('product', 'price_decimal', default=4) + + +class Configuration(metaclass=PoolMeta): + __name__ = 'ir.configuration' + product_price_decimal = fields.Integer("Product Price Decimal") + + @classmethod + def default_product_price_decimal(cls): + return price_decimal + + def check(self): + super().check() + if self.product_price_decimal != price_decimal: + raise ValueError( + "The price_decimal %s in [product] configuration section " + "is different from the value %s in 'ir.configuration'." % ( + self.product_price_decimal, price_decimal)) diff --git a/product.py b/product.py index f81b3d19ec..bfdc184048 100644 --- a/product.py +++ b/product.py @@ -18,12 +18,12 @@ from trytond.pyson import Eval from trytond.transaction import Transaction from trytond.pool import Pool from trytond import backend -from trytond.config import config from trytond.tools import lstrip_wildcard from trytond.tools.multivalue import migrate_property from trytond.modules.company.model import ( CompanyMultiValueMixin, CompanyValueMixin) from .exceptions import InvalidIdentifierCode +from .ir import price_decimal __all__ = ['price_digits', 'round_price', 'TemplateFunction'] @@ -39,7 +39,7 @@ COST_PRICE_METHODS = [ ('average', 'Average'), ] -price_digits = (16, config.getint('product', 'price_decimal', default=4)) +price_digits = (16, price_decimal) def round_price(value, rounding=None):