konfig: kassenbuch-default für buchungswizard
buchungswizard: ok + test
This commit is contained in:
parent
326d87f758
commit
953bf248a4
8 changed files with 377 additions and 12 deletions
|
@ -8,10 +8,12 @@ from trytond.wizard import Wizard, StateView, StateTransition, Button
|
|||
from trytond.i18n import gettext
|
||||
from trytond.pool import Pool
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pyson import Eval
|
||||
from trytond.pyson import Eval, Bool, If, And
|
||||
from decimal import Decimal
|
||||
from .line import sel_bookingtype
|
||||
|
||||
sel_booktypewiz = [x for x in sel_bookingtype if not x[0] in ['spin', 'spout']]
|
||||
|
||||
|
||||
class EnterBookingStart(ModelView):
|
||||
'Enter Booking'
|
||||
|
@ -23,6 +25,9 @@ class EnterBookingStart(ModelView):
|
|||
cashbooks = fields.One2Many(string='Cashbooks', field=None,
|
||||
model_name='cashbook.book', readonly=True,
|
||||
states={'invisible': True})
|
||||
owner_cashbook = fields.Function(fields.Many2One(string='Owner', readonly=True,
|
||||
states={'invisible': True}, model_name='res.user'),
|
||||
'on_change_with_owner_cashbook')
|
||||
balance = fields.Numeric(string='Balance', readonly=True,
|
||||
digits=(16, Eval('currency_digits', 2)),
|
||||
depends=['currency_digits'])
|
||||
|
@ -33,15 +38,55 @@ class EnterBookingStart(ModelView):
|
|||
readonly=True, states={'invisible': True}),
|
||||
'on_change_with_currency_digits')
|
||||
bookingtype = fields.Selection(string='Type', required=True,
|
||||
selection=sel_bookingtype)
|
||||
selection=sel_booktypewiz)
|
||||
amount = fields.Numeric(string='Amount',
|
||||
depends=['currency_digits', 'bookingtype'],
|
||||
digits=(16, Eval('currency_digits', 2)),
|
||||
domain=[('amount', '>=', Decimal('0.0'))],
|
||||
digits=(16, Eval('currency_digits', 2)), required=True,
|
||||
domain=[('amount', '>=', Decimal('0.0'))])
|
||||
description = fields.Text(string='Description')
|
||||
category = fields.Many2One(string='Category',
|
||||
model_name='cashbook.category', depends=['bookingtype'],
|
||||
states={
|
||||
'readonly': Eval('bookingtype', '').in_(['spin', 'spout']),
|
||||
'required': Eval('bookingtype', '').in_(['in', 'out', 'mvin', 'mvout']),
|
||||
})
|
||||
'readonly': Bool(Eval('bookingtype')) == False,
|
||||
'required': Eval('bookingtype', '').in_(['in', 'out']),
|
||||
'invisible': ~Eval('bookingtype', '').in_(['in', 'out']),
|
||||
},
|
||||
domain=[
|
||||
If(
|
||||
Eval('bookingtype', '').in_(['in', 'mvin']),
|
||||
('cattype', '=', 'in'),
|
||||
('cattype', '=', 'out'),
|
||||
)])
|
||||
|
||||
# party or cashbook as counterpart
|
||||
booktransf = fields.Many2One(string='Source/Dest',
|
||||
model_name='cashbook.book',
|
||||
domain=[
|
||||
('owner.id', '=', Eval('owner_cashbook', -1)),
|
||||
('id', '!=', Eval('cashbook', -1)),
|
||||
],
|
||||
states={
|
||||
'invisible': ~Eval('bookingtype', '').in_(['mvin', 'mvout']),
|
||||
'required': Eval('bookingtype', '').in_(['mvin', 'mvout']),
|
||||
}, depends=['bookingtype', 'owner_cashbook', 'cashbook'])
|
||||
party = fields.Many2One(string='Party', model_name='party.party',
|
||||
states={
|
||||
'invisible': ~Eval('bookingtype', '').in_(['in', 'out']),
|
||||
}, depends=['bookingtype'])
|
||||
|
||||
@fields.depends('bookingtype', 'category')
|
||||
def on_change_bookingtype(self):
|
||||
""" clear category if not valid type
|
||||
"""
|
||||
types = {
|
||||
'in': ['in', 'mvin'],
|
||||
'out': ['out', 'mvout'],
|
||||
}
|
||||
|
||||
if self.bookingtype:
|
||||
if self.category:
|
||||
if not self.bookingtype in types.get(self.category.cattype, ''):
|
||||
self.category = None
|
||||
|
||||
@fields.depends('cashbook', 'balance')
|
||||
def on_change_cashbook(self):
|
||||
|
@ -52,6 +97,13 @@ class EnterBookingStart(ModelView):
|
|||
else :
|
||||
self.balance = None
|
||||
|
||||
@fields.depends('cashbook', '_parent_cashbook.owner')
|
||||
def on_change_with_owner_cashbook(self, name=None):
|
||||
""" get current owner
|
||||
"""
|
||||
if self.cashbook:
|
||||
return self.cashbook.owner.id
|
||||
|
||||
@fields.depends('cashbook', '_parent_cashbook.currency')
|
||||
def on_change_with_currency(self, name=None):
|
||||
""" digits
|
||||
|
@ -79,28 +131,64 @@ class EnterBookingWizard(Wizard):
|
|||
start = StateView('cashbook.enterbooking.start',
|
||||
'cashbook.enterbooking_start_form', [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Save', 'save_', 'tryton-add', default=True),
|
||||
Button('Save', 'save_', 'tryton-save', default=True),
|
||||
Button('Save & Next', 'savenext_', 'tryton-forward'),
|
||||
])
|
||||
save_ = StateTransition()
|
||||
savenext_ = StateTransition()
|
||||
|
||||
def default_start(self, fields):
|
||||
""" setup form
|
||||
"""
|
||||
pool = Pool()
|
||||
Cashbook = pool.get('cashbook.book')
|
||||
Configuration = pool.get('cashbook.configuration')
|
||||
|
||||
cfg1 = Configuration.get_singleton()
|
||||
|
||||
result = {
|
||||
'cashbooks': [x.id for x in Cashbook.search([
|
||||
('state', '=', 'open'),
|
||||
('owner.id', '=', Transaction().user),
|
||||
])],
|
||||
'bookingtype': 'out',
|
||||
'bookingtype': getattr(self.start, 'bookingtype', 'out'),
|
||||
'cashbook': getattr(getattr(cfg1, 'defbook', None), 'id', None),
|
||||
'amount': None,
|
||||
'party': None,
|
||||
'booktransf': None,
|
||||
'description': None,
|
||||
'category': None,
|
||||
}
|
||||
return result
|
||||
|
||||
def transition_save(self):
|
||||
def transition_save_(self):
|
||||
""" store booking
|
||||
"""
|
||||
pool = Pool()
|
||||
Line = pool.get('cashbook.line')
|
||||
IrDate = pool.get('ir.date')
|
||||
|
||||
query = {
|
||||
'cashbook': self.start.cashbook.id,
|
||||
'description': self.start.description,
|
||||
'date': IrDate.today(),
|
||||
'bookingtype': self.start.bookingtype,
|
||||
'amount': self.start.amount,
|
||||
}
|
||||
|
||||
if self.start.bookingtype in ['in', 'out']:
|
||||
query['category'] = self.start.category.id
|
||||
query['party'] = getattr(self.start.party, 'id', None)
|
||||
elif self.start.bookingtype in ['mvin', 'mvout']:
|
||||
query['booktransf'] = self.start.booktransf.id
|
||||
|
||||
Line.create([query])
|
||||
return 'end'
|
||||
|
||||
def transition_savenext_(self):
|
||||
""" store booking & restart
|
||||
"""
|
||||
self.transition_save_()
|
||||
return 'start'
|
||||
|
||||
# end EnterBookingWizard
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue