bok, line, type, line-open-wizard, context
This commit is contained in:
parent
a9f3eb12b4
commit
ba442b726e
23 changed files with 974 additions and 8 deletions
179
line.py
Normal file
179
line.py
Normal file
|
@ -0,0 +1,179 @@
|
|||
# -*- 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, Workflow, fields
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Eval, If
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
sel_linetype = [
|
||||
('edit', 'Edit'),
|
||||
('check', 'Checked'),
|
||||
('done', 'Done'),
|
||||
]
|
||||
|
||||
|
||||
STATES = {
|
||||
'readonly': Eval('state', '') != 'edit',
|
||||
}
|
||||
DEPENDS=['state']
|
||||
|
||||
|
||||
class LineContext(ModelView):
|
||||
'Line Context'
|
||||
__name__ = 'cashbook.line.context'
|
||||
|
||||
account = fields.Many2One(string='Account', required=True,
|
||||
model_name='cashbook.book',
|
||||
states={
|
||||
'readonly': Eval('num_account', 0) < 2,
|
||||
}, depends=['num_account'])
|
||||
date_from = fields.Date(string='Start Date', depends=['date_to'],
|
||||
domain=[
|
||||
If(Eval('date_to') & Eval('date_from'),
|
||||
('date_from', '<=', Eval('date_to')),
|
||||
()),
|
||||
])
|
||||
date_to = fields.Date(string='End Date', depends=['date_from'],
|
||||
domain=[
|
||||
If(Eval('date_to') & Eval('date_from'),
|
||||
('date_from', '<=', Eval('date_to')),
|
||||
()),
|
||||
])
|
||||
checked = fields.Boolean(string='Checked',
|
||||
help='Show account lines in Checked-state.')
|
||||
done = fields.Boolean(string='Done',
|
||||
help='Show account lines in Done-state.')
|
||||
num_account = fields.Function(fields.Integer(string='Number of Accounts',
|
||||
readonly=True, states={'invisible': True}),
|
||||
'on_change_with_num_account')
|
||||
|
||||
@classmethod
|
||||
def default_account(cls):
|
||||
""" get default from context
|
||||
"""
|
||||
context = Transaction().context
|
||||
return context.get('account', None)
|
||||
|
||||
@classmethod
|
||||
def default_date_from(cls):
|
||||
""" get default from context
|
||||
"""
|
||||
context = Transaction().context
|
||||
return context.get('date_from', None)
|
||||
|
||||
@classmethod
|
||||
def default_date_to(cls):
|
||||
""" get default from context
|
||||
"""
|
||||
context = Transaction().context
|
||||
return context.get('date_to', None)
|
||||
|
||||
@classmethod
|
||||
def default_checked(cls):
|
||||
""" get default from context
|
||||
"""
|
||||
context = Transaction().context
|
||||
return context.get('checked', False)
|
||||
|
||||
@classmethod
|
||||
def default_done(cls):
|
||||
""" get default from context
|
||||
"""
|
||||
context = Transaction().context
|
||||
return context.get('done', False)
|
||||
|
||||
def on_change_with_num_account(self, name=None):
|
||||
""" get number of accessible accounts,
|
||||
depends on user-permissions
|
||||
"""
|
||||
CashBook = Pool().get('cashbook.book')
|
||||
return CashBook.search_count([])
|
||||
|
||||
# end LineContext
|
||||
|
||||
|
||||
class Line(Workflow, ModelSQL, ModelView):
|
||||
'Account Line'
|
||||
__name__ = 'cashbook.line'
|
||||
|
||||
account = fields.Many2One(string='Account', required=True, select=True,
|
||||
model_name='cashbook.book', ondelete='CASCADE', readonly=True)
|
||||
date = fields.Date(string='Date', required=True, select=True,
|
||||
states=STATES, depends=DEPENDS)
|
||||
description = fields.Char(string='Description',
|
||||
states=STATES, depends=DEPENDS)
|
||||
state = fields.Selection(string='State', required=True, readonly=True,
|
||||
select=True, selection=sel_linetype)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Line, cls).__setup__()
|
||||
cls._order.insert(0, ('date', 'ASC'))
|
||||
cls._transitions |= set((
|
||||
('edit', 'check'),
|
||||
('check', 'done'),
|
||||
('check', 'edit'),
|
||||
))
|
||||
cls._buttons.update({
|
||||
'wfedit': {
|
||||
'invisible': Eval('state', '') != 'check',
|
||||
'depends': ['state'],
|
||||
},
|
||||
'wfcheck': {
|
||||
'invisible': Eval('state') != 'edit',
|
||||
'depends': ['state'],
|
||||
},
|
||||
'wfdone': {
|
||||
'invisible': Eval('state') != 'check',
|
||||
'depends': ['state'],
|
||||
},
|
||||
})
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('edit')
|
||||
def wfedit(cls, lines):
|
||||
""" edit line
|
||||
"""
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('check')
|
||||
def wfcheck(cls, lines):
|
||||
""" line is checked
|
||||
"""
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('done')
|
||||
def wfdone(cls, lines):
|
||||
""" line is done
|
||||
"""
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def default_state(cls):
|
||||
""" default: edit
|
||||
"""
|
||||
return 'edit'
|
||||
|
||||
@classmethod
|
||||
def default_date(cls):
|
||||
""" default: today
|
||||
"""
|
||||
IrDate = Pool().get('ir.date')
|
||||
return IrDate.today()
|
||||
|
||||
@classmethod
|
||||
def default_account(cls):
|
||||
""" get default from context
|
||||
"""
|
||||
context = Transaction().context
|
||||
return context.get('account', None)
|
||||
|
||||
# end Line
|
Loading…
Add table
Add a link
Reference in a new issue