tabelle 'reconciliation' neu

This commit is contained in:
Frederik Jaeckel 2022-08-11 15:00:35 +02:00
parent ae5303658e
commit 01825cc09c
13 changed files with 571 additions and 36 deletions

View file

@ -10,6 +10,7 @@ from .line import Line, LineContext
from .wizard_openline import OpenCashBook, OpenCashBookStart
from .configuration import Configuration, UserConfiguration
from .category import Category
from .reconciliation import Reconciliation
def register():
Pool.register(
@ -20,6 +21,7 @@ def register():
Book,
LineContext,
Line,
Reconciliation,
OpenCashBookStart,
module='cashbook', type_='model')
Pool.register(

12
book.py
View file

@ -39,16 +39,22 @@ class Book(Workflow, ModelSQL, ModelView):
model_name='cashbook.type', ondelete='RESTRICT',
states=STATES, depends=DEPENDS)
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,
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,
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',
model_name='cashbook.line',
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,
model_name='account.account', ondelete='RESTRICT',
states=STATES, depends=DEPENDS)

View file

@ -77,6 +77,8 @@ class Line(Workflow, ModelSQL, ModelView):
required=True, readonly=True, depends=['currency_digits'])
credit = fields.Numeric(string='Credit', digits=(16, Eval('currency_digits', 2)),
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',
digits=(16, Eval('currency_digits', 2)),
@ -494,7 +496,6 @@ class LineContext(ModelView):
""" get number of accessible cashbooks,
depends on user-permissions
"""
print('-- on_change_with_num_cashbook:', Transaction().context)
LineContext = Pool().get('cashbook.line.context')
return LineContext.default_num_cashbook()

View file

@ -110,6 +110,18 @@ msgctxt "model:ir.rule.group,name:rg_book_companies"
msgid "User in companies"
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 #
@ -126,7 +138,7 @@ msgctxt "model:ir.ui.menu,name:menu_typeconfig"
msgid "Cashbook Type"
msgstr "Kassenbuchtyp"
msgctxt "model:ir.ui.menu,name:menu_bookconfig"
msgctxt "model:ir.ui.menu,name:menu_booklist"
msgid "Cashbook"
msgstr "Kassenbuch"
@ -210,6 +222,18 @@ msgctxt "model:ir.model.button,string:book_wfarchive_button"
msgid "Archive"
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 #
@ -222,6 +246,10 @@ msgctxt "view:cashbook.book:"
msgid "Owner and Authorizeds"
msgstr "Eigentümer und Autorisierte"
msgctxt "view:cashbook.book:"
msgid "Reconciliations"
msgstr "Abstimmungen"
msgctxt "field:cashbook.book,name:"
msgid "Name"
msgstr "Name"
@ -282,6 +310,18 @@ msgctxt "field:cashbook.book,start_balance:"
msgid "Initial Amount"
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 #
@ -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."
msgstr "Saldo des Kassenbuchs bis zur aktuellen Zeile, sofern die Standardsortierung gilt."
msgctxt "field:cashbook.line,reconciliation:"
msgid "Reconciliation"
msgstr "Abstimmung"
#################
# cashbook.type #
@ -689,3 +733,71 @@ msgstr "Kategorie: Kontonummer zeigen"
msgctxt "help:cashbook.configuration_user,cataccno:"
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."
##################
# 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"

View file

@ -30,19 +30,10 @@ full copyright notices and license terms. -->
<field name="group" ref="group_cashbook"/>
</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 -->
<menuitem id="menu_typeconfig" action="act_type_view"
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">
<field name="menu" ref="menu_typeconfig"/>
<field name="group" ref="res.group_admin"/>
@ -51,7 +42,7 @@ full copyright notices and license terms. -->
<!-- menu: /Cashbook/Configuration/Category -->
<menuitem id="menu_category" action="act_category_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">
<field name="menu" ref="menu_category"/>
<field name="group" ref="res.group_admin"/>
@ -59,7 +50,7 @@ full copyright notices and license terms. -->
<!-- menu: /Cashbook/Configuration/Category/Category -->
<menuitem id="menu_category_list" action="act_category_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">
<field name="menu" ref="menu_category_list"/>
<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"
icon="tryton-list"
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>
</tryton>

151
reconciliation.py Normal file
View 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
View 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>

View file

@ -10,6 +10,7 @@ xml:
message.xml
types.xml
category.xml
reconciliation.xml
configuration.xml
book.xml
line.xml

View file

@ -2,9 +2,9 @@
<!-- 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>
<form col="6">
<label name="name"/>
<field name="name"/>
<field name="name" colspan="3"/>
<label name="btype"/>
<field name="btype"/>
@ -12,27 +12,36 @@ full copyright notices and license terms. -->
<field name="currency"/>
<label 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"/>
<field name="start_balance"/>
<label name="balance"/>
<field name="balance"/>
<newline/>
<label name="state"/>
<field name="state"/>
<group id="grpstate" col="3" colspan="2">
<button name="wfopen"/>
<button name="wfclosed"/>
<button name="wfarchive"/>
</group>
<notebook colspan="6">
<page id="pgrecon" string="Reconciliations" col="1">
<field name="reconciliations"/>
</page>
<page id="pgperm" string="Owner and Authorizeds" col="4">
<label name="owner"/>
<field name="owner"/>
<newline/>
<separator id="sepperm" string="Owner and Authorizeds" colspan="4"/>
<label name="owner"/>
<field name="owner"/>
<newline/>
<label name="reviewer"/>
<field name="reviewer"/>
<label name="observer"/>
<field name="observer"/>
<label name="reviewer"/>
<field name="reviewer"/>
<label name="observer"/>
<field name="observer"/>
</page>
</notebook>
</form>

View file

@ -6,6 +6,7 @@ full copyright notices and license terms. -->
<field name="name"/>
<field name="btype"/>
<field name="start_balance"/>
<field name="balance"/>
<field name="currency"/>
<field name="account"/>
<field name="owner"/>

View file

@ -19,7 +19,8 @@ full copyright notices and license terms. -->
<field name="date"/>
<label name="bookingtype"/>
<field name="bookingtype"/>
<newline/>
<label name="reconciliation"/>
<field name="reconciliation"/>
<label name="category"/>
<field name="category"/>

31
view/recon_form.xml Normal file
View 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
View 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>