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),