82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
from trytond.model import ModelSQL, ModelView, fields
|
|
from trytond.pool import Pool, PoolMeta
|
|
from trytond.pyson import Eval
|
|
|
|
__all__ = [
|
|
'Configuration',
|
|
'ConfigurationDefaultAccount',
|
|
'PhysicalTradeIFRS',
|
|
]
|
|
__metaclass__ = PoolMeta
|
|
|
|
|
|
class Configuration(metaclass=PoolMeta):
|
|
__name__ = 'account.configuration'
|
|
|
|
default_sale_padding_account = fields.MultiValue(fields.Many2One(
|
|
'account.account', "Default Sale Padding",
|
|
domain=[
|
|
('closed', '!=', True),
|
|
('type.revenue', '=', True),
|
|
('company', '=', Eval('context', {}).get('company', -1)),
|
|
]))
|
|
default_accrual_padding_account = fields.MultiValue(fields.Many2One(
|
|
'account.account', "Default Accrual Padding",
|
|
domain=[
|
|
('closed', '!=', True),
|
|
('type.statement', '=', 'balance'),
|
|
('company', '=', Eval('context', {}).get('company', -1)),
|
|
]))
|
|
|
|
@classmethod
|
|
def multivalue_model(cls, field):
|
|
pool = Pool()
|
|
if field in {
|
|
'default_sale_padding_account',
|
|
'default_accrual_padding_account',
|
|
}:
|
|
return pool.get('account.configuration.default_account')
|
|
return super().multivalue_model(field)
|
|
|
|
|
|
class ConfigurationDefaultAccount(metaclass=PoolMeta):
|
|
__name__ = 'account.configuration.default_account'
|
|
|
|
default_sale_padding_account = fields.Many2One(
|
|
'account.account', "Default Sale Padding",
|
|
domain=[
|
|
('closed', '!=', True),
|
|
('type.revenue', '=', True),
|
|
('company', '=', Eval('company', -1)),
|
|
])
|
|
default_accrual_padding_account = fields.Many2One(
|
|
'account.account', "Default Accrual Padding",
|
|
domain=[
|
|
('closed', '!=', True),
|
|
('type.statement', '=', 'balance'),
|
|
('company', '=', Eval('company', -1)),
|
|
])
|
|
|
|
|
|
class PhysicalTradeIFRS(ModelSQL, ModelView):
|
|
'Physical Trade - IFRS Adjustment'
|
|
__name__ = 'account.physical_trade_ifrs'
|
|
|
|
date = fields.Date('Date', required=True)
|
|
comment = fields.Text('Comment', required=True)
|
|
currency = fields.Many2One('currency.currency', 'Currency', required=True)
|
|
currency_digits = fields.Function(
|
|
fields.Integer('Currency Digits'),
|
|
'on_change_with_currency_digits')
|
|
amount = fields.Numeric(
|
|
'Amount',
|
|
digits=(16, Eval('currency_digits', 2)),
|
|
depends=['currency_digits'],
|
|
required=True)
|
|
|
|
@fields.depends('currency')
|
|
def on_change_with_currency_digits(self, name=None):
|
|
if self.currency:
|
|
return self.currency.digits
|
|
return 2
|