trytondo-account_co_co/account.py

64 lines
2.1 KiB
Python
Raw Normal View History

from trytond.pool import Pool, PoolMeta
from trytond.model.exceptions import AccessError
from trytond.i18n import gettext
__all__ = ['Account','Move','Line']
class Account(metaclass=PoolMeta):
__name__ = 'account.account'
@classmethod
def __setup__(cls):
super(Account, cls).__setup__()
cls.party_required.domain = [()]
cls.party_required.states = {}
class Move(metaclass=PoolMeta):
__name__ = 'account.move'
@classmethod
def create(cls, vlist):
pool = Pool()
Sequence = pool.get('ir.sequence')
Journal = pool.get('account.journal')
Account_Configuration = pool.get('account.configuration')
configuration = Account_Configuration(1)
draft_default = configuration.default_draft_sequence
vlist = [x.copy() for x in vlist]
for vals in vlist:
if not vals.get('number'):
journal_id = (vals.get('journal')
or Transaction().context.get('journal'))
if journal_id:
journal = Journal(journal_id)
if journal.sequence:
vals['number'] = Sequence.get_id(draft_default.id)
moves = super(Move, cls).create(vlist)
cls.validate_move(moves)
return moves
class Line(metaclass=PoolMeta):
__name__ = 'account.move.line'
@classmethod
def __setup__(cls):
super(Line, cls).__setup__()
cls.party.states = {}
def check_account(self):
if not self.account.type or self.account.closed:
raise AccessError(
gettext('account.msg_line_closed_account',
account=self.account.rec_name))
if self.account.party_required:
if bool(self.party) != bool(self.account.party_required):
error = 'party_set' if self.party else 'party_required'
raise AccessError(
gettext('account.msg_line_%s' % error,
account=self.account.rec_name,
line=self.rec_name))