63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
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))
|