Currently, the "Open Reconcile Lines" can become very difficult to use when you have a lot of different parties and/or a lot of account to reconcile. Here is a new process which is based on a wizard that loops over all the couple of account/party that potentially have lines to reconcile. It shows for each couple a proposal of reconciliation that the user can accept or modify (with write-off possibilities). The proposal is found by testing all the combinations of lines up to 10 lines by default (configurable). As such problem is NP-hard, I think we can afford to use the brute force for small number and let the user solves higher number or iterate on running the wizard. Any way, it is possible to implement other strategy by module extention. issue4185 review14511002
328 lines
16 KiB
XML
328 lines
16 KiB
XML
<?xml version="1.0"?>
|
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
this repository contains the full copyright notices and license terms. -->
|
|
<tryton>
|
|
<data>
|
|
<record model="ir.ui.view" id="move_view_form">
|
|
<field name="model">account.move</field>
|
|
<field name="type">form</field>
|
|
<field name="name">move_form</field>
|
|
</record>
|
|
<record model="ir.ui.view" id="move_view_tree">
|
|
<field name="model">account.move</field>
|
|
<field name="type">tree</field>
|
|
<field name="name">move_tree</field>
|
|
</record>
|
|
<record model="ir.action.act_window" id="act_move_form">
|
|
<field name="name">Account Moves</field>
|
|
<field name="res_model">account.move</field>
|
|
<field name="domain">[('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]</field>
|
|
<field name="search_value">[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]</field>
|
|
</record>
|
|
<record model="ir.action.act_window.view" id="act_move_form_view1">
|
|
<field name="sequence" eval="10"/>
|
|
<field name="view" ref="move_view_tree"/>
|
|
<field name="act_window" ref="act_move_form"/>
|
|
</record>
|
|
<record model="ir.action.act_window.view" id="act_move_form_view2">
|
|
<field name="sequence" eval="20"/>
|
|
<field name="view" ref="move_view_form"/>
|
|
<field name="act_window" ref="act_move_form"/>
|
|
</record>
|
|
<menuitem parent="menu_entries" action="act_move_form"
|
|
id="menu_move_form"/>
|
|
|
|
<record model="ir.model.access" id="access_move">
|
|
<field name="model" search="[('model', '=', 'account.move')]"/>
|
|
<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>
|
|
<record model="ir.model.access" id="access_move_account">
|
|
<field name="model" search="[('model', '=', 'account.move')]"/>
|
|
<field name="group" ref="group_account"/>
|
|
<field name="perm_read" eval="True"/>
|
|
<field name="perm_write" eval="True"/>
|
|
<field name="perm_create" eval="True"/>
|
|
<field name="perm_delete" eval="False"/>
|
|
</record>
|
|
<record model="ir.model.access" id="access_move_account_admin">
|
|
<field name="model" search="[('model', '=', 'account.move')]"/>
|
|
<field name="group" ref="group_account_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>
|
|
<record model="ir.sequence.type" id="sequence_type_account_move">
|
|
<field name="name">Account Move</field>
|
|
<field name="code">account.move</field>
|
|
</record>
|
|
<record model="ir.sequence.type-res.group"
|
|
id="sequence_type_account_move_group_admin">
|
|
<field name="sequence_type" ref="sequence_type_account_move"/>
|
|
<field name="group" ref="res.group_admin"/>
|
|
</record>
|
|
<record model="ir.sequence.type-res.group"
|
|
id="sequence_type_account_move_group_account_admin">
|
|
<field name="sequence_type" ref="sequence_type_account_move"/>
|
|
<field name="group" ref="group_account_admin"/>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="move_reconciliation_view_form">
|
|
<field name="model">account.move.reconciliation</field>
|
|
<field name="type">form</field>
|
|
<field name="name">move_reconciliation_form</field>
|
|
</record>
|
|
<record model="ir.ui.view" id="move_reconciliation_view_tree">
|
|
<field name="model">account.move.reconciliation</field>
|
|
<field name="type">tree</field>
|
|
<field name="name">move_reconciliation_tree</field>
|
|
</record>
|
|
|
|
<record model="ir.action.act_window" id="act_move_reconciliation_lines">
|
|
<field name="name">Reconciliation Lines</field>
|
|
<field name="res_model">account.move.line</field>
|
|
<field name="domain">[('reconciliation', 'in', Eval('active_ids'))]</field>
|
|
</record>
|
|
<record model="ir.action.keyword" id="act_move_reconciliation_lines_keyword1">
|
|
<field name="keyword">form_relate</field>
|
|
<field name="model">account.move.reconciliation,-1</field>
|
|
<field name="action" ref="act_move_reconciliation_lines"/>
|
|
</record>
|
|
|
|
<record model="ir.model.access" id="access_move_reconciliation">
|
|
<field name="model" search="[('model', '=', 'account.move.reconciliation')]"/>
|
|
<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>
|
|
<record model="ir.model.access" id="access_move_reconciliation_account">
|
|
<field name="model" search="[('model', '=', 'account.move.reconciliation')]"/>
|
|
<field name="group" ref="group_account"/>
|
|
<field name="perm_read" eval="True"/>
|
|
<field name="perm_write" eval="False"/>
|
|
<field name="perm_create" eval="True"/>
|
|
<field name="perm_delete" eval="False"/>
|
|
</record>
|
|
<record model="ir.model.access" id="access_move_reconciliation_account_admin">
|
|
<field name="model" search="[('model', '=', 'account.move.reconciliation')]"/>
|
|
<field name="group" ref="group_account_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>
|
|
<record model="ir.sequence.type" id="sequence_type_account_move_reconciliation">
|
|
<field name="name">Account Move Reconciliation</field>
|
|
<field name="code">account.move.reconciliation</field>
|
|
</record>
|
|
<record model="ir.sequence.type-res.group"
|
|
id="sequence_type_account_move_reconciliation_group_admin">
|
|
<field name="sequence_type" ref="sequence_type_account_move_reconciliation"/>
|
|
<field name="group" ref="res.group_admin"/>
|
|
</record>
|
|
<record model="ir.sequence.type-res.group"
|
|
id="sequence_type_account_move_reconciliation_group_account_admin">
|
|
<field name="sequence_type" ref="sequence_type_account_move_reconciliation"/>
|
|
<field name="group" ref="group_account_admin"/>
|
|
</record>
|
|
|
|
<record model="ir.sequence" id="sequence_account_move_reconciliation">
|
|
<field name="name">Default Account Move Reconciliation</field>
|
|
<field name="code">account.move.reconciliation</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="move_line_view_form">
|
|
<field name="model">account.move.line</field>
|
|
<field name="type">form</field>
|
|
<field name="priority" eval="10"/>
|
|
<field name="name">move_line_form</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="move_line_view_form_move">
|
|
<field name="model">account.move.line</field>
|
|
<field name="type">form</field>
|
|
<field name="priority" eval="20"/>
|
|
<field name="name">move_line_form_move</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="move_line_view_tree">
|
|
<field name="model">account.move.line</field>
|
|
<field name="type">tree</field>
|
|
<field name="priority" eval="10"/>
|
|
<field name="name">move_line_tree</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="move_line_view_tree_move">
|
|
<field name="model">account.move.line</field>
|
|
<field name="type">tree</field>
|
|
<field name="priority" eval="20"/>
|
|
<field name="name">move_line_tree_move</field>
|
|
</record>
|
|
|
|
<record model="ir.action.act_window" id="act_move_line_form">
|
|
<field name="name">Account Move Lines</field>
|
|
<field name="res_model">account.move.line</field>
|
|
</record>
|
|
<record model="ir.action.act_window.view" id="act_move_line_form_view1">
|
|
<field name="sequence" eval="10"/>
|
|
<field name="view" ref="move_line_view_tree"/>
|
|
<field name="act_window" ref="act_move_line_form"/>
|
|
</record>
|
|
<record model="ir.action.act_window.view" id="act_move_line_form_view2">
|
|
<field name="sequence" eval="20"/>
|
|
<field name="view" ref="move_line_view_form"/>
|
|
<field name="act_window" ref="act_move_line_form"/>
|
|
</record>
|
|
<record model="ir.action.wizard" id="act_open_account">
|
|
<field name="name">Open Move Account</field>
|
|
<field name="wiz_name">account.move.open_account</field>
|
|
<field name="model">account.account</field>
|
|
</record>
|
|
<record model="ir.action.keyword" id="act_open_account_keyword">
|
|
<field name="keyword">tree_open</field>
|
|
<field name="model">account.account,-1</field>
|
|
<field name="action" ref="act_open_account"/>
|
|
</record>
|
|
|
|
<record model="ir.action.act_window" id="act_move_line_payable">
|
|
<field name="name">Payable Lines</field>
|
|
<field name="res_model">account.move.line</field>
|
|
<field name="domain">[('party', 'in', Eval('active_ids')), ('account.kind', '=', 'payable'), ('reconciliation', '=', None)]</field>
|
|
</record>
|
|
<record model="ir.action.keyword" id="act_move_line_payable_keyword1">
|
|
<field name="keyword">form_relate</field>
|
|
<field name="model">party.party,-1</field>
|
|
<field name="action" ref="act_move_line_payable"/>
|
|
</record>
|
|
<record model="ir.action-res.group"
|
|
id="act_move_line_payable-group_account">
|
|
<field name="action" ref="act_move_line_payable"/>
|
|
<field name="group" ref="group_account"/>
|
|
</record>
|
|
|
|
<record model="ir.action.act_window" id="act_move_line_receivable">
|
|
<field name="name">Receivable Lines</field>
|
|
<field name="res_model">account.move.line</field>
|
|
<field name="domain">[('party', 'in', Eval('active_ids')), ('account.kind', '=', 'receivable'), ('reconciliation', '=', None)]</field>
|
|
</record>
|
|
<record model="ir.action.keyword" id="act_move_line_receivable_keyword1">
|
|
<field name="keyword">form_relate</field>
|
|
<field name="model">party.party,-1</field>
|
|
<field name="action" ref="act_move_line_receivable"/>
|
|
</record>
|
|
<record model="ir.action-res.group"
|
|
id="act_move_line_receivable-group_account">
|
|
<field name="action" ref="act_move_line_receivable"/>
|
|
<field name="group" ref="group_account"/>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="open_journal_ask_view_form">
|
|
<field name="model">account.move.open_journal.ask</field>
|
|
<field name="type">form</field>
|
|
<field name="name">open_journal_ask_form</field>
|
|
</record>
|
|
|
|
<record model="ir.action.wizard" id="act_open_journal">
|
|
<field name="name">Open Journal</field>
|
|
<field name="wiz_name">account.move.open_journal</field>
|
|
</record>
|
|
<record model="ir.action.keyword" id="act_open_journal_keyword">
|
|
<field name="keyword">tree_open</field>
|
|
<field name="model">account.journal.period,-1</field>
|
|
<field name="action" ref="act_open_journal"/>
|
|
</record>
|
|
<menuitem parent="menu_entries" action="act_open_journal"
|
|
icon="tryton-list" id="menu_open_journal"/>
|
|
<record model="ir.model.access" id="access_move_line">
|
|
<field name="model" search="[('model', '=', 'account.move.line')]"/>
|
|
<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>
|
|
<record model="ir.model.access" id="access_move_line_account">
|
|
<field name="model" search="[('model', '=', 'account.move.line')]"/>
|
|
<field name="group" ref="group_account"/>
|
|
<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.ui.view" id="reconcile_lines_writeoff_view_form">
|
|
<field name="model">account.move.reconcile_lines.writeoff</field>
|
|
<field name="type">form</field>
|
|
<field name="name">reconcile_lines_writeoff_form</field>
|
|
</record>
|
|
<record model="ir.action.wizard" id="act_reconcile_lines">
|
|
<field name="name">Reconcile Lines</field>
|
|
<field name="wiz_name">account.move.reconcile_lines</field>
|
|
<field name="model">account.move.line</field>
|
|
</record>
|
|
<record model="ir.action.keyword" id="act_reconcile_lines_keyword">
|
|
<field name="keyword">form_action</field>
|
|
<field name="model">account.move.line,-1</field>
|
|
<field name="action" ref="act_reconcile_lines"/>
|
|
</record>
|
|
|
|
<record model="ir.action.wizard" id="act_unreconcile_lines">
|
|
<field name="name">Unreconcile Lines</field>
|
|
<field name="wiz_name">account.move.unreconcile_lines</field>
|
|
<field name="model">account.move.line</field>
|
|
</record>
|
|
<record model="ir.action.keyword" id="act_unreconcile_lines_keyword">
|
|
<field name="keyword">form_action</field>
|
|
<field name="model">account.move.line,-1</field>
|
|
<field name="action" ref="act_unreconcile_lines"/>
|
|
</record>
|
|
|
|
<record model="ir.action.wizard" id="act_reconcile">
|
|
<field name="name">Reconcile Accounts</field>
|
|
<field name="wiz_name">account.reconcile</field>
|
|
<field name="window" eval="True"/>
|
|
</record>
|
|
<menuitem parent="menu_processing" action="act_reconcile"
|
|
id="menu_reconcile"/>
|
|
|
|
<record model="ir.ui.view" id="reconcile_show_view_form">
|
|
<field name="model">account.reconcile.show</field>
|
|
<field name="type">form</field>
|
|
<field name="name">reconcile_show_form</field>
|
|
</record>
|
|
|
|
<record model="ir.action.wizard" id="act_cancel_moves">
|
|
<field name="name">Cancel Moves</field>
|
|
<field name="wiz_name">account.move.cancel</field>
|
|
</record>
|
|
<record model="ir.action.keyword" id="act_cancel_moves_keyword1">
|
|
<field name="keyword">form_action</field>
|
|
<field name="model">account.move,-1</field>
|
|
<field name="action" ref="act_cancel_moves"/>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="print_general_journal_start_view_form">
|
|
<field name="model">account.move.print_general_journal.start</field>
|
|
<field name="type">form</field>
|
|
<field name="name">print_general_journal_start_form</field>
|
|
</record>
|
|
|
|
<record model="ir.action.wizard" id="wizard_print_general_journal">
|
|
<field name="name">Print General Journal</field>
|
|
<field name="wiz_name">account.move.print_general_journal</field>
|
|
</record>
|
|
<menuitem parent="menu_reporting" action="wizard_print_general_journal"
|
|
id="menu_print_general_journal" icon="tryton-print"/>
|
|
|
|
<record model="ir.action.report" id="report_general_journal">
|
|
<field name="name">General Journal</field>
|
|
<field name="model">account.move</field>
|
|
<field name="report_name">account.move.general_journal</field>
|
|
<field name="report">account/general_journal.odt</field>
|
|
</record>
|
|
</data>
|
|
</tryton>
|