tabelle 'reconciliation' neu
This commit is contained in:
parent
ae5303658e
commit
01825cc09c
13 changed files with 571 additions and 36 deletions
|
@ -10,6 +10,7 @@ from .line import Line, LineContext
|
||||||
from .wizard_openline import OpenCashBook, OpenCashBookStart
|
from .wizard_openline import OpenCashBook, OpenCashBookStart
|
||||||
from .configuration import Configuration, UserConfiguration
|
from .configuration import Configuration, UserConfiguration
|
||||||
from .category import Category
|
from .category import Category
|
||||||
|
from .reconciliation import Reconciliation
|
||||||
|
|
||||||
def register():
|
def register():
|
||||||
Pool.register(
|
Pool.register(
|
||||||
|
@ -20,6 +21,7 @@ def register():
|
||||||
Book,
|
Book,
|
||||||
LineContext,
|
LineContext,
|
||||||
Line,
|
Line,
|
||||||
|
Reconciliation,
|
||||||
OpenCashBookStart,
|
OpenCashBookStart,
|
||||||
module='cashbook', type_='model')
|
module='cashbook', type_='model')
|
||||||
Pool.register(
|
Pool.register(
|
||||||
|
|
12
book.py
12
book.py
|
@ -39,16 +39,22 @@ class Book(Workflow, ModelSQL, ModelView):
|
||||||
model_name='cashbook.type', ondelete='RESTRICT',
|
model_name='cashbook.type', ondelete='RESTRICT',
|
||||||
states=STATES, depends=DEPENDS)
|
states=STATES, depends=DEPENDS)
|
||||||
owner = fields.Many2One(string='Owner', required=True, select=True,
|
owner = fields.Many2One(string='Owner', required=True, select=True,
|
||||||
model_name='res.user', ondelete='SET NULL')
|
model_name='res.user', ondelete='SET NULL',
|
||||||
|
states=STATES, depends=DEPENDS)
|
||||||
reviewer = fields.Many2One(string='Reviewer', select=True,
|
reviewer = fields.Many2One(string='Reviewer', select=True,
|
||||||
help='Group of users who have write access to the cashbook.',
|
help='Group of users who have write access to the cashbook.',
|
||||||
model_name='res.group', ondelete='SET NULL')
|
model_name='res.group', ondelete='SET NULL',
|
||||||
|
states=STATES, depends=DEPENDS)
|
||||||
observer = fields.Many2One(string='Observer', select=True,
|
observer = fields.Many2One(string='Observer', select=True,
|
||||||
help='Group of users who have read-only access to the cashbook.',
|
help='Group of users who have read-only access to the cashbook.',
|
||||||
model_name='res.group', ondelete='SET NULL')
|
model_name='res.group', ondelete='SET NULL',
|
||||||
|
states=STATES, depends=DEPENDS)
|
||||||
lines = fields.One2Many(string='Lines', field='cashbook',
|
lines = fields.One2Many(string='Lines', field='cashbook',
|
||||||
model_name='cashbook.line',
|
model_name='cashbook.line',
|
||||||
states=STATES, depends=DEPENDS)
|
states=STATES, depends=DEPENDS)
|
||||||
|
reconciliations = fields.One2Many(string='Reconciliations',
|
||||||
|
field='cashbook', model_name='cashbook.recon',
|
||||||
|
states=STATES, depends=DEPENDS)
|
||||||
account = fields.Many2One(string='Account', select=True,
|
account = fields.Many2One(string='Account', select=True,
|
||||||
model_name='account.account', ondelete='RESTRICT',
|
model_name='account.account', ondelete='RESTRICT',
|
||||||
states=STATES, depends=DEPENDS)
|
states=STATES, depends=DEPENDS)
|
||||||
|
|
3
line.py
3
line.py
|
@ -77,6 +77,8 @@ class Line(Workflow, ModelSQL, ModelView):
|
||||||
required=True, readonly=True, depends=['currency_digits'])
|
required=True, readonly=True, depends=['currency_digits'])
|
||||||
credit = fields.Numeric(string='Credit', digits=(16, Eval('currency_digits', 2)),
|
credit = fields.Numeric(string='Credit', digits=(16, Eval('currency_digits', 2)),
|
||||||
required=True, readonly=True, depends=['currency_digits'])
|
required=True, readonly=True, depends=['currency_digits'])
|
||||||
|
reconciliation = fields.Many2One(string='Reconciliation', readonly=True,
|
||||||
|
model_name='cashbook.recon', ondelete='SET NULL')
|
||||||
|
|
||||||
balance = fields.Function(fields.Numeric(string='Balance',
|
balance = fields.Function(fields.Numeric(string='Balance',
|
||||||
digits=(16, Eval('currency_digits', 2)),
|
digits=(16, Eval('currency_digits', 2)),
|
||||||
|
@ -494,7 +496,6 @@ class LineContext(ModelView):
|
||||||
""" get number of accessible cashbooks,
|
""" get number of accessible cashbooks,
|
||||||
depends on user-permissions
|
depends on user-permissions
|
||||||
"""
|
"""
|
||||||
print('-- on_change_with_num_cashbook:', Transaction().context)
|
|
||||||
LineContext = Pool().get('cashbook.line.context')
|
LineContext = Pool().get('cashbook.line.context')
|
||||||
return LineContext.default_num_cashbook()
|
return LineContext.default_num_cashbook()
|
||||||
|
|
||||||
|
|
114
locale/de.po
114
locale/de.po
|
@ -110,6 +110,18 @@ msgctxt "model:ir.rule.group,name:rg_book_companies"
|
||||||
msgid "User in companies"
|
msgid "User in companies"
|
||||||
msgstr "Benutzer im Unternehmen"
|
msgstr "Benutzer im Unternehmen"
|
||||||
|
|
||||||
|
msgctxt "model:ir.rule.group,name:rg_recon_companies"
|
||||||
|
msgid "User in companies"
|
||||||
|
msgstr "Benutzer im Unternehmen"
|
||||||
|
|
||||||
|
msgctxt "model:ir.rule.group,name:rg_recon_write_adm"
|
||||||
|
msgid "Administrators: Reconciliation read/write"
|
||||||
|
msgstr "Administratoren: Abstimmung bearbeiten"
|
||||||
|
|
||||||
|
msgctxt "model:ir.rule.group,name:rg_recon_write"
|
||||||
|
msgid "Owners and reviewers: Reconciliation write"
|
||||||
|
msgstr "Eigentümer und Bearbeiter: Abstimmung bearbeiten"
|
||||||
|
|
||||||
|
|
||||||
##############
|
##############
|
||||||
# ir.ui.menu #
|
# ir.ui.menu #
|
||||||
|
@ -126,7 +138,7 @@ msgctxt "model:ir.ui.menu,name:menu_typeconfig"
|
||||||
msgid "Cashbook Type"
|
msgid "Cashbook Type"
|
||||||
msgstr "Kassenbuchtyp"
|
msgstr "Kassenbuchtyp"
|
||||||
|
|
||||||
msgctxt "model:ir.ui.menu,name:menu_bookconfig"
|
msgctxt "model:ir.ui.menu,name:menu_booklist"
|
||||||
msgid "Cashbook"
|
msgid "Cashbook"
|
||||||
msgstr "Kassenbuch"
|
msgstr "Kassenbuch"
|
||||||
|
|
||||||
|
@ -210,6 +222,18 @@ msgctxt "model:ir.model.button,string:book_wfarchive_button"
|
||||||
msgid "Archive"
|
msgid "Archive"
|
||||||
msgstr "Archiv"
|
msgstr "Archiv"
|
||||||
|
|
||||||
|
msgctxt "model:ir.model.button,string:recon_wfedit_button"
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr "Bearbeiten"
|
||||||
|
|
||||||
|
msgctxt "model:ir.model.button,string:recon_wfcheck_button"
|
||||||
|
msgid "Check"
|
||||||
|
msgstr "Prüfen"
|
||||||
|
|
||||||
|
msgctxt "model:ir.model.button,string:recon_wfdone_button"
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Fertig"
|
||||||
|
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# cashbook.book #
|
# cashbook.book #
|
||||||
|
@ -222,6 +246,10 @@ msgctxt "view:cashbook.book:"
|
||||||
msgid "Owner and Authorizeds"
|
msgid "Owner and Authorizeds"
|
||||||
msgstr "Eigentümer und Autorisierte"
|
msgstr "Eigentümer und Autorisierte"
|
||||||
|
|
||||||
|
msgctxt "view:cashbook.book:"
|
||||||
|
msgid "Reconciliations"
|
||||||
|
msgstr "Abstimmungen"
|
||||||
|
|
||||||
msgctxt "field:cashbook.book,name:"
|
msgctxt "field:cashbook.book,name:"
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
@ -282,6 +310,18 @@ msgctxt "field:cashbook.book,start_balance:"
|
||||||
msgid "Initial Amount"
|
msgid "Initial Amount"
|
||||||
msgstr "Anfangsbetrag"
|
msgstr "Anfangsbetrag"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.book,balance:"
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr "Saldo"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.book,reconciliations:"
|
||||||
|
msgid "Reconciliations"
|
||||||
|
msgstr "Abstimmungen"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.book,lines:"
|
||||||
|
msgid "Lines"
|
||||||
|
msgstr "Zeilen"
|
||||||
|
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# cashbook.line #
|
# cashbook.line #
|
||||||
|
@ -406,6 +446,10 @@ msgctxt "help:cashbook.line,balance:"
|
||||||
msgid "Balance of the cash book up to the current line, if the default sorting applies."
|
msgid "Balance of the cash book up to the current line, if the default sorting applies."
|
||||||
msgstr "Saldo des Kassenbuchs bis zur aktuellen Zeile, sofern die Standardsortierung gilt."
|
msgstr "Saldo des Kassenbuchs bis zur aktuellen Zeile, sofern die Standardsortierung gilt."
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.line,reconciliation:"
|
||||||
|
msgid "Reconciliation"
|
||||||
|
msgstr "Abstimmung"
|
||||||
|
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# cashbook.type #
|
# cashbook.type #
|
||||||
|
@ -689,3 +733,71 @@ msgstr "Kategorie: Kontonummer zeigen"
|
||||||
msgctxt "help:cashbook.configuration_user,cataccno:"
|
msgctxt "help:cashbook.configuration_user,cataccno:"
|
||||||
msgid "Shows the number of the linked account in the name of a category."
|
msgid "Shows the number of the linked account in the name of a category."
|
||||||
msgstr "Zeigt im Namen einer Kategorie die Nummer des verknüpften Kontos."
|
msgstr "Zeigt im Namen einer Kategorie die Nummer des verknüpften Kontos."
|
||||||
|
|
||||||
|
|
||||||
|
##################
|
||||||
|
# cashbook.recon #
|
||||||
|
##################
|
||||||
|
msgctxt "model:cashbook.recon,name:"
|
||||||
|
msgid "Cashbook Reconciliation"
|
||||||
|
msgstr "Kassenbuchabstimmung"
|
||||||
|
|
||||||
|
msgctxt "view:cashbook.recon:"
|
||||||
|
msgid "Reconciliation period"
|
||||||
|
msgstr "Abstimmungszeitraum"
|
||||||
|
|
||||||
|
msgctxt "view:cashbook.recon:"
|
||||||
|
msgid "State"
|
||||||
|
msgstr "Status"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.recon,cashbook:"
|
||||||
|
msgid "Cashbook"
|
||||||
|
msgstr "Kassenbuch"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.recon,date:"
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "Datum"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.recon,date_from:"
|
||||||
|
msgid "Start Date"
|
||||||
|
msgstr "Anfangsdatum"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.recon,date_to:"
|
||||||
|
msgid "End Date"
|
||||||
|
msgstr "Endedatum"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.recon,state:"
|
||||||
|
msgid "State"
|
||||||
|
msgstr "Status"
|
||||||
|
|
||||||
|
msgctxt "selection:cashbook.recon,state:"
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr "Bearbeiten"
|
||||||
|
|
||||||
|
msgctxt "selection:cashbook.recon,state:"
|
||||||
|
msgid "Check"
|
||||||
|
msgstr "Prüfen"
|
||||||
|
|
||||||
|
msgctxt "selection:cashbook.recon,state:"
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Fertig"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.recon,lines:"
|
||||||
|
msgid "Lines"
|
||||||
|
msgstr "Zeilen"
|
||||||
|
|
||||||
|
msgctxt "field:cashbook.recon,state_cashbook:"
|
||||||
|
msgid "State of Cashbook"
|
||||||
|
msgstr "Kassenbuchstatus"
|
||||||
|
|
||||||
|
msgctxt "selection:cashbook.recon,state_cashbook:"
|
||||||
|
msgid "Open"
|
||||||
|
msgstr "Geöffnet"
|
||||||
|
|
||||||
|
msgctxt "selection:cashbook.recon,state_cashbook:"
|
||||||
|
msgid "Closed"
|
||||||
|
msgstr "Geschlossen"
|
||||||
|
|
||||||
|
msgctxt "selection:cashbook.recon,state_cashbook:"
|
||||||
|
msgid "Archive"
|
||||||
|
msgstr "Archiv"
|
||||||
|
|
36
menu.xml
36
menu.xml
|
@ -30,19 +30,10 @@ full copyright notices and license terms. -->
|
||||||
<field name="group" ref="group_cashbook"/>
|
<field name="group" ref="group_cashbook"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- menu: /Cashbook/Configuration/Cashbook -->
|
|
||||||
<menuitem id="menu_bookconfig" action="act_book_view"
|
|
||||||
icon="tryton-list"
|
|
||||||
parent="menu_config" sequence="10"/>
|
|
||||||
<record model="ir.ui.menu-res.group" id="menu_bookconfig-group_admin">
|
|
||||||
<field name="menu" ref="menu_bookconfig"/>
|
|
||||||
<field name="group" ref="res.group_admin"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- menu: /Cashbook/Configuration/Types -->
|
<!-- menu: /Cashbook/Configuration/Types -->
|
||||||
<menuitem id="menu_typeconfig" action="act_type_view"
|
<menuitem id="menu_typeconfig" action="act_type_view"
|
||||||
icon="tryton-list"
|
icon="tryton-list"
|
||||||
parent="menu_config" sequence="20"/>
|
parent="menu_config" sequence="10"/>
|
||||||
<record model="ir.ui.menu-res.group" id="menu_typeconfig-group_admin">
|
<record model="ir.ui.menu-res.group" id="menu_typeconfig-group_admin">
|
||||||
<field name="menu" ref="menu_typeconfig"/>
|
<field name="menu" ref="menu_typeconfig"/>
|
||||||
<field name="group" ref="res.group_admin"/>
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
@ -51,7 +42,7 @@ full copyright notices and license terms. -->
|
||||||
<!-- menu: /Cashbook/Configuration/Category -->
|
<!-- menu: /Cashbook/Configuration/Category -->
|
||||||
<menuitem id="menu_category" action="act_category_tree"
|
<menuitem id="menu_category" action="act_category_tree"
|
||||||
icon="tryton-tree"
|
icon="tryton-tree"
|
||||||
parent="menu_config" sequence="30"/>
|
parent="menu_config" sequence="20"/>
|
||||||
<record model="ir.ui.menu-res.group" id="menu_category-group_admin">
|
<record model="ir.ui.menu-res.group" id="menu_category-group_admin">
|
||||||
<field name="menu" ref="menu_category"/>
|
<field name="menu" ref="menu_category"/>
|
||||||
<field name="group" ref="res.group_admin"/>
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
@ -59,7 +50,7 @@ full copyright notices and license terms. -->
|
||||||
<!-- menu: /Cashbook/Configuration/Category/Category -->
|
<!-- menu: /Cashbook/Configuration/Category/Category -->
|
||||||
<menuitem id="menu_category_list" action="act_category_list"
|
<menuitem id="menu_category_list" action="act_category_list"
|
||||||
icon="tryton-list"
|
icon="tryton-list"
|
||||||
parent="menu_category" sequence="30"/>
|
parent="menu_category" sequence="10"/>
|
||||||
<record model="ir.ui.menu-res.group" id="menu_category_list-group_admin">
|
<record model="ir.ui.menu-res.group" id="menu_category_list-group_admin">
|
||||||
<field name="menu" ref="menu_category_list"/>
|
<field name="menu" ref="menu_category_list"/>
|
||||||
<field name="group" ref="res.group_admin"/>
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
@ -69,6 +60,27 @@ full copyright notices and license terms. -->
|
||||||
<menuitem id="menu_open_lines" action="act_open_lines"
|
<menuitem id="menu_open_lines" action="act_open_lines"
|
||||||
icon="tryton-list"
|
icon="tryton-list"
|
||||||
parent="menu_cashbook" sequence="20"/>
|
parent="menu_cashbook" sequence="20"/>
|
||||||
|
<record model="ir.ui.menu-res.group" id="menu_open_lines-group_admin">
|
||||||
|
<field name="menu" ref="menu_open_lines"/>
|
||||||
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.ui.menu-res.group" id="menu_open_lines-group_cashbook">
|
||||||
|
<field name="menu" ref="menu_open_lines"/>
|
||||||
|
<field name="group" ref="group_cashbook"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- menu: /Cashbook/Cashbook -->
|
||||||
|
<menuitem id="menu_booklist" action="act_book_view"
|
||||||
|
icon="tryton-list"
|
||||||
|
parent="menu_cashbook" sequence="30"/>
|
||||||
|
<record model="ir.ui.menu-res.group" id="menu_booklist-group_admin">
|
||||||
|
<field name="menu" ref="menu_booklist"/>
|
||||||
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.ui.menu-res.group" id="menu_booklist-group_cashbook">
|
||||||
|
<field name="menu" ref="menu_booklist"/>
|
||||||
|
<field name="group" ref="group_cashbook"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|
151
reconciliation.py
Normal file
151
reconciliation.py
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
# -*- 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 Workflow, ModelView, ModelSQL, fields, Unique
|
||||||
|
from trytond.transaction import Transaction
|
||||||
|
from trytond.pyson import Eval, If, Or
|
||||||
|
from trytond.pool import Pool
|
||||||
|
from trytond.report import Report
|
||||||
|
from decimal import Decimal
|
||||||
|
from .book import sel_state_book
|
||||||
|
|
||||||
|
|
||||||
|
sel_reconstate = [
|
||||||
|
('edit', 'Edit'),
|
||||||
|
('check', 'Check'),
|
||||||
|
('done', 'Done'),
|
||||||
|
]
|
||||||
|
|
||||||
|
STATES = {
|
||||||
|
'readonly': Or(
|
||||||
|
Eval('state', '') != 'edit',
|
||||||
|
Eval('state_cashbook', '') != 'open',
|
||||||
|
),
|
||||||
|
}
|
||||||
|
DEPENDS=['state', 'state_cashbook']
|
||||||
|
|
||||||
|
|
||||||
|
class Reconciliation(Workflow, ModelSQL, ModelView):
|
||||||
|
'Cashbook Reconciliation'
|
||||||
|
__name__ = 'cashbook.recon'
|
||||||
|
|
||||||
|
cashbook = fields.Many2One(string='Cashbook', 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)
|
||||||
|
|
||||||
|
date_from = fields.Date(string='Start Date',
|
||||||
|
required=True,
|
||||||
|
domain=[
|
||||||
|
If(Eval('date_to') & Eval('date_from'),
|
||||||
|
('date_from', '<=', Eval('date_to')),
|
||||||
|
()),
|
||||||
|
],
|
||||||
|
states=STATES, depends=DEPENDS+['date_to'])
|
||||||
|
date_to = fields.Date(string='End Date',
|
||||||
|
required=True,
|
||||||
|
domain=[
|
||||||
|
If(Eval('date_to') & Eval('date_from'),
|
||||||
|
('date_from', '<=', Eval('date_to')),
|
||||||
|
()),
|
||||||
|
],
|
||||||
|
states=STATES, depends=DEPENDS+['date_from'])
|
||||||
|
lines = fields.One2Many(string='Lines', field='reconciliation',
|
||||||
|
model_name='cashbook.line', states=STATES,
|
||||||
|
depends=DEPENDS+['date_from', 'date_to', 'cashbook'],
|
||||||
|
add_remove=[
|
||||||
|
('cashbook', '=', Eval('cashbook')),
|
||||||
|
('date', '>=', Eval('date_from')),
|
||||||
|
('date', '<=', Eval('date_to')),
|
||||||
|
],
|
||||||
|
domain=[
|
||||||
|
('date', '>=', Eval('date_from')),
|
||||||
|
('date', '<=', Eval('date_to')),
|
||||||
|
])
|
||||||
|
|
||||||
|
state = fields.Selection(string='State', required=True, readonly=True,
|
||||||
|
select=True, selection=sel_reconstate)
|
||||||
|
state_string = state.translated('state')
|
||||||
|
state_cashbook = fields.Function(fields.Selection(string='State of Cashbook',
|
||||||
|
readonly=True, states={'invisible': True}, selection=sel_state_book),
|
||||||
|
'on_change_with_state_cashbook')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def __setup__(cls):
|
||||||
|
super(Reconciliation, cls).__setup__()
|
||||||
|
cls._order.insert(0, ('date_from', '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
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
@Workflow.transition('check')
|
||||||
|
def wfcheck(cls, lines):
|
||||||
|
""" is checked
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
@Workflow.transition('done')
|
||||||
|
def wfdone(cls, lines):
|
||||||
|
""" is done
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_rec_name(self, name):
|
||||||
|
""" short + name
|
||||||
|
"""
|
||||||
|
return '%(from)s - %(to)s: %(amount)s %(symbol)s' % {
|
||||||
|
'from': Report.format_date(self.date_from, None) if self.date_from is not None else '-',
|
||||||
|
'to': Report.format_date(self.date_to, None) if self.date_to is not None else '-',
|
||||||
|
'amount': Decimal('0.0'),
|
||||||
|
'symbol': getattr(getattr(self.cashbook, 'currency', None), 'symbol', '-'),
|
||||||
|
}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def default_state(cls):
|
||||||
|
return 'edit'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def default_date(cls):
|
||||||
|
""" today
|
||||||
|
"""
|
||||||
|
IrDate = Pool().get('ir.date')
|
||||||
|
return IrDate.today()
|
||||||
|
|
||||||
|
@fields.depends('cashbook', '_parent_cashbook.state')
|
||||||
|
def on_change_with_state_cashbook(self, name=None):
|
||||||
|
""" get state of cashbook
|
||||||
|
"""
|
||||||
|
if self.cashbook:
|
||||||
|
return self.cashbook.state
|
||||||
|
|
||||||
|
# end Type
|
196
reconciliation.xml
Normal file
196
reconciliation.xml
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
<tryton>
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<!-- views -->
|
||||||
|
<record model="ir.ui.view" id="recon_view_list">
|
||||||
|
<field name="model">cashbook.recon</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="priority" eval="10"/>
|
||||||
|
<field name="name">recon_list</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.ui.view" id="recon_view_form">
|
||||||
|
<field name="model">cashbook.recon</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="priority" eval="20"/>
|
||||||
|
<field name="name">recon_form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- action view-->
|
||||||
|
<record model="ir.action.act_window" id="act_recon_view">
|
||||||
|
<field name="name">Cashbook Reconciliation</field>
|
||||||
|
<field name="res_model">cashbook.recon</field>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.act_window.view" id="act_recon_view-1">
|
||||||
|
<field name="sequence" eval="10"/>
|
||||||
|
<field name="view" ref="recon_view_list"/>
|
||||||
|
<field name="act_window" ref="act_recon_view"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.act_window.view" id="act_recon_view-2">
|
||||||
|
<field name="sequence" eval="20"/>
|
||||||
|
<field name="view" ref="recon_view_form"/>
|
||||||
|
<field name="act_window" ref="act_recon_view"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- permission -->
|
||||||
|
<!-- anon: deny all -->
|
||||||
|
<record model="ir.model.access" id="access_recon-anon">
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
<field name="perm_read" eval="False"/>
|
||||||
|
<field name="perm_write" eval="False"/>
|
||||||
|
<field name="perm_create" eval="False"/>
|
||||||
|
<field name="perm_delete" eval="False"/>
|
||||||
|
</record>
|
||||||
|
<!-- admin: read/write -->
|
||||||
|
<record model="ir.model.access" id="access_recon-group_admin">
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
<field name="perm_read" eval="True"/>
|
||||||
|
<field name="perm_write" eval="True"/>
|
||||||
|
<field name="perm_create" eval="True"/>
|
||||||
|
<field name="perm_delete" eval="True"/>
|
||||||
|
</record>
|
||||||
|
<!-- cashbook: read/write -->
|
||||||
|
<record model="ir.model.access" id="access_recon-group_cashbook">
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
<field name="group" ref="group_cashbook"/>
|
||||||
|
<field name="perm_read" eval="True"/>
|
||||||
|
<field name="perm_write" eval="True"/>
|
||||||
|
<field name="perm_create" eval="True"/>
|
||||||
|
<field name="perm_delete" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- permission by rule - admin -->
|
||||||
|
<record model="ir.rule.group" id="rg_recon_write_adm">
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
<field name="name">Administrators: Reconciliation read/write</field>
|
||||||
|
<field name="global_p" eval="False"/>
|
||||||
|
<field name="default_p" eval="False"/>
|
||||||
|
<field name="perm_read" eval="True"/>
|
||||||
|
<field name="perm_write" eval="True"/>
|
||||||
|
<field name="perm_create" eval="True"/>
|
||||||
|
<field name="perm_delete" eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.rule" id="rg_recon_write_adm-1">
|
||||||
|
<field name="domain" eval="[]" pyson="1"/>
|
||||||
|
<field name="rule_group" ref="rg_recon_write_adm"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.rule.group-res.group" id="rg_recon_write_adm-group_admin">
|
||||||
|
<field name="rule_group" ref="rg_recon_write_adm"/>
|
||||||
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- permission by rule - read/write: owner, reviewer -->
|
||||||
|
<record model="ir.rule.group" id="rg_recon_write">
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
<field name="name">Owners and reviewers: Reconciliation write</field>
|
||||||
|
<field name="global_p" eval="False"/>
|
||||||
|
<field name="default_p" eval="False"/>
|
||||||
|
<field name="perm_read" eval="True"/>
|
||||||
|
<field name="perm_write" eval="True"/>
|
||||||
|
<field name="perm_create" eval="True"/>
|
||||||
|
<field name="perm_delete" eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.rule" id="rg_recon_write-1">
|
||||||
|
<field name="domain" eval="['OR',
|
||||||
|
('cashbook.owner.id', '=', Eval('user', {}).get('id', -1)),
|
||||||
|
('cashbook.reviewer.id', 'in', Eval('user', {}).get('groups', [])),
|
||||||
|
]" pyson="1"/>
|
||||||
|
<field name="rule_group" ref="rg_recon_write"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.rule.group-res.group" id="rg_recon_write-group_cashbook">
|
||||||
|
<field name="rule_group" ref="rg_recon_write"/>
|
||||||
|
<field name="group" ref="group_cashbook"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- permission by rule - read: observer -->
|
||||||
|
<record model="ir.rule.group" id="rg_recon_read">
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
<field name="name">Observer: Reconciliation read</field>
|
||||||
|
<field name="global_p" eval="False"/>
|
||||||
|
<field name="default_p" eval="False"/>
|
||||||
|
<field name="perm_read" eval="True"/>
|
||||||
|
<field name="perm_write" eval="False"/>
|
||||||
|
<field name="perm_create" eval="False"/>
|
||||||
|
<field name="perm_delete" eval="False"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.rule" id="rg_recon_read-1">
|
||||||
|
<field name="domain" eval="[
|
||||||
|
('cashbook.observer.id', 'in', Eval('user', {}).get('groups', [])),
|
||||||
|
]" pyson="1"/>
|
||||||
|
<field name="rule_group" ref="rg_recon_read"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.rule.group-res.group" id="rg_recon_read-group_cashbook">
|
||||||
|
<field name="rule_group" ref="rg_recon_read"/>
|
||||||
|
<field name="group" ref="group_cashbook"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.rule.group" id="rg_recon_companies">
|
||||||
|
<field name="name">User in companies</field>
|
||||||
|
<field name="model"
|
||||||
|
search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
<field name="global_p" eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.rule" id="r_recon_companies">
|
||||||
|
<field name="domain"
|
||||||
|
eval="[('cashbook.company', 'in', Eval('companies', []))]"
|
||||||
|
pyson="1"/>
|
||||||
|
<field name="rule_group" ref="rg_recon_companies"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- button - edit -->
|
||||||
|
<record model="ir.model.button" id="recon_wfedit_button">
|
||||||
|
<field name="name">wfedit</field>
|
||||||
|
<field name="string">Edit</field>
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.model.button-res.group"
|
||||||
|
id="recon_wfedit_button-group_admin">
|
||||||
|
<field name="button" ref="recon_wfedit_button"/>
|
||||||
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.model.button-res.group"
|
||||||
|
id="recon_wfedit_button-group_cashbook_doneline">
|
||||||
|
<field name="button" ref="recon_wfedit_button"/>
|
||||||
|
<field name="group" ref="group_cashbook_doneline"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- button - check -->
|
||||||
|
<record model="ir.model.button" id="recon_wfcheck_button">
|
||||||
|
<field name="name">wfcheck</field>
|
||||||
|
<field name="string">Check</field>
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.model.button-res.group"
|
||||||
|
id="recon_wfcheck_button-group_admin">
|
||||||
|
<field name="button" ref="recon_wfcheck_button"/>
|
||||||
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.model.button-res.group"
|
||||||
|
id="recon_wfcheck_button-group_cashbook_doneline">
|
||||||
|
<field name="button" ref="recon_wfcheck_button"/>
|
||||||
|
<field name="group" ref="group_cashbook_doneline"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- button - done -->
|
||||||
|
<record model="ir.model.button" id="recon_wfdone_button">
|
||||||
|
<field name="name">wfdone</field>
|
||||||
|
<field name="string">Done</field>
|
||||||
|
<field name="model" search="[('model', '=', 'cashbook.recon')]"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.model.button-res.group"
|
||||||
|
id="recon_wfdone_button-group_admin">
|
||||||
|
<field name="button" ref="recon_wfdone_button"/>
|
||||||
|
<field name="group" ref="res.group_admin"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.model.button-res.group"
|
||||||
|
id="recon_wfdone_button-group_cashbook_doneline">
|
||||||
|
<field name="button" ref="recon_wfdone_button"/>
|
||||||
|
<field name="group" ref="group_cashbook_doneline"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</tryton>
|
|
@ -10,6 +10,7 @@ xml:
|
||||||
message.xml
|
message.xml
|
||||||
types.xml
|
types.xml
|
||||||
category.xml
|
category.xml
|
||||||
|
reconciliation.xml
|
||||||
configuration.xml
|
configuration.xml
|
||||||
book.xml
|
book.xml
|
||||||
line.xml
|
line.xml
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
<!-- This file is part of the cashbook-module from m-ds for Tryton.
|
<!-- 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
|
The COPYRIGHT file at the top level of this repository contains the
|
||||||
full copyright notices and license terms. -->
|
full copyright notices and license terms. -->
|
||||||
<form>
|
<form col="6">
|
||||||
<label name="name"/>
|
<label name="name"/>
|
||||||
<field name="name"/>
|
<field name="name" colspan="3"/>
|
||||||
<label name="btype"/>
|
<label name="btype"/>
|
||||||
<field name="btype"/>
|
<field name="btype"/>
|
||||||
|
|
||||||
|
@ -12,27 +12,36 @@ full copyright notices and license terms. -->
|
||||||
<field name="currency"/>
|
<field name="currency"/>
|
||||||
<label name="account"/>
|
<label name="account"/>
|
||||||
<field name="account"/>
|
<field name="account"/>
|
||||||
|
<group id="grpst" colspan="2" col="3">
|
||||||
|
<label name="state"/>
|
||||||
|
<field name="state"/>
|
||||||
|
<group id="grpstate" col="3">
|
||||||
|
<button name="wfopen"/>
|
||||||
|
<button name="wfclosed"/>
|
||||||
|
<button name="wfarchive"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
|
||||||
<label name="start_balance"/>
|
<label name="start_balance"/>
|
||||||
<field name="start_balance"/>
|
<field name="start_balance"/>
|
||||||
|
<label name="balance"/>
|
||||||
|
<field name="balance"/>
|
||||||
<newline/>
|
<newline/>
|
||||||
|
|
||||||
<label name="state"/>
|
<notebook colspan="6">
|
||||||
<field name="state"/>
|
<page id="pgrecon" string="Reconciliations" col="1">
|
||||||
<group id="grpstate" col="3" colspan="2">
|
<field name="reconciliations"/>
|
||||||
<button name="wfopen"/>
|
</page>
|
||||||
<button name="wfclosed"/>
|
<page id="pgperm" string="Owner and Authorizeds" col="4">
|
||||||
<button name="wfarchive"/>
|
<label name="owner"/>
|
||||||
</group>
|
<field name="owner"/>
|
||||||
|
<newline/>
|
||||||
|
|
||||||
<separator id="sepperm" string="Owner and Authorizeds" colspan="4"/>
|
<label name="reviewer"/>
|
||||||
<label name="owner"/>
|
<field name="reviewer"/>
|
||||||
<field name="owner"/>
|
<label name="observer"/>
|
||||||
<newline/>
|
<field name="observer"/>
|
||||||
|
</page>
|
||||||
<label name="reviewer"/>
|
</notebook>
|
||||||
<field name="reviewer"/>
|
|
||||||
<label name="observer"/>
|
|
||||||
<field name="observer"/>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -6,6 +6,7 @@ full copyright notices and license terms. -->
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="btype"/>
|
<field name="btype"/>
|
||||||
<field name="start_balance"/>
|
<field name="start_balance"/>
|
||||||
|
<field name="balance"/>
|
||||||
<field name="currency"/>
|
<field name="currency"/>
|
||||||
<field name="account"/>
|
<field name="account"/>
|
||||||
<field name="owner"/>
|
<field name="owner"/>
|
||||||
|
|
|
@ -19,7 +19,8 @@ full copyright notices and license terms. -->
|
||||||
<field name="date"/>
|
<field name="date"/>
|
||||||
<label name="bookingtype"/>
|
<label name="bookingtype"/>
|
||||||
<field name="bookingtype"/>
|
<field name="bookingtype"/>
|
||||||
<newline/>
|
<label name="reconciliation"/>
|
||||||
|
<field name="reconciliation"/>
|
||||||
|
|
||||||
<label name="category"/>
|
<label name="category"/>
|
||||||
<field name="category"/>
|
<field name="category"/>
|
||||||
|
|
31
view/recon_form.xml
Normal file
31
view/recon_form.xml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
<form col="6">
|
||||||
|
<label name="cashbook"/>
|
||||||
|
<field name="cashbook"/>
|
||||||
|
<newline/>
|
||||||
|
|
||||||
|
<separator id="sep1" string="Reconciliation period" colspan="4"/>
|
||||||
|
<separator id="sep2" string="State" colspan="2"/>
|
||||||
|
|
||||||
|
<label name="date_from"/>
|
||||||
|
<field name="date_from"/>
|
||||||
|
<label name="date_to"/>
|
||||||
|
<field name="date_to"/>
|
||||||
|
|
||||||
|
<field name="state"/>
|
||||||
|
<group id="grpstate" col="3">
|
||||||
|
<button name="wfedit"/>
|
||||||
|
<button name="wfcheck"/>
|
||||||
|
<button name="wfdone"/>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<label id="lab1" string=" " colspan="4"/>
|
||||||
|
<label name="date"/>
|
||||||
|
<field name="date"/>
|
||||||
|
<newline/>
|
||||||
|
|
||||||
|
<field name="lines" colspan="6"/>
|
||||||
|
</form>
|
12
view/recon_list.xml
Normal file
12
view/recon_list.xml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
<tree>
|
||||||
|
<field name="cashbook"/>
|
||||||
|
<field name="date"/>
|
||||||
|
<field name="date_from"/>
|
||||||
|
<field name="date_to"/>
|
||||||
|
<field name="lines"/>
|
||||||
|
<field name="state"/>
|
||||||
|
</tree>
|
Loading…
Reference in a new issue