Files

30 lines
975 B
Python

# 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 decimal import ROUND_HALF_EVEN
from trytond.model import fields
from trytond.modules.currency import ROUNDING_OPPOSITES
from trytond.pool import PoolMeta
from trytond.pyson import Eval
class Currency(metaclass=PoolMeta):
__name__ = 'currency.currency'
cash_rounding = fields.Numeric(
"Cash Rounding Factor",
digits=(None, Eval('digits', None)),
domain=['OR',
('cash_rounding', '=', None),
('cash_rounding', '>', 0),
])
def cash_round(self, amount, rounding=ROUND_HALF_EVEN, opposite=False):
if opposite:
rounding = ROUNDING_OPPOSITES[rounding]
if self.cash_rounding is not None:
factor = self.cash_rounding
else:
factor = self.rounding
return self._round(amount, factor, rounding)