← Back to team overview

banking-addons-team team mailing list archive

lp:~camptocamp/banking-addons/bank-statement-reconcile-7.0-split-sale-lep into lp:banking-addons/bank-statement-reconcile-7.0

 

Leonardo Pistone @ camptocamp has proposed merging lp:~camptocamp/banking-addons/bank-statement-reconcile-7.0-split-sale-lep into lp:banking-addons/bank-statement-reconcile-7.0.

Commit message:
[mrg] split the module account_statement_base_completion to take out what depends on sale

Requested reviews:
  Banking Addons Core Editors (banking-addons-team)

For more details, see:
https://code.launchpad.net/~camptocamp/banking-addons/bank-statement-reconcile-7.0-split-sale-lep/+merge/197544

Here I split the module account_statement_base_completion to take out what depends on sale.
-- 
https://code.launchpad.net/~camptocamp/banking-addons/bank-statement-reconcile-7.0-split-sale-lep/+merge/197544
Your team Banking Addons Core Editors is requested to review the proposed merge of lp:~camptocamp/banking-addons/bank-statement-reconcile-7.0-split-sale-lep into lp:banking-addons/bank-statement-reconcile-7.0.
=== modified file 'account_statement_base_completion/__openerp__.py'
--- account_statement_base_completion/__openerp__.py	2013-04-05 07:52:53 +0000
+++ account_statement_base_completion/__openerp__.py	2013-12-03 15:12:25 +0000
@@ -35,7 +35,6 @@
 
  1) Match from statement line label (based on partner field 'Bank Statement Label')
  2) Match from statement line label (based on partner name)
- 3) Match from statement line reference (based on SO number)
  3) Match from statement line reference (based on Invoice number)
 
  You can easily override this module and add your own rules in your own one. The basic rules only

=== modified file 'account_statement_base_completion/data.xml'
--- account_statement_base_completion/data.xml	2013-04-24 09:30:08 +0000
+++ account_statement_base_completion/data.xml	2013-12-03 15:12:25 +0000
@@ -14,12 +14,6 @@
          <field name="function_to_call">get_from_label_and_partner_name</field>
      </record>
 
-     <record id="bank_statement_completion_rule_1" model="account.statement.completion.rule">
-          <field name="name">Match from line reference (based on SO number)</field>
-          <field name="sequence">50</field>
-          <field name="function_to_call">get_from_ref_and_so</field>
-      </record>
-
      <record id="bank_statement_completion_rule_4" model="account.statement.completion.rule">
           <field name="name">Match from line reference (based on Invoice number)</field>
           <field name="sequence">40</field>

=== modified file 'account_statement_base_completion/statement.py'
--- account_statement_base_completion/statement.py	2013-10-16 08:58:12 +0000
+++ account_statement_base_completion/statement.py	2013-12-03 15:12:25 +0000
@@ -132,7 +132,6 @@
         return [
             ('get_from_ref_and_invoice', 'From line reference (based on customer invoice number)'),
             ('get_from_ref_and_supplier_invoice', 'From line reference (based on supplier invoice number)'),
-            ('get_from_ref_and_so', 'From line reference (based on SO number)'),
             ('get_from_label_and_partner_field', 'From line label (based on partner field)'),
             ('get_from_label_and_partner_name', 'From line label (based on partner name)')]
 
@@ -233,49 +232,6 @@
         return self._from_invoice(cr, uid, line, 'customer', context=context)
 
     # Should be private but data are initialised with no update XML
