From f0e85e2c1a3998067c5221bb02ca77481932a704 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 25 Mar 2014 11:46:23 +0100 Subject: [PATCH 1/5] [IMP] Ensure proper migration from older versions --- account_banking/__openerp__.py | 2 +- .../migrations/7.0.0.3/pre-migration.py | 44 +++++++++++++++++++ .../migrations/7.0.0.1.165/pre-migration.py | 3 +- 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 account_banking/migrations/7.0.0.3/pre-migration.py diff --git a/account_banking/__openerp__.py b/account_banking/__openerp__.py index ae6f66bc1..bff6beabc 100644 --- a/account_banking/__openerp__.py +++ b/account_banking/__openerp__.py @@ -26,7 +26,7 @@ { 'name': 'Account Banking', - 'version': '0.2', + 'version': '0.3', 'license': 'AGPL-3', 'author': 'Banking addons community', 'website': 'https://launchpad.net/banking-addons', diff --git a/account_banking/migrations/7.0.0.3/pre-migration.py b/account_banking/migrations/7.0.0.3/pre-migration.py new file mode 100644 index 000000000..dfec20809 --- /dev/null +++ b/account_banking/migrations/7.0.0.3/pre-migration.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2014 Akretion (http://www.akretion.com/) +# @author: Alexis de Lattre +# +# 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 . +# +############################################################################## + +def table_exists(cr, table): + """ Check whether a certain table or view exists """ + cr.execute( + 'SELECT count(relname) FROM pg_class WHERE relname = %s', + (table,)) + return cr.fetchone()[0] == 1 + +def migrate(cr, version): + """ + Migration script for semantic changes in account_banking_payment_export. + Putting the same script in this module for users migrating from 6.1, + before the export module was refactored out. + """ + if not version or not table_exists(cr, 'payment_line'): + return + cr.execute( + "UPDATE payment_line SET communication = communication2, " + "communication2 = null " + "FROM payment_order " + "WHERE payment_line.order_id = payment_order.id " + "AND payment_order.state in ('draft', 'open') " + "AND payment_line.state = 'normal' " + "AND communication2 is not null") diff --git a/account_banking_payment_export/migrations/7.0.0.1.165/pre-migration.py b/account_banking_payment_export/migrations/7.0.0.1.165/pre-migration.py index 91839f15e..a420f05fd 100644 --- a/account_banking_payment_export/migrations/7.0.0.1.165/pre-migration.py +++ b/account_banking_payment_export/migrations/7.0.0.1.165/pre-migration.py @@ -21,6 +21,8 @@ def migrate(cr, version): + if not version: + return cr.execute( "UPDATE payment_line SET communication = communication2, " "communication2 = null " @@ -28,5 +30,4 @@ def migrate(cr, version): "WHERE payment_line.order_id = payment_order.id " "AND payment_order.state in ('draft', 'open') " "AND payment_line.state = 'normal' " - "AND communication is null" "AND communication2 is not null") From 7128b6481bb2b7d8a6bffc1de71e187c448676f7 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 25 Mar 2014 14:21:08 +0100 Subject: [PATCH 2/5] [UPD] Added tests for gathering payment line communication --- .../tests/test_payment_roundtrip.py | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/account_banking_tests/tests/test_payment_roundtrip.py b/account_banking_tests/tests/test_payment_roundtrip.py index 8962df1c4..08004db2a 100644 --- a/account_banking_tests/tests/test_payment_roundtrip.py +++ b/account_banking_tests/tests/test_payment_roundtrip.py @@ -163,6 +163,8 @@ class TestPaymentRoundtrip(SingleTransactionCase): 'price_unit': 100.0, 'quantity': 1, 'account_id': expense_id,})], + 'reference_type': 'none', + 'supplier_invoice_number': 'INV1', } self.invoice_ids = [ invoice_model.create( @@ -171,7 +173,11 @@ class TestPaymentRoundtrip(SingleTransactionCase): })] values.update({ 'partner_id': supplier2, - 'name': 'Purchase 2'}) + 'name': 'Purchase 2', + 'reference_type': 'structured', + 'supplier_invoice_number': 'INV2', + 'reference': 'STR2', + }) self.invoice_ids.append( invoice_model.create( cr, uid, values, context={ @@ -247,6 +253,25 @@ class TestPaymentRoundtrip(SingleTransactionCase): }, context=context) reg('payment.order.create').create_payment( cr, uid, [self.payment_order_create_id], context=context) + + # Check if payment lines are created with the correct reference + self.assertTrue( + reg('payment.line').search( + cr, uid, [ + ('move_line_id.invoice', '=', self.invoice_ids[0]), + ('communication', '=', 'INV1'), ('state', '=', 'normal'), + ], context=context), + 'No payment line created from invoice 1 or with the wrong ' + 'communication') + self.assertTrue( + reg('payment.line').search( + cr, uid, [ + ('move_line_id.invoice', '=', self.invoice_ids[1]), + ('communication', '=', 'STR2'), ('state', '=', 'structured'), + ], context=context), + 'No payment line created from invoice 2 or with the wrong ' + 'communication') + wf_service = netsvc.LocalService('workflow') wf_service.trg_validate( uid, 'payment.order', self.payment_order_id, 'open', cr) From f7a7a30f5cc7d868e56dffcf85910d4a933f983c Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 25 Mar 2014 14:23:51 +0100 Subject: [PATCH 3/5] [FIX] PEP8 --- account_banking_tests/tests/test_payment_roundtrip.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/account_banking_tests/tests/test_payment_roundtrip.py b/account_banking_tests/tests/test_payment_roundtrip.py index 08004db2a..a3c8223f4 100644 --- a/account_banking_tests/tests/test_payment_roundtrip.py +++ b/account_banking_tests/tests/test_payment_roundtrip.py @@ -259,7 +259,8 @@ class TestPaymentRoundtrip(SingleTransactionCase): reg('payment.line').search( cr, uid, [ ('move_line_id.invoice', '=', self.invoice_ids[0]), - ('communication', '=', 'INV1'), ('state', '=', 'normal'), + ('communication', '=', 'INV1'), + ('state', '=', 'normal'), ], context=context), 'No payment line created from invoice 1 or with the wrong ' 'communication') @@ -267,11 +268,12 @@ class TestPaymentRoundtrip(SingleTransactionCase): reg('payment.line').search( cr, uid, [ ('move_line_id.invoice', '=', self.invoice_ids[1]), - ('communication', '=', 'STR2'), ('state', '=', 'structured'), + ('communication', '=', 'STR2'), + ('state', '=', 'structured'), ], context=context), 'No payment line created from invoice 2 or with the wrong ' 'communication') - + wf_service = netsvc.LocalService('workflow') wf_service.trg_validate( uid, 'payment.order', self.payment_order_id, 'open', cr) From a5e5203bd0501cc55ec401703d679069cfdd6a1b Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 25 Mar 2014 14:44:35 +0100 Subject: [PATCH 4/5] [RFR] Don't enlarge largely unused additional communication2 field --- account_banking_payment/model/payment_line.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/account_banking_payment/model/payment_line.py b/account_banking_payment/model/payment_line.py index a4ddc1c0d..1cf14c614 100644 --- a/account_banking_payment/model/payment_line.py +++ b/account_banking_payment/model/payment_line.py @@ -36,15 +36,9 @@ class payment_line(orm.Model): ''' _inherit = 'payment.line' _columns = { - # New fields 'msg': fields.char('Message', size=255, required=False, readonly=True), 'date_done': fields.date( 'Date Confirmed', select=True, readonly=True), - # Communication2: enlarge to 128 - 'communication2': fields.char( - 'Communication 2', size=128, - help='The successor message of Communication.', - ), 'transit_move_line_id': fields.many2one( # this line is part of the credit side of move 2a # from the documentation From 4b3b06dd4fb9b67027e31ba61af22d35eef6d131 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 25 Mar 2014 14:49:23 +0100 Subject: [PATCH 5/5] [FIX] Adapt module dependencies to refactoring of payment functionality. This module actually depends on account_banking integration with payments. --- account_banking_tests/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_banking_tests/__openerp__.py b/account_banking_tests/__openerp__.py index 04e3fdd70..47194935a 100644 --- a/account_banking_tests/__openerp__.py +++ b/account_banking_tests/__openerp__.py @@ -27,7 +27,7 @@ 'category': 'Banking addons', 'depends': [ 'account_accountant', - 'account_banking', + 'account_banking_payment', 'account_banking_sepa_credit_transfer', ], 'description': '''