Files
tradon/modules/account_deposit/account.py
2026-03-14 09:42:12 +00:00

65 lines
2.0 KiB
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 trytond.model import fields
from trytond.pool import PoolMeta
from trytond.pyson import Bool, Eval, If
def AccountTypeMixin(template=False):
class Mixin:
__slots__ = ()
deposit = fields.Boolean(
"Deposit",
domain=[
If(~Eval('statement').in_(['off-balance', 'balance']),
('deposit', '=', False), ()),
],
states={
'invisible': ~Eval('statement').in_(
['off-balance', 'balance']),
})
if not template:
for fname in dir(Mixin):
field = getattr(Mixin, fname)
if not isinstance(field, fields.Field):
continue
field.states['readonly'] = (
Bool(Eval('template', -1)) & ~Eval('template_override', False))
return Mixin
class AccountTypeTemplate(AccountTypeMixin(template=True), metaclass=PoolMeta):
__name__ = 'account.account.type.template'
def _get_type_value(self, type=None):
values = super()._get_type_value(type=type)
if not type or type.deposit != self.deposit:
values['deposit'] = self.deposit
return values
class AccountType(AccountTypeMixin(), metaclass=PoolMeta):
__name__ = 'account.account.type'
class Reconcile(metaclass=PoolMeta):
__name__ = 'account.reconcile'
def get_currencies(self, account, party, currency=None, _balanced=False):
if account.type.deposit:
_balanced = True
return super().get_currencies(
account, party, currency=None, _balanced=_balanced)
class Payment(metaclass=PoolMeta):
__name__ = 'account.payment'
@classmethod
def _account_type_domain(cls):
return ['OR',
super()._account_type_domain(),
('type.deposit', '=', True),
]