-    def get_from_ref_and_so(self, cr, uid, st_line, context=None):
-        """
-        Match the partner based on the SO number and the reference of the statement
-        line. Then, call the generic get_values_for_line method to complete other values.
-        If more than one partner matched, raise the ErrorTooManyPartner error.
-
-        :param int/long st_line: read of the concerned account.bank.statement.line
-        :return:
-            A dict of value that can be passed directly to the write method of
-            the statement line or {}
-           {'partner_id': value,
-            'account_id': value,
-
-            ...}
-        """
-        st_obj = self.pool.get('account.bank.statement.line')
-        res = {}
-        if st_line:
-            so_obj = self.pool.get('sale.order')
-            so_id = so_obj.search(cr,
-                                  uid,
-                                  [('name', '=', st_line['ref'])],
-                                  context=context)
-            if so_id:
-                if so_id and len(so_id) == 1:
-                    so = so_obj.browse(cr, uid, so_id[0], context=context)
-                    res['partner_id'] = so.partner_id.id
-                elif so_id and len(so_id) > 1:
-                    raise ErrorTooManyPartner(_('Line named "%s" (Ref:%s) was matched by more '
-                                                'than one partner while looking on SO by ref.') %
-                                              (st_line['name'], st_line['ref']))
-                st_vals = st_obj.get_values_for_line(cr,
-                                                     uid,
-                                                     profile_id=st_line['profile_id'],
-                                                     master_account_id=st_line['master_account_id'],
-                                                     partner_id=res.get('partner_id', False),
-                                                     line_type='customer',
-                                                     amount=st_line['amount'] if st_line['amount'] else 0.0,
-                                                     context=context)
-                res.update(st_vals)
-        return res
-
-    # Should be private but data are initialised with no update XML
     def get_from_label_and_partner_field(self, cr, uid, st_line, context=None):
         """
         Match the partner based on the label field of the statement line

=== added directory 'account_statement_so_completion'
=== added file 'account_statement_so_completion/__init__.py'
--- account_statement_so_completion/__init__.py	1970-01-01 00:00:00 +0000
+++ account_statement_so_completion/__init__.py	2013-12-03 15:12:25 +0000
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#                                                                             #
+#   Author: Joel Grand-Guillaume
+#   Copyright 2011-2012 Camptocamp SA
+#                                                                             #
+#   Author: Leonardo Pistone <leonardo.pistone@xxxxxxxxxxxxxx>                #
+#   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 . import statement

=== added file 'account_statement_so_completion/__openerp__.py'
--- account_statement_so_completion/__openerp__.py	1970-01-01 00:00:00 +0000
+++ account_statement_so_completion/__openerp__.py	2013-12-03 15:12:25 +0000
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#                                                                             #
+#   Author: Joel Grand-Guillaume
+#   Copyright 2011-2012 Camptocamp SA
+#                                                                             #
+#   Author: Leonardo Pistone <leonardo.pistone@xxxxxxxxxxxxxx>                #
+#   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/>.     #
+#                                                                             #
+###############################################################################
+
+{'name': "Bank statement Sale Order completion",
+ 'version': '0.1',
+ 'author': 'Camptocamp',
+ 'maintainer': 'Camptocamp',
+ 'category': 'Finance',
+ 'complexity': 'easy',
+ 'depends': ['account_statement_base_completion', 'sale'],
+ 'description': """
+ This module improve the module account_statement_base_completion to add
+ support for completion rules based on Sale Orders. This was initially part of
+ the module account_statement_base_completion, but is now separate to keep
+ dependencies separate.
+
+ This module provides the following rule:
+
+  1) Match from statement line reference (based on SO number)
+""",
+ 'website': 'http://www.camptocamp.com',
+ 'init_xml': [],
+ 'update_xml': [
+     'data.xml',
+ ],
+ 'demo_xml': [],
+ 'test': [],
+ 'installable': True,
+ 'images': [],
+ 'auto_install': False,
+ 'license': 'AGPL-3',
+ }

=== added file 'account_statement_so_completion/data.xml'
--- account_statement_so_completion/data.xml	1970-01-01 00:00:00 +0000
+++ account_statement_so_completion/data.xml	2013-12-03 15:12:25 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="1">
+
+        <record id="bank_statement_completion_rule_1" model="account.statement.completion.rule">
+            <field name="name">Match from line reference (based on SO number)</field>
+            <field name="sequence">50</field>
+            <field name="function_to_call">get_from_ref_and_so</field>
+        </record>
+
+    </data>
+</openerp>

=== added file 'account_statement_so_completion/statement.py'
--- account_statement_so_completion/statement.py	1970-01-01 00:00:00 +0000
+++ account_statement_so_completion/statement.py	2013-12-03 15:12:25 +0000
@@ -0,0 +1,98 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#                                                                             #
+#   Author: Joel Grand-Guillaume                                              #
+#   Copyright 2011-2012 Camptocamp SA                                         #
+#                                                                             #
+#   Author: Leonardo Pistone <leonardo.pistone@xxxxxxxxxxxxxx>                #
+#   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 fields, orm
+from tools.translate import _
+
+from openerp.addons.account_statement_base_completion.statement import ErrorTooManyPartner
+
+
+class account_statement_profile(orm.Model):
+
+    _inherit = "account.statement.profile"
+
+    # Should be private but data are initialised with no update XML
+    def get_from_ref_and_so(self, cr, uid, st_line, context=None):
+        """
+        Match the partner based on the SO number and the reference of the
+        statement line. Then, call the generic get_values_for_line method to
+        complete other values. If more than one partner matched, raise the
+        ErrorTooManyPartner error.
+
+        :param int/long st_line: read of the concerned
+        account.bank.statement.line
+
+        :return:
+            A dict of value that can be passed directly to the write method of
+            the statement line or {}
+           {'partner_id': value,
+            'account_id': value,
+
+            ...}
+        """
+        st_obj = self.pool.get('account.bank.statement.line')
+        res = {}
+        if st_line:
+            so_obj = self.pool.get('sale.order')
+            so_id = so_obj.search(cr,
+                                  uid,
+                                  [('name', '=', st_line['ref'])],
+                                  context=context)
+            if so_id:
+                if so_id and len(so_id) == 1:
+                    so = so_obj.browse(cr, uid, so_id[0], context=context)
+                    res['partner_id'] = so.partner_id.id
+                elif so_id and len(so_id) > 1:
+                    raise ErrorTooManyPartner(
+                        _('Line named "%s" (Ref:%s) was matched by more '
+                          'than one partner while looking on SO by ref.') %
+                        (st_line['name'], st_line['ref']))
+                st_vals = st_obj.get_values_for_line(
+                    cr,
+                    uid,
+                    profile_id=st_line['profile_id'],
+                    master_account_id=st_line['master_account_id'],
+                    partner_id=res.get('partner_id', False),
+                    line_type='customer',
+                    amount=st_line['amount'] if st_line['amount'] else 0.0,
+                    context=context)
+                res.update(st_vals)
+        return res
+
+
+class account_statement_completion_rule(orm.Model):
+
+    _name = "account.statement.completion.rule"
+    _inherit = "account.statement.completion.rule"
+
+    def _get_functions(self, cr, uid, context=None):
+        res = super(account_statement_completion_rule, self)._get_functions(
+            cr, uid, context=context)
+        return res.append(
+            ('get_from_ref_and_so', 'From line reference (based on SO number)')
+        )
+
+    _columns = {
+        'function_to_call': fields.selection(_get_functions, 'Method'),
+    }


Follow ups