cashbook/wizard_openline.py

127 lines
3.9 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
# This file is part of the cashbook-module from m-ds for Tryton.
# The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import PYSONEncoder
2022-08-09 13:08:41 +00:00
from trytond.wizard import Wizard, StateView, StateTransition, StateAction, Button
from trytond.i18n import gettext
from trytond.pool import Pool
2022-08-09 13:08:41 +00:00
from trytond.pyson import Eval
from trytond.transaction import Transaction
class OpenCashBookStart(ModelView):
'Open Cashbook'
2022-08-08 12:31:42 +00:00
__name__ = 'cashbook.open_lines.start'
2022-08-08 12:31:42 +00:00
cashbook = fields.Many2One(string='Cashbook', model_name='cashbook.book',
required=True)
2022-08-08 12:31:42 +00:00
checked = fields.Boolean(string='Checked', help="Show cashbook lines in Checked-state.")
done = fields.Boolean(string='Done', help="Show cashbook lines in Done-state")
date_from = fields.Date(string='Start Date')
date_to = fields.Date(string='End Date')
@classmethod
def default_checked(cls):
return True
@classmethod
def default_done(cls):
return False
# end OpenCashBookStart
class OpenCashBook(Wizard):
'Open Cashbook'
2022-08-08 12:31:42 +00:00
__name__ = 'cashbook.open_lines'
2022-08-09 13:08:41 +00:00
start_state = 'check'
check = StateTransition()
askuser = StateView('cashbook.open_lines.start',
2022-08-08 12:31:42 +00:00
'cashbook.open_lines_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('Open', 'open_', 'tryton-ok', default=True),
])
open_ = StateAction('cashbook.act_line_view')
2022-08-09 13:08:41 +00:00
def transition_check(self):
""" dont ask and open cashbook if user has 1x only
"""
Book = Pool().get('cashbook.book')
2022-08-09 13:08:41 +00:00
with Transaction().set_context({
'_check_access': True,
}):
books = Book.search([])
if len(books) == 1:
return 'open_'
return 'askuser'
2022-08-09 13:08:41 +00:00
def default_askuser(self, fields):
""" setup form
"""
Configuration = Pool().get('cashbook.configuration')
cfg1 = Configuration.get_singleton()
result = {
'date_from': getattr(cfg1, 'date_from', None),
'date_to': getattr(cfg1, 'date_to', None),
'checked': getattr(cfg1, 'checked', True),
'done': getattr(cfg1, 'done', False),
}
return result
def do_open_(self, action):
2022-08-09 13:08:41 +00:00
""" open view, use data from dialog
"""
pool = Pool()
Book = pool.get('cashbook.book')
Configuration = pool.get('cashbook.configuration')
cfg1 = Configuration.get_singleton()
if cfg1 is None:
cfg1 = Configuration()
cfg1.save()
2022-08-09 13:08:41 +00:00
book = getattr(self.askuser, 'cashbook', None)
if book is None:
with Transaction().set_context({
'_check_access': True,
}):
books = Book.search([])
if len(books) > 0:
book = books[0]
date_from = getattr(self.askuser, 'date_from', None)
date_to = getattr(self.askuser, 'date_to', None)
checked = getattr(self.askuser, 'checked', True)
done = getattr(self.askuser, 'done', False)
# save settings
cfg1.date_from = date_from
cfg1.date_to = date_to
cfg1.checked = checked
cfg1.done = done
cfg1.save()
action['pyson_context'] = PYSONEncoder().encode({
2022-08-09 13:08:41 +00:00
'cashbook': getattr(book, 'id', None),
'date_from': date_from,
'date_to': date_to,
'checked': checked,
'done': done,
})
2022-08-08 12:31:42 +00:00
action['name'] = '%(name)s: %(cashbook)s' % {
'name': gettext('cashbook.msg_name_cashbook'),
2022-08-09 13:08:41 +00:00
'cashbook': getattr(book, 'rec_name', '-/-'),
}
return action, {}
def transition_open_(self):
return 'end'
# end OpenCashBook