mirror of
https://github.com/OCA/account-reconcile.git
synced 2025-01-20 12:27:39 +02:00
[ADD] new reconciliation rule using bank statements
This commit is contained in:
committed by
Leonardo Pistone
parent
1602a3be7d
commit
9a949d8ea1
23
account_advanced_reconcile_bank_statement/__init__.py
Normal file
23
account_advanced_reconcile_bank_statement/__init__.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Romain Deheele. Copyright Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from . import easy_reconcile
|
||||
from . import base_advanced_reconciliation
|
||||
from . import advanced_reconciliation
|
||||
44
account_advanced_reconcile_bank_statement/__openerp__.py
Normal file
44
account_advanced_reconcile_bank_statement/__openerp__.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Matthieu Dietrich. Copyright Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{'name': 'Advanced Reconcile Bank Statement',
|
||||
'description': """
|
||||
Advanced reconciliation method for the module account_advanced_reconcile
|
||||
========================================================================
|
||||
Reconcile rules with bank statement name.
|
||||
|
||||
This will reconcile multiple credit move lines (bank statements) with
|
||||
all the lines from a specific bank statement, debit or credit (to also
|
||||
reconcile the commission with credit card imports).
|
||||
|
||||
""",
|
||||
'version': '1.0.0',
|
||||
'author': 'Camptocamp',
|
||||
'category': 'Finance',
|
||||
'website': 'http://www.camptocamp.com',
|
||||
'depends': ['account_advanced_reconcile'],
|
||||
'data': ['easy_reconcile_view.xml'],
|
||||
'demo': [],
|
||||
'test': [], # To be ported or migrate to unit tests or scenarios
|
||||
'auto_install': False,
|
||||
'installable': True,
|
||||
'images': []
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -0,0 +1,60 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Matthieu Dietrich. Copyright Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm
|
||||
|
||||
|
||||
class easy_reconcile_advanced_bank_statement(orm.TransientModel):
|
||||
|
||||
_name = 'easy.reconcile.advanced.bank_statement'
|
||||
_inherit = 'easy.reconcile.advanced'
|
||||
|
||||
def _skip_line(self, cr, uid, rec, move_line, context=None):
|
||||
"""
|
||||
When True is returned on some conditions, the credit move line
|
||||
will be skipped for reconciliation. Can be inherited to
|
||||
skip on some conditions. ie: ref or partner_id is empty.
|
||||
"""
|
||||
return not (move_line.get('ref') and
|
||||
move_line.get('partner_id'))
|
||||
|
||||
def _matchers(self, cr, uid, rec, move_line, context=None):
|
||||
return (('partner_id', move_line['partner_id']),
|
||||
('ref', move_line['ref'].lower().strip()))
|
||||
|
||||
def _opposite_matchers(self, cr, uid, rec, move_line, context=None):
|
||||
yield ('partner_id', move_line['partner_id'])
|
||||
if move_line['statement_id']:
|
||||
cr.execute("""SELECT name FROM account_bank_statement
|
||||
WHERE id = %s""", (move_line['statement_id'],))
|
||||
statement_name = cr.fetchone()[0]
|
||||
yield ('ref', statement_name.lower().strip())
|
||||
else:
|
||||
yield ('ref', '')
|
||||
|
||||
# Re-defined for this particular rule; since the commission line is a
|
||||
# credit line inside of the target statement, it should also be considered
|
||||
# as an opposite to be reconciled.
|
||||
def _action_rec(self, cr, uid, rec, context=None):
|
||||
credit_lines = self._query_credit(cr, uid, rec, context=context)
|
||||
debit_lines = self._query_debit(cr, uid, rec, context=context)
|
||||
return self._rec_auto_lines_advanced(
|
||||
cr, uid, rec, credit_lines, credit_lines + debit_lines,
|
||||
context=context)
|
||||
@@ -0,0 +1,46 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Matthieu Dietrich
|
||||
# Copyright 2014 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from itertools import product
|
||||
from openerp.osv import orm
|
||||
|
||||
|
||||
class easy_reconcile_advanced(orm.AbstractModel):
|
||||
|
||||
_inherit = 'easy.reconcile.advanced'
|
||||
|
||||
def _base_columns(self, rec):
|
||||
""" Mandatory columns for move lines queries
|
||||
An extra column aliased as ``key`` should be defined
|
||||
in each query."""
|
||||
aml_cols = (
|
||||
'id',
|
||||
'debit',
|
||||
'credit',
|
||||
'date',
|
||||
'period_id',
|
||||
'ref',
|
||||
'name',
|
||||
'partner_id',
|
||||
'account_id',
|
||||
'move_id',
|
||||
'statement_id')
|
||||
return ["account_move_line.%s" % col for col in aml_cols]
|
||||
37
account_advanced_reconcile_bank_statement/easy_reconcile.py
Normal file
37
account_advanced_reconcile_bank_statement/easy_reconcile.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Romain Deheele
|
||||
# Copyright 2013 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm
|
||||
|
||||
|
||||
class account_easy_reconcile_method(orm.Model):
|
||||
|
||||
_inherit = 'account.easy.reconcile.method'
|
||||
|
||||
def _get_all_rec_method(self, cr, uid, context=None):
|
||||
methods = super(account_easy_reconcile_method, self).\
|
||||
_get_all_rec_method(cr, uid, context=context)
|
||||
methods += [
|
||||
('easy.reconcile.advanced.bank_statement',
|
||||
'Advanced. Partner and Bank Statement'),
|
||||
]
|
||||
return methods
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="0">
|
||||
<record id="view_easy_reconcile_form" model="ir.ui.view">
|
||||
<field name="name">account.easy.reconcile.form</field>
|
||||
<field name="model">account.easy.reconcile</field>
|
||||
<field name="inherit_id" ref="account_easy_reconcile.account_easy_reconcile_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<page name="information" position="inside">
|
||||
<group colspan="2" col="2">
|
||||
<separator colspan="4" string="Advanced. Partner and Bank Statement"/>
|
||||
<label string="Match multiple debit vs multiple credit entries. Allow partial reconciliation.
|
||||
The lines should have the partner, the credit entry reference is matched vs the debit entry bank statement name." colspan="4"/>
|
||||
</group>
|
||||
</page>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,107 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_advanced_reconcile_bank_statement
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-05-27 08:36+0000\n"
|
||||
"PO-Revision-Date: 2014-05-27 08:36+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,filter:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_filter
|
||||
msgid "Filter"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,account_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_account_id
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,partner_ids:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_partner_ids
|
||||
msgid "Restrict on partners"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:account_advanced_reconcile_bank_statement.model_easy_reconcile_advanced_bank_statement
|
||||
#, python-format
|
||||
msgid "easy.reconcile.advanced.bank_statement"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: view:account.easy.reconcile:0
|
||||
msgid "Match multiple debit vs multiple credit entries. Allow partial reconciliation. The lines should have the partner, the credit entry reference is matched vs the debit entry bank statement name."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,journal_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_journal_id
|
||||
msgid "Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,account_profit_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_account_profit_id
|
||||
msgid "Account Profit"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,analytic_account_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_analytic_account_id
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:account_advanced_reconcile_bank_statement.model_account_easy_reconcile_method
|
||||
#, python-format
|
||||
msgid "reconcile method for account_easy_reconcile"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,date_base_on:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_date_base_on
|
||||
msgid "Date of reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: help:easy.reconcile.advanced.bank_statement,analytic_account_id:0
|
||||
msgid "Analytic account for the write-off"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: view:account.easy.reconcile:0
|
||||
msgid "Advanced. Partner and Bank Statement"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:account_advanced_reconcile_bank_statement.model_easy_reconcile_advanced
|
||||
#, python-format
|
||||
msgid "easy.reconcile.advanced"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,account_lost_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_account_lost_id
|
||||
msgid "Account Lost"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,write_off:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_write_off
|
||||
msgid "Write off allowed"
|
||||
msgstr ""
|
||||
|
||||
103
account_advanced_reconcile_bank_statement/i18n/fr.po
Normal file
103
account_advanced_reconcile_bank_statement/i18n/fr.po
Normal file
@@ -0,0 +1,103 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_advanced_reconcile_bank_statement
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-05-27 08:36+0000\n"
|
||||
"PO-Revision-Date: 2014-05-27 08:36+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,filter:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_filter
|
||||
msgid "Filter"
|
||||
msgstr "Filtre"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,account_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_account_id
|
||||
msgid "Account"
|
||||
msgstr "Compte"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,partner_ids:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_partner_ids
|
||||
msgid "Restrict on partners"
|
||||
msgstr "Restriction sur les partenaires"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:account_advanced_reconcile_bank_statement.model_easy_reconcile_advanced_bank_statement
|
||||
#, python-format
|
||||
msgid "easy.reconcile.advanced.bank_statement"
|
||||
msgstr "easy.reconcile.advanced.bank_statement"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: view:account.easy.reconcile:0
|
||||
msgid ""
|
||||
"Match multiple debit vs multiple credit entries. Allow partial "
|
||||
"reconciliation. The lines should have the partner, the credit entry "
|
||||
"reference is matched vs the debit entry bank statement name."
|
||||
msgstr ""
|
||||
"Le lettrage peut s'effectuer sur plusieurs écritures de débit et crédit. Le "
|
||||
"lettrage partiel est autorisé. Les écritures doivent avoir le même "
|
||||
"partenaire et la référence sur les écritures de crédit doit se retrouver
|
||||
"dans le nom du relevé bancaire des écritures de débit."
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,journal_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_journal_id
|
||||
msgid "Journal"
|
||||
msgstr "Journal"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,account_profit_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_account_profit_id
|
||||
msgid "Account Profit"
|
||||
msgstr "Compte de produit"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:account_advanced_reconcile_bank_statement.model_account_easy_reconcile_method
|
||||
#, python-format
|
||||
msgid "reconcile method for account_easy_reconcile"
|
||||
msgstr "Méthode de lettrage pour le module account_easy_reconcile"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,date_base_on:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_date_base_on
|
||||
msgid "Date of reconciliation"
|
||||
msgstr "Date de lettrage"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: view:account.easy.reconcile:0
|
||||
msgid "Advanced. Partner and Bank Statement"
|
||||
msgstr "Avancé. Partenaire et Relevé Bancaire"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:account_advanced_reconcile_bank_statement.model_easy_reconcile_advanced
|
||||
#, python-format
|
||||
msgid "easy.reconcile.advanced"
|
||||
msgstr "easy.reconcile.advanced"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,account_lost_id:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_account_lost_id
|
||||
msgid "Account Lost"
|
||||
msgstr "Compte de charge"
|
||||
|
||||
#. module: account_advanced_reconcile_bank_statement
|
||||
#: field:easy.reconcile.advanced.bank_statement,write_off:0
|
||||
#: model:ir.model.fields,field_description:account_advanced_reconcile_bank_statement.field_easy_reconcile_advanced_bank_statement_write_off
|
||||
msgid "Write off allowed"
|
||||
msgstr "Ecart autorisé"
|
||||
|
||||
Reference in New Issue
Block a user