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