diff --git a/message.xml b/message.xml index a27236b..d4ec2a8 100644 --- a/message.xml +++ b/message.xml @@ -61,7 +61,10 @@ this repository contains the full copyright notices and license terms. --> Missing account debit or credit for statement journal "%(s)s" - Missing code for product. + Missing code for product + + + There is previous statement current open. Please close it! diff --git a/statement.py b/statement.py index f1e265a..e1c4683 100755 --- a/statement.py +++ b/statement.py @@ -4,6 +4,7 @@ from datetime import date, datetime from decimal import Decimal from dateutil import tz + from trytond.model import fields, ModelView, ModelSQL, Workflow from trytond.pool import Pool, PoolMeta from trytond.transaction import Transaction @@ -11,6 +12,7 @@ from trytond.wizard import Button, StateTransition, StateView, Wizard from trytond.pyson import Eval from trytond.i18n import gettext from .exceptions import StatementValidationError +from trytond.exceptions import UserError _ZERO = Decimal("0.0") @@ -335,9 +337,9 @@ class OpenStatement(Wizard): start = StateView( 'open.statement.start', 'sale_pos.open_statement_start', [ - Button('Cancel', 'end', 'tryton-cancel'), - Button('Ok', 'create_', 'tryton-ok', default=True), - ]) + Button('Cancel', 'end', 'tryton-cancel'), + Button('Ok', 'create_', 'tryton-ok', default=True), + ]) create_ = StateTransition() done = StateView( 'open.statement.done', @@ -352,7 +354,16 @@ class OpenStatement(Wizard): def default_done(self, fields): return { 'result': self.result, - } + } + + def _check_previous(self, sale_device, today): + pool = Pool() + Statement = pool.get('account.statement') + res = Statement.search_read([ + ('sale_device', '=', sale_device.id), + ('state', '=', 'draft'), + ], fields_names=['id']) + return res def transition_create_(self): pool = Pool() @@ -368,6 +379,15 @@ class OpenStatement(Wizard): user = Transaction().user user = User(user) device = user.sale_device + time_zone = company.timezone + now_ = datetime.now(tz.gettz(time_zone)) + today = date(now_.year, now_.month, now_.day) + previous = self._check_previous(device, today) + print("res............", previous) + if previous: + raise UserError( + gettext('sale_pos.msg_previous_statement_open')) + return 'end' if device: journals = [j.id for j in device.journals] statements = Statement.search([ @@ -376,14 +396,13 @@ class OpenStatement(Wizard): ], order=[ ('date', 'ASC'), ]) - journals_of_draft_statements = [s.journal for s in statements - if s.state == 'draft'] + journals_of_draft_statements = [ + s.journal for s in statements if s.state == 'draft' + ] vlist = [] result = '' - time_zone = company.timezone - now_ = datetime.now(tz.gettz(time_zone)) - today = date(now_.year, now_.month, now_.day) + for journal in device.journals: statements_today = Statement.search([ ('journal', '=', journal.id),