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 .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
12
book.py
|
@ -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)
|
||||
|
|
3
line.py
3
line.py
|
@ -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()
|
||||
|
||||
|
|
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"
|
||||
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"
|
||||
|
|
36
menu.xml
36
menu.xml
|
@ -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
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
|
||||
types.xml
|
||||
category.xml
|
||||
reconciliation.xml
|
||||
configuration.xml
|
||||
book.xml
|
||||
line.xml
|
||||
|
|
|
@ -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,20 +12,27 @@ full copyright notices and license terms. -->
|
|||
<field name="currency"/>
|
||||
<label name="account"/>
|
||||
<field name="account"/>
|
||||
|
||||
<label name="start_balance"/>
|
||||
<field name="start_balance"/>
|
||||
<newline/>
|
||||
|
||||
<group id="grpst" colspan="2" col="3">
|
||||
<label name="state"/>
|
||||
<field name="state"/>
|
||||
<group id="grpstate" col="3" colspan="2">
|
||||
<group id="grpstate" col="3">
|
||||
<button name="wfopen"/>
|
||||
<button name="wfclosed"/>
|
||||
<button name="wfarchive"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<separator id="sepperm" string="Owner and Authorizeds" colspan="4"/>
|
||||
<label name="start_balance"/>
|
||||
<field name="start_balance"/>
|
||||
<label name="balance"/>
|
||||
<field name="balance"/>
|
||||
<newline/>
|
||||
|
||||
<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/>
|
||||
|
@ -34,5 +41,7 @@ full copyright notices and license terms. -->
|
|||
<field name="reviewer"/>
|
||||
<label name="observer"/>
|
||||
<field name="observer"/>
|
||||
</page>
|
||||
</notebook>
|
||||
|
||||
</form>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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
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