← Back to team overview

banking-addons-team team mailing list archive

[Merge] lp:~camptocamp/banking-addons/bank-statement-reconcile-7.0_bank_statement_auto_reconcile_mdh into lp:banking-addons/bank-statement-reconcile-7.0

 

Matthieu Dietrich @ camptocamp has proposed merging lp:~camptocamp/banking-addons/bank-statement-reconcile-7.0_bank_statement_auto_reconcile_mdh into lp:banking-addons/bank-statement-reconcile-7.0.

Commit message:
[ADD] new reconciliation rule using bank statements

Requested reviews:
  Joël Grand-Guillaume @ camptocamp (jgrandguillaume-c2c)

For more details, see:
https://code.launchpad.net/~camptocamp/banking-addons/bank-statement-reconcile-7.0_bank_statement_auto_reconcile_mdh/+merge/221093

A new rule for automatic reconciliation: this allows for credit lines to use another bank statement as reference, and do a reconciliation with all its lines (debit AND credit, as the commission line can be created in that statement as well).

The main goal is to allow to create "bank lines" for when the payment for credit cards arrives, and reconcile it with a previous bank statement import of those cards.
-- 
https://code.launchpad.net/~camptocamp/banking-addons/bank-statement-reconcile-7.0_bank_statement_auto_reconcile_mdh/+merge/221093
Your team Banking Addons Core Editors is subscribed to branch lp:banking-addons/bank-statement-reconcile-7.0.
=== added directory 'account_advanced_reconcile_bank_statement'
=== added file 'account_advanced_reconcile_bank_statement/__init__.py'
--- account_advanced_reconcile_bank_statement/__init__.py	1970-01-01 00:00:00 +0000
+++ account_advanced_reconcile_bank_statement/__init__.py	2014-05-27 14:07:05 +0000
@@ -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

=== added file 'account_advanced_reconcile_bank_statement/__openerp__.py'
--- account_advanced_reconcile_bank_statement/__openerp__.py	1970-01-01 00:00:00 +0000
+++ account_advanced_reconcile_bank_statement/__openerp__.py	2014-05-27 14:07:05 +0000
@@ -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:

=== added file 'account_advanced_reconcile_bank_statement/advanced_reconciliation.py'
--- account_advanced_reconcile_bank_statement/advanced_reconciliation.py	1970-01-01 00:00:00 +0000
+++ account_advanced_reconcile_bank_statement/advanced_reconciliation.py	2014-05-27 14:07:05 +0000
@@ -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)

=== added file 'account_advanced_reconcile_bank_statement/base_advanced_reconciliation.py'
--- account_advanced_reconcile_bank_statement/base_advanced_reconciliation.py	1970-01-01 00:00:00 +0000
+++ account_advanced_reconcile_bank_statement/base_advanced_reconciliation.py	2014-05-27 14:07:05 +0000
@@ -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]

=== added file 'account_advanced_reconcile_bank_statement/easy_reconcile.py'
--- account_advanced_reconcile_bank_statement/easy_reconcile.py	1970-01-01 00:00:00 +0000
+++ account_advanced_reconcile_bank_statement/easy_reconcile.py	2014-05-27 14:07:05 +0000
@@ -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
+

=== added file 'account_advanced_reconcile_bank_statement/easy_reconcile_view.xml'
--- account_advanced_reconcile_bank_statement/easy_reconcile_view.xml	1970-01-01 00:00:00 +0000
+++ account_advanced_reconcile_bank_statement/easy_reconcile_view.xml	2014-05-27 14:07:05 +0000
@@ -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>

=== added directory 'account_advanced_reconcile_bank_statement/i18n'
=== added file 'account_advanced_reconcile_bank_statement/i18n/account_advanced_reconcile_bank_statement.po'
--- account_advanced_reconcile_bank_statement/i18n/account_advanced_reconcile_bank_statement.po	1970-01-01 00:00:00 +0000
+++ account_advanced_reconcile_bank_statement/i18n/account_advanced_reconcile_bank_statement.po	2014-05-27 14:07:05 +0000
@@ -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 ""
+

=== added file 'account_advanced_reconcile_bank_statement/i18n/fr.po'
--- account_advanced_reconcile_bank_statement/i18n/fr.po	1970-01-01 00:00:00 +0000
+++ account_advanced_reconcile_bank_statement/i18n/fr.po	2014-05-27 14:07:05 +0000
@@ -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é"
+


Follow ups