Add monetary field
issue10598 review338511002
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
* Add monetary field
|
||||
* Provide digits from currency
|
||||
|
||||
Version 6.0.0 - 2021-05-03
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Add parameter rate_decimal
|
||||
|
||||
+4
-2
@@ -18,7 +18,8 @@ except ImportError:
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import (
|
||||
ModelView, ModelSQL, DeactivableMixin, fields, Unique, Check, SymbolMixin)
|
||||
ModelView, ModelSQL, DeactivableMixin, fields, Unique, Check, SymbolMixin,
|
||||
DigitsMixin)
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.rpc import RPC
|
||||
@@ -30,7 +31,8 @@ from .ir import rate_decimal
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Currency(SymbolMixin, DeactivableMixin, ModelSQL, ModelView):
|
||||
class Currency(
|
||||
SymbolMixin, DigitsMixin, DeactivableMixin, ModelSQL, ModelView):
|
||||
'Currency'
|
||||
__name__ = 'currency.currency'
|
||||
name = fields.Char('Name', required=True, translate=True,
|
||||
|
||||
@@ -14,3 +14,4 @@ different currencies.
|
||||
usage
|
||||
configuration
|
||||
design
|
||||
reference
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
*************
|
||||
API Reference
|
||||
*************
|
||||
|
||||
.. module:: trytond.modules.currency.fields
|
||||
|
||||
Monetary field
|
||||
==============
|
||||
|
||||
.. class:: Monetary(string[, currency[, \**options]])
|
||||
|
||||
A subclass of :class:`~trytond:trytond.model.fields.Numeric` used to store monetary values.
|
||||
|
||||
.. attribute:: Monetary.currency
|
||||
|
||||
The name of the :class:`~trytond:trytond.model.fields.Many2One` field which
|
||||
stores the currency used to display the symbol.
|
||||
@@ -0,0 +1,36 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the toplevel of this
|
||||
# repository contains the full copyright notices and license terms.
|
||||
from trytond.model import fields
|
||||
|
||||
__all__ = ['Monetary']
|
||||
|
||||
|
||||
class Monetary(fields.Numeric):
|
||||
"""
|
||||
Define a numeric field with currency (``decimal``).
|
||||
"""
|
||||
def __init__(self, string='', currency=None, digits=None, help='',
|
||||
required=False, readonly=False, domain=None, states=None,
|
||||
select=False, on_change=None, on_change_with=None, depends=None,
|
||||
context=None, loading='eager'):
|
||||
'''
|
||||
:param currency: the name of the Many2One field which stores
|
||||
the currency
|
||||
'''
|
||||
if currency:
|
||||
if depends is None:
|
||||
depends = [currency]
|
||||
elif currency not in depends:
|
||||
depends = depends.copy()
|
||||
depends.append(currency)
|
||||
super().__init__(string=string, digits=digits, help=help,
|
||||
required=required, readonly=readonly, domain=domain, states=states,
|
||||
select=select, on_change=on_change, on_change_with=on_change_with,
|
||||
depends=depends, context=context, loading=loading)
|
||||
self.currency = currency
|
||||
|
||||
def definition(self, model, language):
|
||||
definition = super().definition(model, language)
|
||||
definition['symbol'] = self.currency
|
||||
definition['monetary'] = True
|
||||
return definition
|
||||
Reference in New Issue
Block a user