From 412df159461f6e1c7dba7753e0672a8e8a36ac1a Mon Sep 17 00:00:00 2001 From: Ruchir Shukla Date: Sun, 26 Jan 2014 17:46:02 +0530 Subject: [PATCH 01/20] add attrs for account_id in transaction line --- account_banking/account_banking_view.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/account_banking/account_banking_view.xml b/account_banking/account_banking_view.xml index dcb931700..1671d27e8 100644 --- a/account_banking/account_banking_view.xml +++ b/account_banking/account_banking_view.xml @@ -248,7 +248,10 @@ position="after"> - + + {'readonly': [('state', '!=', 'draft'), ('match_type', 'in', ('move', 'payment'))]} + @@ -336,7 +339,8 @@ - + From 7d28a6e5244d165426fdd4888ec511583036f8da Mon Sep 17 00:00:00 2001 From: Ruchir Shukla Date: Sun, 26 Jan 2014 18:06:41 +0530 Subject: [PATCH 02/20] add or condition --- account_banking/account_banking_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_banking/account_banking_view.xml b/account_banking/account_banking_view.xml index 1671d27e8..c2164e833 100644 --- a/account_banking/account_banking_view.xml +++ b/account_banking/account_banking_view.xml @@ -250,7 +250,7 @@ - {'readonly': [('state', '!=', 'draft'), ('match_type', 'in', ('move', 'payment'))]} + {'readonly': ['|', ('state', '!=', 'draft'), ('match_type', 'in', ('move', 'payment'))]} From feef47f342a7592cc65af0c42b0f6a270e0593bb Mon Sep 17 00:00:00 2001 From: Ruchir Shukla Date: Mon, 27 Jan 2014 14:02:22 +0530 Subject: [PATCH 03/20] fix the condition --- account_banking/account_banking_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_banking/account_banking_view.xml b/account_banking/account_banking_view.xml index c2164e833..7eb57ff46 100644 --- a/account_banking/account_banking_view.xml +++ b/account_banking/account_banking_view.xml @@ -250,7 +250,7 @@ - {'readonly': ['|', ('state', '!=', 'draft'), ('match_type', 'in', ('move', 'payment'))]} + {'readonly': ['|', ('state', '!=', 'draft'), ('match_type', '!=', '')]} From dd364b6d6fe31fc84d338942c3bbc1b74b090b0c Mon Sep 17 00:00:00 2001 From: Ruchir Shukla Date: Mon, 27 Jan 2014 14:19:25 +0530 Subject: [PATCH 04/20] fix condition --- account_banking/account_banking_view.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/account_banking/account_banking_view.xml b/account_banking/account_banking_view.xml index 7eb57ff46..b948093a8 100644 --- a/account_banking/account_banking_view.xml +++ b/account_banking/account_banking_view.xml @@ -95,7 +95,7 @@ action="action_account_banking_journals" sequence="20" /> - + account.banking.imported.file.form @@ -221,7 +221,7 @@ @@ -339,8 +339,8 @@ - + From 91d229654514d0d4d5c29fef0c6752d59c96a7d4 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Mon, 3 Feb 2014 14:27:31 +0100 Subject: [PATCH 05/20] [IMP] Update coding standards and version of shortcut module [IMP] Add explaining comment for recent change --- account_banking_payment/model/payment_order_create.py | 1 + account_payment_shortcut/__init__.py | 2 +- account_payment_shortcut/__openerp__.py | 2 +- account_payment_shortcut/payment_order.py | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/account_banking_payment/model/payment_order_create.py b/account_banking_payment/model/payment_order_create.py index a3d1ed9b0..32d136403 100644 --- a/account_banking_payment/model/payment_order_create.py +++ b/account_banking_payment/model/payment_order_create.py @@ -194,6 +194,7 @@ class payment_order_create(orm.TransientModel): or line.journal_id.currency.id or line.journal_id.company_id.currency_id.id), }, context=context) + # Force reload of payment order view as a workaround for lp:1155525 return {'name': _('Payment Orders'), 'context': context, 'view_type': 'form', diff --git a/account_payment_shortcut/__init__.py b/account_payment_shortcut/__init__.py index e1873cda0..c9dbb3cf6 100644 --- a/account_payment_shortcut/__init__.py +++ b/account_payment_shortcut/__init__.py @@ -1,2 +1,2 @@ # -*- coding: utf-8 -*- -import payment_order +from . import payment_order diff --git a/account_payment_shortcut/__openerp__.py b/account_payment_shortcut/__openerp__.py index 830e37931..30e3acc72 100644 --- a/account_payment_shortcut/__openerp__.py +++ b/account_payment_shortcut/__openerp__.py @@ -20,7 +20,7 @@ ############################################################################## { 'name': 'Account Payment Invoice Selection Shortcut', - 'version': '6.1.1.134', + 'version': '1.134', 'license': 'AGPL-3', 'author': 'Smile / Therp BV', 'website': 'https://launchpad.net/banking-addons', diff --git a/account_payment_shortcut/payment_order.py b/account_payment_shortcut/payment_order.py index 68523325d..93dfb125b 100644 --- a/account_payment_shortcut/payment_order.py +++ b/account_payment_shortcut/payment_order.py @@ -22,7 +22,7 @@ # ############################################################################## -from osv import orm +from openerp.osv import orm class payment_order_create(orm.TransientModel): _inherit = 'payment.order.create' From 21d7bebba7422b8fa821665f062e4c35b137f2d7 Mon Sep 17 00:00:00 2001 From: "Ignacio Ibeas - Acysos S.L." Date: Thu, 13 Feb 2014 17:21:09 +0100 Subject: [PATCH 06/20] [FIX] account_banking_pain_base: support party identifier for Spain --- account_banking_pain_base/company.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/account_banking_pain_base/company.py b/account_banking_pain_base/company.py index 2c238cc6a..cccafb7a8 100644 --- a/account_banking_pain_base/company.py +++ b/account_banking_pain_base/company.py @@ -47,6 +47,8 @@ class res_company(orm.Model): party_identifier = False if company_vat and company_vat[0:2].upper() in ['BE']: party_identifier = company_vat[2:].replace(' ', '') + if company_vat and company_vat[0:2].upper() in ['ES']: + party_identifier = company.sepa_creditor_identifier return party_identifier def _initiating_party_issuer_default(self, cr, uid, context=None): From 82d857e32f6f87ae4fc2a7ff75aea4f3af9050d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sun, 16 Feb 2014 14:55:30 +0100 Subject: [PATCH 07/20] [FIX] trivial bug fix --- account_banking_pain_base/banking_export_pain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_banking_pain_base/banking_export_pain.py b/account_banking_pain_base/banking_export_pain.py index 5a063c5ee..279dc5f5a 100644 --- a/account_banking_pain_base/banking_export_pain.py +++ b/account_banking_pain_base/banking_export_pain.py @@ -295,7 +295,7 @@ class banking_export_pain(orm.AbstractModel): party_agent_bic = etree.SubElement( party_agent_institution, gen_args.get('bic_xml_tag')) party_agent_bic.text = bic - except except_orm: + except orm.except_orm: if order == 'C': if iban[0:2] != gen_args['initiating_party_country_code']: raise orm.except_orm( From 80202a5c650d1a4d48fa8bbac6f70c21ec1e66a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sun, 16 Feb 2014 14:56:24 +0100 Subject: [PATCH 08/20] [IMP] move SEPA direct debit menu entries to a menu that does not depend on the core account_banking --- account_banking_sepa_direct_debit/sdd_mandate_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_banking_sepa_direct_debit/sdd_mandate_view.xml b/account_banking_sepa_direct_debit/sdd_mandate_view.xml index d86f74f5b..409919dc5 100644 --- a/account_banking_sepa_direct_debit/sdd_mandate_view.xml +++ b/account_banking_sepa_direct_debit/sdd_mandate_view.xml @@ -97,7 +97,7 @@ From da5f663d2fe9edc4b6c87d20b1639339642d9a54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sun, 16 Feb 2014 14:59:11 +0100 Subject: [PATCH 09/20] [FIX] do not auto_install account_banking_payment_export --- account_banking_payment_export/__openerp__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/account_banking_payment_export/__openerp__.py b/account_banking_payment_export/__openerp__.py index 8640f5bb3..f745f9690 100644 --- a/account_banking_payment_export/__openerp__.py +++ b/account_banking_payment_export/__openerp__.py @@ -3,7 +3,7 @@ # # Copyright (C) 2009 EduSense BV (). # (C) 2011 - 2013 Therp BV (). -# +# # All other contributions are (C) by their respective contributors # # All Rights Reserved @@ -55,7 +55,7 @@ 'description': ''' Infrastructure to export payment orders. - This technical module provides the base infrastructure to export + This technical module provides the base infrastructure to export payment orders for electronic banking. It provides the following technical features: * a new payment.mode.type model @@ -64,6 +64,5 @@ * the "make payment" button launches a wizard depending on the payment.mode.type * a manual payment mode type is provided as an example, with a default "do nothing" wizard ''', - 'auto_install': True, 'installable': True, } From 9fc12b5ca84679ea9ecbe109fc39e280fdea672a Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sun, 16 Feb 2014 15:01:09 +0100 Subject: [PATCH 10/20] [IMP] Add demo data --- account_banking_payment_export/__openerp__.py | 1 + .../demo/banking_demo.xml | 43 +++++++++++++++++++ .../__openerp__.py | 1 + .../sepa_credit_transfer_demo.xml | 15 +++++++ .../__openerp__.py | 1 + .../data/payment_type_sdd.xml | 4 +- .../sepa_direct_debit_demo.xml | 27 ++++++++++++ 7 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 account_banking_payment_export/demo/banking_demo.xml create mode 100644 account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml create mode 100644 account_banking_sepa_direct_debit/sepa_direct_debit_demo.xml diff --git a/account_banking_payment_export/__openerp__.py b/account_banking_payment_export/__openerp__.py index f745f9690..eb81771e9 100644 --- a/account_banking_payment_export/__openerp__.py +++ b/account_banking_payment_export/__openerp__.py @@ -52,6 +52,7 @@ 'data/payment_mode_type.xml', 'security/ir.model.access.csv', ], + 'demo': ['demo/banking_demo.xml'], 'description': ''' Infrastructure to export payment orders. diff --git a/account_banking_payment_export/demo/banking_demo.xml b/account_banking_payment_export/demo/banking_demo.xml new file mode 100644 index 000000000..1b220f072 --- /dev/null +++ b/account_banking_payment_export/demo/banking_demo.xml @@ -0,0 +1,43 @@ + + + + + + + Fortuneo Banque + FTNOFRP1XXX + 26 avenue des Champs Elysées + 75008 + Paris + + + + + La Banque Postale + PSSTFRPPXXX + 115 rue de Sèvres + 75007 + Paris + + + + + FR76 4242 4242 4242 4242 4242 424 + iban + + + La Banque Postale + PSSTFRPPXXX + + + + FR66 1212 1212 1212 1212 1212 121 + iban + + + Fortuneo Banque + FTNOFRP1XXX + + + + diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py index 762ede89e..9b0521aea 100644 --- a/account_banking_sepa_credit_transfer/__openerp__.py +++ b/account_banking_sepa_credit_transfer/__openerp__.py @@ -36,6 +36,7 @@ 'data/payment_type_sepa_sct.xml', 'security/ir.model.access.csv', ], + 'demo': ['sepa_credit_transfer_demo.xml'], 'description': ''' Module to export payment orders in SEPA XML file format. diff --git a/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml b/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml new file mode 100644 index 000000000..77abf1b34 --- /dev/null +++ b/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml @@ -0,0 +1,15 @@ + + + + + + + SEPA Credit Transfer La Banque Postale + + + + + + + + diff --git a/account_banking_sepa_direct_debit/__openerp__.py b/account_banking_sepa_direct_debit/__openerp__.py index 95ac05413..cd603fc03 100644 --- a/account_banking_sepa_direct_debit/__openerp__.py +++ b/account_banking_sepa_direct_debit/__openerp__.py @@ -44,6 +44,7 @@ 'data/mandate_reference_sequence.xml', 'security/ir.model.access.csv', ], + 'demo': ['sepa_direct_debit_demo.xml'], 'description': ''' Module to export direct debit payment orders in SEPA XML file format. diff --git a/account_banking_sepa_direct_debit/data/payment_type_sdd.xml b/account_banking_sepa_direct_debit/data/payment_type_sdd.xml index fcc742531..a17b3b21c 100644 --- a/account_banking_sepa_direct_debit/data/payment_type_sdd.xml +++ b/account_banking_sepa_direct_debit/data/payment_type_sdd.xml @@ -1,9 +1,8 @@ - + - SEPA Direct Debit v02 (recommended) pain.008.001.02 @@ -32,6 +31,5 @@ - diff --git a/account_banking_sepa_direct_debit/sepa_direct_debit_demo.xml b/account_banking_sepa_direct_debit/sepa_direct_debit_demo.xml new file mode 100644 index 000000000..220261088 --- /dev/null +++ b/account_banking_sepa_direct_debit/sepa_direct_debit_demo.xml @@ -0,0 +1,27 @@ + + + + + + + SEPA Direct Debit La Banque Postale + + + + + + + + FR78ZZZ424242 + + + + + recurrent + first + 2014-02-01 + valid + + + + From 9ca27914c387856a9cbdc44959195d7b260e37cb Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sun, 16 Feb 2014 15:03:28 +0100 Subject: [PATCH 11/20] [FIX] ALlow payment of customer refunds --- .../model/payment_order_create.py | 2 +- .../model/__init__.py | 3 +- .../model/account_move_line.py | 98 +++++++++++++++++++ .../model/account_move_line.py | 2 +- 4 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 account_banking_payment_export/model/account_move_line.py diff --git a/account_banking_payment/model/payment_order_create.py b/account_banking_payment/model/payment_order_create.py index a3d1ed9b0..33c10ded1 100644 --- a/account_banking_payment/model/payment_order_create.py +++ b/account_banking_payment/model/payment_order_create.py @@ -34,7 +34,7 @@ class payment_order_create(orm.TransientModel): self, cr, uid, payment_order, domain, context=None): if payment_order.payment_order_type == 'payment': domain += [ - ('account_id.type', '=', 'payable'), + ('account_id.type', 'in', ('payable', 'receivable')), ('amount_to_pay', '>', 0) ] return True diff --git a/account_banking_payment_export/model/__init__.py b/account_banking_payment_export/model/__init__.py index 5c7e00141..ea50d43a4 100644 --- a/account_banking_payment_export/model/__init__.py +++ b/account_banking_payment_export/model/__init__.py @@ -1,5 +1,6 @@ +from . import account_move_line from . import account_payment from . import bank_payment_manual from . import payment_mode from . import payment_mode_type -from . import payment_order_create \ No newline at end of file +from . import payment_order_create diff --git a/account_banking_payment_export/model/account_move_line.py b/account_banking_payment_export/model/account_move_line.py new file mode 100644 index 000000000..67c8b849d --- /dev/null +++ b/account_banking_payment_export/model/account_move_line.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2004-2014 OpenERP S.A. (http://www.openerp.com/) +# (C) 2014 Akretion (http://www.akretion.com/) +# +# 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 . +# +############################################################################## + +from openerp.osv import orm, fields +from operator import itemgetter + + +# All the code below aims at fixing one small issue in _to_pay_search() +# But _to_pay_search() is the search function of the field 'amount_to_pay' +# which is a field.function and these functions are not inheritable in OpenERP. +# So we have to inherit the field 'amount_to_pay' and duplicate the related +# functions +# If the patch that I proposed in this bug report +# https://bugs.launchpad.net/openobject-addons/+bug/1275478 +# is integrated in addons/account_payment, then we will be able to remove this +# file. -- Alexis de Lattre +class account_move_line(orm.Model): + _inherit = 'account.move.line' + + def amount_to_pay(self, cr, uid, ids, name, arg=None, context=None): + """ Return the amount still to pay regarding all the payemnt orders + (excepting cancelled orders)""" + if not ids: + return {} + cr.execute("""SELECT ml.id, + CASE WHEN ml.amount_currency < 0 + THEN - ml.amount_currency + ELSE ml.credit + END - + (SELECT coalesce(sum(amount_currency),0) + FROM payment_line pl + INNER JOIN payment_order po + ON (pl.order_id = po.id) + WHERE move_line_id = ml.id + AND po.state != 'cancel') AS amount + FROM account_move_line ml + WHERE id IN %s""", (tuple(ids),)) + r = dict(cr.fetchall()) + return r + + def _to_pay_search(self, cr, uid, obj, name, args, context=None): + if not args: + return [] + line_obj = self.pool.get('account.move.line') + query = line_obj._query_get(cr, uid, context={}) + where = ' and '.join(map(lambda x: '''(SELECT + CASE WHEN l.amount_currency < 0 + THEN - l.amount_currency + ELSE l.credit + END - coalesce(sum(pl.amount_currency), 0) + FROM payment_line pl + INNER JOIN payment_order po ON (pl.order_id = po.id) + WHERE move_line_id = l.id + AND po.state != 'cancel' + ) %(operator)s %%s ''' % {'operator': x[1]}, args)) + sql_args = tuple(map(itemgetter(2), args)) + + cr.execute(('''SELECT id + FROM account_move_line l + WHERE account_id IN (select id + FROM account_account + WHERE type in %s AND active) + AND reconcile_id IS null + AND credit > 0 + AND ''' + where + ' and ' + query), + (('payable', 'receivable'),)+sql_args ) + # The patch we have compared to the original function in + # addons/account_payment is just above : + # original code : type = 'payable' + # fixed code : type in ('payable', 'receivable') + + res = cr.fetchall() + if not res: + return [('id', '=', '0')] + return [('id', 'in', map(lambda x:x[0], res))] + + _columns = { + 'amount_to_pay': fields.function(amount_to_pay, + type='float', string='Amount to pay', fnct_search=_to_pay_search), + } diff --git a/account_direct_debit/model/account_move_line.py b/account_direct_debit/model/account_move_line.py index a90c2945a..d71f2f4e2 100644 --- a/account_direct_debit/model/account_move_line.py +++ b/account_direct_debit/model/account_move_line.py @@ -27,7 +27,7 @@ class account_move_line(orm.Model): _inherit = "account.move.line" def amount_to_receive(self, cr, uid, ids, name, arg={}, context=None): - """ + """ Return the amount still to receive regarding all the debit orders (excepting canceled orders). This is the reverse from amount_to_pay() in From e2be1a6e0d97d2ce20100cd6c6765c48d802befd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sun, 16 Feb 2014 17:13:15 +0100 Subject: [PATCH 12/20] [IMP] refactoring in order to use direct debit independently of bank statement import In a nutshell, this commit - moves payment_order_type (payment|debit) to account_banking_payment_export - makes payment_order_type visible in account_direct_debit - make direct_debit depend on account_banking_payment_export --- account_banking_payment/__openerp__.py | 3 +- account_banking_payment/model/__init__.py | 1 - .../model/account_payment.py | 9 - account_banking_payment/model/payment_mode.py | 4 - .../model/payment_mode_type.py | 41 ---- .../model/payment_order_create.py | 176 +---------------- account_banking_payment/view/payment_mode.xml | 1 - account_banking_payment_export/__openerp__.py | 5 + .../model/account_payment.py | 14 +- .../model/payment_mode.py | 4 + .../model/payment_mode_type.py | 12 +- .../model/payment_order_create.py | 187 +++++++++++++++--- account_banking_tests/__openerp__.py | 1 - account_direct_debit/__openerp__.py | 4 +- .../model/account_move_line.py | 6 +- account_direct_debit/view/payment_mode.xml | 20 ++ .../view/payment_mode_type.xml | 3 + 17 files changed, 232 insertions(+), 259 deletions(-) delete mode 100644 account_banking_payment/model/payment_mode_type.py create mode 100644 account_direct_debit/view/payment_mode.xml rename {account_banking_payment => account_direct_debit}/view/payment_mode_type.xml (83%) diff --git a/account_banking_payment/__openerp__.py b/account_banking_payment/__openerp__.py index 033485126..7ff0465f0 100644 --- a/account_banking_payment/__openerp__.py +++ b/account_banking_payment/__openerp__.py @@ -38,12 +38,11 @@ 'view/account_payment.xml', 'view/banking_transaction_wizard.xml', 'view/payment_mode.xml', - 'view/payment_mode_type.xml', 'view/payment_order_create_view.xml', 'workflow/account_payment.xml', ], 'description': ''' - This addon adds payment infrastructure to the Banking Addons. + This addon adds payment reconciliation infrastructure to the Banking Addons. * Extends payments for digital banking: + Adapted workflow in payments to reflect banking operations diff --git a/account_banking_payment/model/__init__.py b/account_banking_payment/model/__init__.py index cf509d816..60600f542 100644 --- a/account_banking_payment/model/__init__.py +++ b/account_banking_payment/model/__init__.py @@ -1,6 +1,5 @@ import account_payment import payment_line -import payment_mode_type import payment_mode import payment_order_create import banking_import_transaction diff --git a/account_banking_payment/model/account_payment.py b/account_banking_payment/model/account_payment.py index bfe33fb2f..0f4763af3 100644 --- a/account_banking_payment/model/account_payment.py +++ b/account_banking_payment/model/account_payment.py @@ -104,18 +104,9 @@ class payment_order(orm.Model): "execution." ) ), - 'payment_order_type': fields.selection( - [('payment', 'Payment'),('debit', 'Direct debit')], - 'Payment order type', required=True, - readonly=True, states={'draft': [('readonly', False)]}, - ), 'date_sent': fields.date('Send date', readonly=True), } - _defaults = { - 'payment_order_type': 'payment', - } - def _write_payment_lines(self, cr, uid, ids, **kwargs): ''' ORM method for setting attributes of corresponding payment.line objects. diff --git a/account_banking_payment/model/payment_mode.py b/account_banking_payment/model/payment_mode.py index 31e1cb65b..7a3e1be98 100644 --- a/account_banking_payment/model/payment_mode.py +++ b/account_banking_payment/model/payment_mode.py @@ -49,8 +49,4 @@ class payment_mode(orm.Model): help=('Limit selected invoices to invoices with these payment ' 'terms') ), - 'payment_order_type': fields.related( - 'type', 'payment_order_type', readonly=True, type='selection', - selection=[('payment', 'Payment'), ('debit', 'Direct debit')], - string="Payment Order Type"), } diff --git a/account_banking_payment/model/payment_mode_type.py b/account_banking_payment/model/payment_mode_type.py deleted file mode 100644 index 572cce869..000000000 --- a/account_banking_payment/model/payment_mode_type.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# 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 . -# -############################################################################## - -from openerp.osv import orm, fields - - -class payment_mode_type(orm.Model): - _inherit = 'payment.mode.type' - - _columns = { - 'payment_order_type': fields.selection( - [('payment', 'Payment'),('debit', 'Direct debit')], - 'Payment order type', required=True, - ), - } - - _defaults = { - 'payment_order_type': 'payment', - } diff --git a/account_banking_payment/model/payment_order_create.py b/account_banking_payment/model/payment_order_create.py index 33c10ded1..b2b339374 100644 --- a/account_banking_payment/model/payment_order_create.py +++ b/account_banking_payment/model/payment_order_create.py @@ -3,6 +3,7 @@ # # Copyright (C) 2009 EduSense BV (). # (C) 2011 - 2013 Therp BV (). +# (C) 2014 ACSONE SA/NV (). # # All other contributions are (C) by their respective contributors # @@ -23,8 +24,7 @@ # ############################################################################## -from openerp.osv import orm, fields -from openerp.tools.translate import _ +from openerp.osv import orm class payment_order_create(orm.TransientModel): @@ -32,173 +32,13 @@ class payment_order_create(orm.TransientModel): def extend_payment_order_domain( self, cr, uid, payment_order, domain, context=None): - if payment_order.payment_order_type == 'payment': - domain += [ - ('account_id.type', 'in', ('payable', 'receivable')), - ('amount_to_pay', '>', 0) - ] - return True - - def search_entries(self, cr, uid, ids, context=None): - """ - This method taken from account_payment module. - We adapt the domain based on the payment_order_type - """ - line_obj = self.pool.get('account.move.line') - mod_obj = self.pool.get('ir.model.data') - if context is None: - context = {} - data = self.read(cr, uid, ids, ['duedate'], context=context)[0] - search_due_date = data['duedate'] - - ### start account_banking_payment ### - payment = self.pool.get('payment.order').browse( - cr, uid, context['active_id'], context=context) - # Search for move line to pay: - domain = [ - ('move_id.state', '=', 'posted'), - ('reconcile_id', '=', False), - ('company_id', '=', payment.mode.company_id.id), - ] + super(self, payment_order_create).extend_payment_order_domain( + cr, uid, payment_order, domain, context=context) # apply payment term filter - if payment.mode.payment_term_ids: + if payment_order.mode.payment_term_ids: domain += [ - ('invoice.payment_term', 'in', - [term.id for term in payment.mode.payment_term_ids] + ('invoice.payment_term', 'in', + [term.id for term in payment_order.mode.payment_term_ids] ) ] - self.extend_payment_order_domain( - cr, uid, payment, domain, context=context) - ### end account_direct_debit ### - - domain = domain + [ - '|', ('date_maturity', '<=', search_due_date), - ('date_maturity', '=', False) - ] - line_ids = line_obj.search(cr, uid, domain, context=context) - context.update({'line_ids': line_ids}) - model_data_ids = mod_obj.search( - cr, uid,[ - ('model', '=', 'ir.ui.view'), - ('name', '=', 'view_create_payment_order_lines')], - context=context) - resource_id = mod_obj.read( - cr, uid, model_data_ids, fields=['res_id'], - context=context)[0]['res_id'] - return {'name': _('Entry Lines'), - 'context': context, - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'payment.order.create', - 'views': [(resource_id, 'form')], - 'type': 'ir.actions.act_window', - 'target': 'new', - } - - def create_payment(self, cr, uid, ids, context=None): - ''' - This method is a slightly modified version of the existing method on this - model in account_payment. - - pass the payment mode to line2bank() - - allow invoices to create influence on the payment process: not only 'Free' - references are allowed, but others as well - - check date_to_pay is not in the past. - ''' - - order_obj = self.pool.get('payment.order') - line_obj = self.pool.get('account.move.line') - payment_obj = self.pool.get('payment.line') - if context is None: - context = {} - data = self.read(cr, uid, ids, [], context=context)[0] - line_ids = data['entries'] - if not line_ids: - return {'type': 'ir.actions.act_window_close'} - - payment = order_obj.browse( - cr, uid, context['active_id'], context=context) - ### account banking - # t = None - # line2bank = line_obj.line2bank(cr, uid, line_ids, t, context) - line2bank = line_obj.line2bank( - cr, uid, line_ids, payment.mode.id, context) - _today = fields.date.context_today(self, cr, uid, context=context) - ### end account banking - - ## Finally populate the current payment with new lines: - for line in line_obj.browse(cr, uid, line_ids, context=context): - if payment.date_prefered == "now": - #no payment date => immediate payment - date_to_pay = False - elif payment.date_prefered == 'due': - ### account_banking - # date_to_pay = line.date_maturity - date_to_pay = ( - line.date_maturity - if line.date_maturity and line.date_maturity > _today - else False) - ### end account banking - elif payment.date_prefered == 'fixed': - ### account_banking - # date_to_pay = payment.date_scheduled - date_to_pay = ( - payment.date_scheduled - if payment.date_scheduled and payment.date_scheduled > _today - else False) - ### end account banking - - ### account_banking - state = communication2 = False - communication = line.ref or '/' - if line.invoice: - if line.invoice.type in ('in_invoice', 'in_refund'): - if line.invoice.reference_type == 'structured': - state = 'structured' - communication = line.invoice.reference - else: - state = 'normal' - communication2 = line.invoice.reference - else: - # Make sure that the communication includes the - # customer invoice number (in the case of debit order) - communication = line.invoice.number.replace('/', '') - state = 'structured' - if line.invoice.number != line.ref: - communication2 = line.ref - else: - state = 'normal' - communication2 = line.ref - - # support debit orders when enabled - if (payment.payment_order_type == 'debit' and - 'amount_to_receive' in line): - amount_currency = line.amount_to_receive - else: - amount_currency = line.amount_to_pay - ### end account_banking - - payment_obj.create(cr, uid, { - 'move_line_id': line.id, - 'amount_currency': amount_currency, - 'bank_id': line2bank.get(line.id), - 'order_id': payment.id, - 'partner_id': line.partner_id and line.partner_id.id or False, - ### account banking - # 'communication': line.ref or '/' - 'communication': communication, - 'communication2': communication2, - 'state': state, - ### end account banking - 'date': date_to_pay, - 'currency': (line.invoice and line.invoice.currency_id.id - or line.journal_id.currency.id - or line.journal_id.company_id.currency_id.id), - }, context=context) - return {'name': _('Payment Orders'), - 'context': context, - 'view_type': 'form', - 'view_mode': 'form,tree', - 'res_model': 'payment.order', - 'res_id': context['active_id'], - 'type': 'ir.actions.act_window', - } + return True diff --git a/account_banking_payment/view/payment_mode.xml b/account_banking_payment/view/payment_mode.xml index 95d250652..c46823c8d 100644 --- a/account_banking_payment/view/payment_mode.xml +++ b/account_banking_payment/view/payment_mode.xml @@ -11,7 +11,6 @@ - ). # (C) 2011 - 2013 Therp BV (). +# (C) 2013 - 2014 ACSONE SA (). # # All other contributions are (C) by their respective contributors # @@ -64,6 +65,10 @@ * a better implementation of payment_mode.suitable_bank_types() based on payment.mode.type * the "make payment" button launches a wizard depending on the payment.mode.type * a manual payment mode type is provided as an example, with a default "do nothing" wizard + * add a payment_order_type (payment|debit) as a basis of direct debit support + (this field becomes visible when account_direct_debit is installed) + * make the search function of the payment export wizard extensible + * fix lp:1275478: allow payment of customer refunds ''', 'installable': True, } diff --git a/account_banking_payment_export/model/account_payment.py b/account_banking_payment_export/model/account_payment.py index e5a14e8aa..045b3d867 100644 --- a/account_banking_payment_export/model/account_payment.py +++ b/account_banking_payment_export/model/account_payment.py @@ -23,7 +23,7 @@ # ############################################################################## -from openerp.osv import orm +from openerp.osv import orm, fields from openerp.tools.translate import _ from openerp import netsvc @@ -31,6 +31,18 @@ from openerp import netsvc class payment_order(orm.Model): _inherit = 'payment.order' + _columns = { + 'payment_order_type': fields.selection( + [('payment', 'Payment'), ('debit', 'Direct debit')], + 'Payment order type', required=True, + readonly=True, states={'draft': [('readonly', False)]}, + ), + } + + _defaults = { + 'payment_order_type': 'payment', + } + def launch_wizard(self, cr, uid, ids, context=None): """ Search for a wizard to launch according to the type. diff --git a/account_banking_payment_export/model/payment_mode.py b/account_banking_payment_export/model/payment_mode.py index 0d85d3aa3..798c8ed20 100644 --- a/account_banking_payment_export/model/payment_mode.py +++ b/account_banking_payment_export/model/payment_mode.py @@ -49,4 +49,8 @@ class payment_mode(orm.Model): required=True, help='Select the Payment Type for the Payment Mode.' ), + 'payment_order_type': fields.related( + 'type', 'payment_order_type', readonly=True, type='selection', + selection=[('payment', 'Payment'), ('debit', 'Direct debit')], + string="Payment Order Type"), } diff --git a/account_banking_payment_export/model/payment_mode_type.py b/account_banking_payment_export/model/payment_mode_type.py index dbc60d5ab..a50e56a85 100644 --- a/account_banking_payment_export/model/payment_mode_type.py +++ b/account_banking_payment_export/model/payment_mode_type.py @@ -41,7 +41,7 @@ class payment_mode_type(orm.Model): 'suitable_bank_types': fields.many2many( 'res.partner.bank.type', 'bank_type_payment_type_rel', - 'pay_type_id','bank_type_id', + 'pay_type_id', 'bank_type_id', 'Suitable bank types', required=True), 'ir_model_id': fields.many2one( 'ir.model', 'Payment wizard', @@ -49,8 +49,16 @@ class payment_mode_type(orm.Model): 'Leave empty for manual processing'), domain=[('osv_memory', '=', True)], ), + 'payment_order_type': fields.selection( + [('payment', 'Payment'), ('debit', 'Direct debit')], + 'Payment order type', required=True, + ), } - + + _defaults = { + 'payment_order_type': 'payment', + } + def _auto_init(self, cr, context=None): r = super(payment_mode_type, self)._auto_init(cr, context=context) # migrate xmlid from manual_bank_transfer to avoid dependency on account_banking diff --git a/account_banking_payment_export/model/payment_order_create.py b/account_banking_payment_export/model/payment_order_create.py index 278d4327a..8e32831bc 100644 --- a/account_banking_payment_export/model/payment_order_create.py +++ b/account_banking_payment_export/model/payment_order_create.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- ############################################################################## # -# Copyright (C) 2013 ACSONE SA/NV ();. +# Copyright (C) 2009 EduSense BV (). +# (C) 2011 - 2013 Therp BV (). # # All other contributions are (C) by their respective contributors # @@ -22,37 +23,175 @@ # ############################################################################## -from openerp.osv import orm +from openerp.osv import orm, fields +from openerp.tools.translate import _ class payment_order_create(orm.TransientModel): _inherit = 'payment.order.create' + def extend_payment_order_domain( + self, cr, uid, payment_order, domain, context=None): + if payment_order.payment_order_type == 'payment': + domain += [ + ('account_id.type', 'in', ('payable', 'receivable')), + ('amount_to_pay', '>', 0) + ] + return True + + def search_entries(self, cr, uid, ids, context=None): + """ + This method taken from account_payment module. + We adapt the domain based on the payment_order_type + """ + line_obj = self.pool.get('account.move.line') + mod_obj = self.pool.get('ir.model.data') + if context is None: + context = {} + data = self.read(cr, uid, ids, ['duedate'], context=context)[0] + search_due_date = data['duedate'] + + ### start account_banking_payment ### + payment = self.pool.get('payment.order').browse( + cr, uid, context['active_id'], context=context) + # Search for move line to pay: + domain = [ + ('move_id.state', '=', 'posted'), + ('reconcile_id', '=', False), + ('company_id', '=', payment.mode.company_id.id), + ] + self.extend_payment_order_domain( + cr, uid, payment, domain, context=context) + ### end account_direct_debit ### + + domain = domain + [ + '|', ('date_maturity', '<=', search_due_date), + ('date_maturity', '=', False) + ] + line_ids = line_obj.search(cr, uid, domain, context=context) + context.update({'line_ids': line_ids}) + model_data_ids = mod_obj.search( + cr, uid,[ + ('model', '=', 'ir.ui.view'), + ('name', '=', 'view_create_payment_order_lines')], + context=context) + resource_id = mod_obj.read( + cr, uid, model_data_ids, fields=['res_id'], + context=context)[0]['res_id'] + return {'name': _('Entry Lines'), + 'context': context, + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'payment.order.create', + 'views': [(resource_id, 'form')], + 'type': 'ir.actions.act_window', + 'target': 'new', + } + def create_payment(self, cr, uid, ids, context=None): - '''This method adapts the core create_payment() - to pass the payment mode to line2bank() through the context, - so it is in turn propagated to suitable_bank_types(). - - This is necessary because the core does not propagate the payment mode to line2bank: t = None in - http://bazaar.launchpad.net/~openerp/openobject-addons/7.0/view/head:/account_payment/wizard/account_payment_order.py#L72 - - Hack idea courtesy Stefan Rijnhart. ''' - if context is None: - context = {} + This method is a slightly modified version of the existing method on this + model in account_payment. + - pass the payment mode to line2bank() + - allow invoices to create influence on the payment process: not only 'Free' + references are allowed, but others as well + - check date_to_pay is not in the past. + ''' + order_obj = self.pool.get('payment.order') - payment = order_obj.browse(cr, uid, context['active_id'], context=context) - context['_fix_payment_mode_id'] = payment.mode.id - return super(payment_order_create, self).create_payment(cr, uid, ids, context=context) - - -class account_move_line(orm.Model): - _inherit = 'account.move.line' - - def line2bank(self, cr, uid, ids, payment_mode_id=None, context=None): - '''Obtain payment_type from context, see create_payment above''' + line_obj = self.pool.get('account.move.line') + payment_obj = self.pool.get('payment.line') if context is None: context = {} - payment_mode_id = payment_mode_id or context.get('_fix_payment_mode_id') - return super(account_move_line, self).line2bank(cr, uid, ids, payment_mode_id, context=context) + data = self.read(cr, uid, ids, [], context=context)[0] + line_ids = data['entries'] + if not line_ids: + return {'type': 'ir.actions.act_window_close'} + payment = order_obj.browse( + cr, uid, context['active_id'], context=context) + ### account banking + # t = None + # line2bank = line_obj.line2bank(cr, uid, line_ids, t, context) + line2bank = line_obj.line2bank( + cr, uid, line_ids, payment.mode.id, context) + _today = fields.date.context_today(self, cr, uid, context=context) + ### end account banking + + ## Finally populate the current payment with new lines: + for line in line_obj.browse(cr, uid, line_ids, context=context): + if payment.date_prefered == "now": + #no payment date => immediate payment + date_to_pay = False + elif payment.date_prefered == 'due': + ### account_banking + # date_to_pay = line.date_maturity + date_to_pay = ( + line.date_maturity + if line.date_maturity and line.date_maturity > _today + else False) + ### end account banking + elif payment.date_prefered == 'fixed': + ### account_banking + # date_to_pay = payment.date_scheduled + date_to_pay = ( + payment.date_scheduled + if payment.date_scheduled and payment.date_scheduled > _today + else False) + ### end account banking + + ### account_banking + state = communication2 = False + communication = line.ref or '/' + if line.invoice: + if line.invoice.type in ('in_invoice', 'in_refund'): + if line.invoice.reference_type == 'structured': + state = 'structured' + communication = line.invoice.reference + else: + state = 'normal' + communication2 = line.invoice.reference + else: + # Make sure that the communication includes the + # customer invoice number (in the case of debit order) + communication = line.invoice.number.replace('/', '') + state = 'structured' + if line.invoice.number != line.ref: + communication2 = line.ref + else: + state = 'normal' + communication2 = line.ref + + # support debit orders when enabled + if (payment.payment_order_type == 'debit' and + 'amount_to_receive' in line): + amount_currency = line.amount_to_receive + else: + amount_currency = line.amount_to_pay + ### end account_banking + + payment_obj.create(cr, uid, { + 'move_line_id': line.id, + 'amount_currency': amount_currency, + 'bank_id': line2bank.get(line.id), + 'order_id': payment.id, + 'partner_id': line.partner_id and line.partner_id.id or False, + ### account banking + # 'communication': line.ref or '/' + 'communication': communication, + 'communication2': communication2, + 'state': state, + ### end account banking + 'date': date_to_pay, + 'currency': (line.invoice and line.invoice.currency_id.id + or line.journal_id.currency.id + or line.journal_id.company_id.currency_id.id), + }, context=context) + return {'name': _('Payment Orders'), + 'context': context, + 'view_type': 'form', + 'view_mode': 'form,tree', + 'res_model': 'payment.order', + 'res_id': context['active_id'], + 'type': 'ir.actions.act_window', + } diff --git a/account_banking_tests/__openerp__.py b/account_banking_tests/__openerp__.py index 59eff6ce9..04e3fdd70 100644 --- a/account_banking_tests/__openerp__.py +++ b/account_banking_tests/__openerp__.py @@ -37,6 +37,5 @@ dependencies installed, so that you can run the tests. If you only run the tests manually, you don't even have to install this module, only its dependencies. ''', - 'auto_install': False, 'installable': True, } diff --git a/account_direct_debit/__openerp__.py b/account_direct_debit/__openerp__.py index 5cc16dcac..12fa1d227 100644 --- a/account_direct_debit/__openerp__.py +++ b/account_direct_debit/__openerp__.py @@ -25,10 +25,12 @@ 'author': ['Therp BV', 'Smile'], 'website': 'https://launchpad.net/banking-addons', 'category': 'Banking addons', - 'depends': ['account_banking_payment'], + 'depends': ['account_banking_payment_export'], 'data': [ 'view/account_payment.xml', 'view/account_invoice.xml', + 'view/payment_mode.xml', + 'view/payment_mode_type.xml', 'workflow/account_invoice.xml', 'data/account_payment_term.xml', ], diff --git a/account_direct_debit/model/account_move_line.py b/account_direct_debit/model/account_move_line.py index d71f2f4e2..4cd7fab6c 100644 --- a/account_direct_debit/model/account_move_line.py +++ b/account_direct_debit/model/account_move_line.py @@ -87,7 +87,7 @@ class account_move_line(orm.Model): return [('id', '=', '0')] return [('id', 'in', map(lambda x:x[0], res))] - def line2bank(self, cr, uid, ids, payment_mode_id=None, context=None): + def line2bank(self, cr, uid, ids, payment_mode_id, context=None): '''I have to inherit this function for direct debits to fix the following issue : if the customer invoice has a value for 'partner_bank_id', then it will take this partner_bank_id @@ -98,8 +98,6 @@ class account_move_line(orm.Model): if context is None: context = {} pay_mode_obj = self.pool['payment.mode'] - payment_mode_id = ( - payment_mode_id or context.get('_fix_payment_mode_id')) if payment_mode_id: pay_mode = pay_mode_obj.browse( cr, uid, payment_mode_id, context=context) @@ -116,7 +114,7 @@ class account_move_line(orm.Model): break return line2bank return super(account_move_line, self).line2bank( - cr, uid, ids, payment_mode_id=payment_mode_id, context=context) + cr, uid, ids, payment_mode_id, context=context) _columns = { 'amount_to_receive': fields.function( diff --git a/account_direct_debit/view/payment_mode.xml b/account_direct_debit/view/payment_mode.xml new file mode 100644 index 000000000..043990df0 --- /dev/null +++ b/account_direct_debit/view/payment_mode.xml @@ -0,0 +1,20 @@ + + + + + + + payment.mode.form.inherit + payment.mode + + + + + + + + + + diff --git a/account_banking_payment/view/payment_mode_type.xml b/account_direct_debit/view/payment_mode_type.xml similarity index 83% rename from account_banking_payment/view/payment_mode_type.xml rename to account_direct_debit/view/payment_mode_type.xml index eb8ce821a..eb726750d 100644 --- a/account_banking_payment/view/payment_mode_type.xml +++ b/account_direct_debit/view/payment_mode_type.xml @@ -2,6 +2,9 @@ + view.payment.mode.type.form payment.mode.type From d2b7fd679d2c990102ba6f45f0e663b3cddae509 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 19 Feb 2014 11:32:17 +0100 Subject: [PATCH 13/20] Move view from account_banking_payment to account_banking_payment_export. --- account_banking_payment/__openerp__.py | 1 - account_banking_payment_export/__openerp__.py | 1 + .../view/payment_order_create_view.xml | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename {account_banking_payment => account_banking_payment_export}/view/payment_order_create_view.xml (100%) diff --git a/account_banking_payment/__openerp__.py b/account_banking_payment/__openerp__.py index 7ff0465f0..831e794ad 100644 --- a/account_banking_payment/__openerp__.py +++ b/account_banking_payment/__openerp__.py @@ -38,7 +38,6 @@ 'view/account_payment.xml', 'view/banking_transaction_wizard.xml', 'view/payment_mode.xml', - 'view/payment_order_create_view.xml', 'workflow/account_payment.xml', ], 'description': ''' diff --git a/account_banking_payment_export/__openerp__.py b/account_banking_payment_export/__openerp__.py index bc7572306..4e970b96f 100644 --- a/account_banking_payment_export/__openerp__.py +++ b/account_banking_payment_export/__openerp__.py @@ -50,6 +50,7 @@ 'view/bank_payment_manual.xml', 'view/payment_mode.xml', 'view/payment_mode_type.xml', + 'view/payment_order_create_view.xml', 'data/payment_mode_type.xml', 'security/ir.model.access.csv', ], diff --git a/account_banking_payment/view/payment_order_create_view.xml b/account_banking_payment_export/view/payment_order_create_view.xml similarity index 100% rename from account_banking_payment/view/payment_order_create_view.xml rename to account_banking_payment_export/view/payment_order_create_view.xml From 31621d12c4ca242d951e1a030f0d657d9fe17461 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Thu, 20 Feb 2014 13:48:45 +0100 Subject: [PATCH 14/20] [FIX] Always show the statement line date in the standalone statement line tree view --- account_banking/account_banking_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_banking/account_banking_view.xml b/account_banking/account_banking_view.xml index dcb931700..ee70bf133 100644 --- a/account_banking/account_banking_view.xml +++ b/account_banking/account_banking_view.xml @@ -321,7 +321,7 @@ - + From 46a4e2ea64b87f4a0bf723e7f91f792b3ad7730c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Fri, 21 Feb 2014 23:26:42 +0100 Subject: [PATCH 15/20] [IMP] improve account_banking_payment_export documentation to clarify its scope --- account_banking_payment_export/__openerp__.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/account_banking_payment_export/__openerp__.py b/account_banking_payment_export/__openerp__.py index bc7572306..1c4793975 100644 --- a/account_banking_payment_export/__openerp__.py +++ b/account_banking_payment_export/__openerp__.py @@ -55,7 +55,9 @@ ], 'demo': ['demo/banking_demo.xml'], 'description': ''' - Infrastructure to export payment orders. + Infrastructure to export payment orders + plus some bug fixes and obvious enhancements to payment orders + that will hopefully land in offical addons one day. This technical module provides the base infrastructure to export payment orders for electronic banking. It provides the following @@ -65,8 +67,14 @@ * a better implementation of payment_mode.suitable_bank_types() based on payment.mode.type * the "make payment" button launches a wizard depending on the payment.mode.type * a manual payment mode type is provided as an example, with a default "do nothing" wizard - * add a payment_order_type (payment|debit) as a basis of direct debit support - (this field becomes visible when account_direct_debit is installed) + + To enable the use of payment order to collect money for customers, + it adds a payment_order_type (payment|debit) as a basis of direct debit support + (this field becomes visible when account_direct_debit is installed). + Refactoring note: this field should ideally go in account_direct_debit, + but account_banking_payment currently depends on it. + + Bug fixes and enhancement that should land in official addons: * make the search function of the payment export wizard extensible * fix lp:1275478: allow payment of customer refunds ''', From 05086d91fa2863a1982165740a955226b8e89c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Fri, 21 Feb 2014 23:29:26 +0100 Subject: [PATCH 16/20] [FIX] typo in super() --- account_banking_payment/model/payment_order_create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_banking_payment/model/payment_order_create.py b/account_banking_payment/model/payment_order_create.py index b2b339374..7d071b44e 100644 --- a/account_banking_payment/model/payment_order_create.py +++ b/account_banking_payment/model/payment_order_create.py @@ -32,7 +32,7 @@ class payment_order_create(orm.TransientModel): def extend_payment_order_domain( self, cr, uid, payment_order, domain, context=None): - super(self, payment_order_create).extend_payment_order_domain( + super(payment_order_create, self).extend_payment_order_domain( cr, uid, payment_order, domain, context=context) # apply payment term filter if payment_order.mode.payment_term_ids: From f839a7f0ce8057760cdb982b9b91b3c478530b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Fri, 21 Feb 2014 23:35:18 +0100 Subject: [PATCH 17/20] [IMP] more account_banking_payment_export documentation --- account_banking_payment_export/__openerp__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/account_banking_payment_export/__openerp__.py b/account_banking_payment_export/__openerp__.py index bb95a4930..11835c973 100644 --- a/account_banking_payment_export/__openerp__.py +++ b/account_banking_payment_export/__openerp__.py @@ -78,6 +78,8 @@ Bug fixes and enhancement that should land in official addons: * make the search function of the payment export wizard extensible * fix lp:1275478: allow payment of customer refunds + * display the maturity date of the move lines when you are in + the wizard to select the lines to pay ''', 'installable': True, } From 263bea20fb5acf93b1ffacd1e583151fb5849ad3 Mon Sep 17 00:00:00 2001 From: "Ignacio Ibeas - Acysos S.L." Date: Mon, 24 Feb 2014 18:57:05 +0100 Subject: [PATCH 18/20] [FIX] account_banling_pain_base: refactored --- account_banking_pain_base/company.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/account_banking_pain_base/company.py b/account_banking_pain_base/company.py index cccafb7a8..94864d548 100644 --- a/account_banking_pain_base/company.py +++ b/account_banking_pain_base/company.py @@ -45,10 +45,12 @@ class res_company(orm.Model): company = self.browse(cr, uid, company_id, context=context) company_vat = company.vat party_identifier = False - if company_vat and company_vat[0:2].upper() in ['BE']: - party_identifier = company_vat[2:].replace(' ', '') - if company_vat and company_vat[0:2].upper() in ['ES']: - party_identifier = company.sepa_creditor_identifier + if company_vat: + country_code = company_vat[0:2].upper() + if country_code == 'BE': + party_identifier = company_vat[2:].replace(' ', '') + elif country_code == 'ES': + party_identifier = company.sepa_creditor_identifier return party_identifier def _initiating_party_issuer_default(self, cr, uid, context=None): From e7ec9397bb690e57aebccf284320852bef5a20ab Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 6 Mar 2014 15:05:01 +0100 Subject: [PATCH 19/20] [ADD] generic addon for MT940 parsing [ADD] ING NL implementation of MT940 --- account_banking_mt940/__init__.py | 21 ++ account_banking_mt940/__openerp__.py | 53 +++++ account_banking_mt940/mt940.py | 217 ++++++++++++++++++ account_banking_mt940/static/src/img/icon.png | Bin 0 -> 1142 bytes account_banking_nl_ing_mt940/__init__.py | 21 ++ account_banking_nl_ing_mt940/__openerp__.py | 48 ++++ .../account_banking_nl_ing_mt940.py | 100 ++++++++ .../static/src/img/icon.png | Bin 0 -> 1142 bytes 8 files changed, 460 insertions(+) create mode 100644 account_banking_mt940/__init__.py create mode 100644 account_banking_mt940/__openerp__.py create mode 100644 account_banking_mt940/mt940.py create mode 100644 account_banking_mt940/static/src/img/icon.png create mode 100644 account_banking_nl_ing_mt940/__init__.py create mode 100644 account_banking_nl_ing_mt940/__openerp__.py create mode 100644 account_banking_nl_ing_mt940/account_banking_nl_ing_mt940.py create mode 100644 account_banking_nl_ing_mt940/static/src/img/icon.png diff --git a/account_banking_mt940/__init__.py b/account_banking_mt940/__init__.py new file mode 100644 index 000000000..bb289e723 --- /dev/null +++ b/account_banking_mt940/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# 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 . +# +############################################################################## +from . import mt940 diff --git a/account_banking_mt940/__openerp__.py b/account_banking_mt940/__openerp__.py new file mode 100644 index 000000000..3a6ee25a3 --- /dev/null +++ b/account_banking_mt940/__openerp__.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# 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 . +# +############################################################################## +{ + "name" : "MT940", + "version" : "1.0", + "author" : "Therp BV", + "complexity": "expert", + "description": """ +This addon provides a generic parser for MT940 files. Given that MT940 is a +non-open non-standard of pure evil in the way that every bank cooks up its own +interpretation of it, this addon alone won't help you much. It is rather +intended to be used by other addons to implement the dialect specific to a +certain bank. + +See account_banking_nl_ing_mt940 for an example on how to use it. + """, + "category" : "Dependency", + "depends" : [ + 'account_banking', + ], + "data" : [ + ], + "js": [ + ], + "css": [ + ], + "qweb": [ + ], + "auto_install": False, + "installable": True, + "application": False, + "external_dependencies" : { + 'python' : [], + }, +} diff --git a/account_banking_mt940/mt940.py b/account_banking_mt940/mt940.py new file mode 100644 index 000000000..a5c193e5a --- /dev/null +++ b/account_banking_mt940/mt940.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# 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 . +# +############################################################################## + +""" +Parser for MT940 format files +""" +import re +import datetime +import logging +try: + from openerp.addons.account_banking.parsers.models import\ + mem_bank_statement, mem_bank_transaction + from openerp.tools.misc import DEFAULT_SERVER_DATE_FORMAT +except ImportError: + #this allows us to run this file standalone, see __main__ at the end + class mem_bank_statement: + def __init__(self): + self.transactions = [] + class mem_bank_transaction: + pass + DEFAULT_SERVER_DATE_FORMAT = "%Y-%m-%d" + +class MT940(object): + '''Inherit this class in your account_banking.parsers.models.parser, + define functions to handle the tags you need to handle and adjust static + variables as needed. + + Note that order matters: You need to do your_parser(MT940, parser), not the + other way around! + + At least, you should override handle_tag_61 and handle_tag_86. Don't forget + to call super. + handle_tag_* functions receive the remainder of the the line (that is, + without ':XX:') and are supposed to write into self.current_transaction''' + + header_lines = 3 + '''One file can contain multiple statements, each with its own poorly + documented header. For now, the best thing to do seems to skip that''' + + footer_regex = '^-}$' + footer_regex = '^-XXX$' + 'The line that denotes end of message, we need to create a new statement' + + tag_regex = '^:[0-9]{2}[A-Z]*:' + 'The beginning of a record, should be anchored to beginning of the line' + + def __init__(self, *args, **kwargs): + super(MT940, self).__init__(*args, **kwargs) + 'state variables' + self.current_statement = None + 'type account_banking.parsers.models.mem_bank_statement' + self.current_transaction = None + 'type account_banking.parsers.models.mem_bank_transaction' + self.statements = [] + 'parsed statements up to now' + + def parse(self, cr, data): + 'implements account_banking.parsers.models.parser.parse()' + iterator = data.split('\r\n').__iter__() + line = None + record_line = '' + try: + while True: + if not self.current_statement: + self.handle_header(cr, line, iterator) + line = iterator.next() + if not self.is_tag(cr, line) and not self.is_footer(cr, line): + record_line = self.append_continuation_line( + cr, record_line, line) + continue + if record_line: + self.handle_record(cr, record_line) + if self.is_footer(cr, line): + self.handle_footer(cr, line, iterator) + record_line = '' + continue + record_line = line + except StopIteration: + pass + return self.statements + + def append_continuation_line(self, cr, line, continuation_line): + '''append a continuation line for a multiline record. + Override and do data cleanups as necessary.''' + return line + continuation_line + + def create_statement(self, cr): + '''create a mem_bank_statement - override if you need a custom + implementation''' + return mem_bank_statement() + + def create_transaction(self, cr): + '''create a mem_bank_transaction - override if you need a custom + implementation''' + return mem_bank_transaction() + + def is_footer(self, cr, line): + '''determine if a line is the footer of a statement''' + return line and bool(re.match(self.footer_regex, line)) + + def is_tag(self, cr, line): + '''determine if a line has a tag''' + return line and bool(re.match(self.tag_regex, line)) + + def handle_header(self, cr, line, iterator): + '''skip header lines, create current statement''' + for i in range(self.header_lines): + iterator.next() + self.current_statement = self.create_statement(cr) + + def handle_footer(self, cr, line, iterator): + '''add current statement to list, reset state''' + self.statements.append(self.current_statement) + self.current_statement = None + + def handle_record(self, cr, line): + '''find a function to handle the record represented by line''' + tag_match = re.match(self.tag_regex, line) + tag = tag_match.group(0).strip(':') + if not hasattr(self, 'handle_tag_%s' % tag): + logging.error('Unknown tag %s', tag) + logging.error(line) + return + handler = getattr(self, 'handle_tag_%s' % tag) + handler(cr, line[tag_match.end():]) + + def handle_tag_20(self, cr, data): + '''ignore reference number''' + pass + + def handle_tag_25(self, cr, data): + '''get account owner information''' + self.current_statement.local_account = data + + def handle_tag_28C(self, cr, data): + '''get sequence number _within_this_batch_ - this alone + doesn't provide a unique id!''' + self.current_statement.id = data + + def handle_tag_60F(self, cr, data): + '''get start balance and currency''' + self.current_statement.local_currency = data[7:10] + self.current_statement.date = str2date(data[1:7]) + self.current_statement.start_balance = \ + (1 if data[0] == 'C' else -1) * str2float(data[10:]) + self.current_statement.id = '%s/%s' % ( + self.current_statement.date.strftime('%Y'), + self.current_statement.id) + + def handle_tag_62F(self, cr, data): + '''get ending balance''' + self.current_statement.end_balance = \ + (1 if data[0] == 'C' else -1) * str2float(data[10:]) + + def handle_tag_64(self, cr, data): + '''get current balance in currency''' + pass + + def handle_tag_65(self, cr, data): + '''get future balance in currency''' + pass + + def handle_tag_61(self, cr, data): + '''get transaction values''' + transaction = self.create_transaction(cr) + self.current_statement.transactions.append(transaction) + self.current_transaction = transaction + transaction.execution_date = str2date(data[:6]) + transaction.effective_date = str2date(data[:6]) + '...and the rest already is highly bank dependent' + + def handle_tag_86(self, cr, data): + '''details for previous transaction, here most differences between + banks occur''' + pass + +'utility functions' +def str2date(string, fmt='%y%m%d'): + return datetime.datetime.strptime(string, fmt) + +def str2float(string): + return float(string.replace(',', '.')) + +'testing' +def main(filename): + parser = MT940() + parser.parse(None, open(filename, 'r').read()) + for statement in parser.statements: + print '''statement found for %(local_account)s at %(date)s + with %(local_currency)s%(start_balance)s to %(end_balance)s + ''' % statement.__dict__ + for transaction in statement.transactions: + print ''' + transaction on %(execution_date)s''' % transaction.__dict__ + +if __name__ == '__main__': + import sys + main(*sys.argv[1:]) diff --git a/account_banking_mt940/static/src/img/icon.png b/account_banking_mt940/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4c7ab302908e114888446d84d3493fa726033c1f GIT binary patch literal 1142 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpuXS$ zpAc7|0+Vy!%`Sd3J@*~Rz=H@Xz@vBMNCCrhU++~OAXQKjgnPb5^?zLm6yRy4l)f7mx|d; zx?*(k%?4)UEmyi0Ecrc2=k&YFn|8nX@qd4)(saLN%zo##oL4V9SpH%8W(I{5_Kby- zneS~VhopAyb6lBS&$U5E`gKppbdV7NQIC+SE zKe2ts8LoR*Hw$jqcIEDHSU_mi4;HoUDLTgOJMIHx zO|`@|q9i4;B-JXpC>2OC7#SEE>l#?<8d`)H8e5qfSQ#5>8yHy`7). +# +# 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 . +# +############################################################################## +from . import account_banking_nl_ing_mt940 diff --git a/account_banking_nl_ing_mt940/__openerp__.py b/account_banking_nl_ing_mt940/__openerp__.py new file mode 100644 index 000000000..8eae5c53c --- /dev/null +++ b/account_banking_nl_ing_mt940/__openerp__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# 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 . +# +############################################################################## +{ + "name" : "MT940 import for Dutch ING", + "version" : "1.0", + "author" : "Therp BV", + "complexity": "normal", + "description": """ +This addon imports the structured MT940 format as offered by the Dutch ING +bank. + """, + "category" : "Account Banking", + "depends" : [ + 'account_banking_mt940', + ], + "data" : [ + ], + "js": [ + ], + "css": [ + ], + "qweb": [ + ], + "auto_install": False, + "installable": True, + "application": False, + "external_dependencies" : { + 'python' : [], + }, +} diff --git a/account_banking_nl_ing_mt940/account_banking_nl_ing_mt940.py b/account_banking_nl_ing_mt940/account_banking_nl_ing_mt940.py new file mode 100644 index 000000000..a85ce2ff0 --- /dev/null +++ b/account_banking_nl_ing_mt940/account_banking_nl_ing_mt940.py @@ -0,0 +1,100 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# 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 . +# +############################################################################## +import re +from openerp.tools.translate import _ +from openerp.addons.account_banking.parsers.models import parser,\ + mem_bank_transaction +from openerp.addons.account_banking_mt940.mt940 import MT940, str2float + + +class transaction(mem_bank_transaction): + def is_valid(self): + '''allow transactions without remote account''' + return bool(self.execution_date) and bool(self.transferred_amount) + +class IngMT940Parser(MT940, parser): + name = _('ING MT940 (structured)') + country_code = 'NL' + code = 'INT_MT940_STRUC' + + tag_61_regex = re.compile( + '^(?P\d{6})(?P[CD])(?P\d+,\d{2})N(?P\d{3})' + '(?P\w{1,16})') + + def create_transaction(self, cr): + return transaction() + + def handle_tag_60F(self, cr, data): + super(IngMT940Parser, self).handle_tag_60F(cr, data) + self.current_statement.id = '%s-%s' % ( + self.get_unique_account_identifier( + cr, self.current_statement.local_account), + self.current_statement.id) + + def handle_tag_61(self, cr, data): + super(IngMT940Parser, self).handle_tag_61(cr, data) + parsed_data = self.tag_61_regex.match(data).groupdict() + self.current_transaction.transferred_amount = \ + (-1 if parsed_data['sign'] == 'D' else 1) * str2float( + parsed_data['amount']) + self.current_transaction.reference = parsed_data['reference'] + + def handle_tag_86(self, cr, data): + if not self.current_transaction: + return + super(IngMT940Parser, self).handle_tag_86(cr, data) + codewords = ['RTRN', 'BENM', 'ORDP', 'CSID', 'BUSP', 'MARF', 'EREF', + 'PREF', 'REMI', 'ID', 'PURP', 'ULTB', 'ULTD'] + subfields = {} + current_codeword = None + for word in data.split('/'): + if not word and not current_codeword: + continue + if word in codewords: + current_codeword = word + subfields[current_codeword] = [] + continue + subfields[current_codeword].append(word) + + if 'BENM' in subfields: + self.current_transaction.remote_account = subfields['BENM'][0] + self.current_transaction.remote_bank_bic = subfields['BENM'][1] + self.current_transaction.remote_owner = subfields['BENM'][2] + self.current_transaction.remote_owner_city = subfields['BENM'][3] + + if 'ORDP' in subfields: + self.current_transaction.remote_account = subfields['ORDP'][0] + self.current_transaction.remote_bank_bic = subfields['ORDP'][1] + self.current_transaction.remote_owner = subfields['ORDP'][2] + self.current_transaction.remote_owner_city = subfields['ORDP'][3] + + if 'REMI' in subfields: + self.current_transaction.message = '/'.join( + filter(lambda x: bool(x), subfields['REMI'])) + + if self.current_transaction.reference in subfields: + self.current_transaction.reference = ''.join( + subfields[self.current_transaction.reference]) + + if not subfields: + self.current_transaction.message = data + + self.current_transaction = None diff --git a/account_banking_nl_ing_mt940/static/src/img/icon.png b/account_banking_nl_ing_mt940/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4c7ab302908e114888446d84d3493fa726033c1f GIT binary patch literal 1142 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpuXS$ zpAc7|0+Vy!%`Sd3J@*~Rz=H@Xz@vBMNCCrhU++~OAXQKjgnPb5^?zLm6yRy4l)f7mx|d; zx?*(k%?4)UEmyi0Ecrc2=k&YFn|8nX@qd4)(saLN%zo##oL4V9SpH%8W(I{5_Kby- zneS~VhopAyb6lBS&$U5E`gKppbdV7NQIC+SE zKe2ts8LoR*Hw$jqcIEDHSU_mi4;HoUDLTgOJMIHx zO|`@|q9i4;B-JXpC>2OC7#SEE>l#?<8d`)H8e5qfSQ#5>8yHy`7 Date: Sat, 8 Mar 2014 07:00:00 +0000 Subject: [PATCH 20/20] Launchpad automatic translations update. --- account_bank_statement_tax/i18n/hu.po | 4 ++-- account_bank_statement_tax/i18n/nl.po | 4 ++-- account_bank_statement_tax/i18n/pt_BR.po | 4 ++-- account_banking/i18n/da.po | 4 ++-- account_banking/i18n/en.po | 4 ++-- account_banking/i18n/es_ES.po | 4 ++-- account_banking/i18n/hr.po | 4 ++-- account_banking/i18n/hu.po | 4 ++-- account_banking/i18n/nb.po | 4 ++-- account_banking/i18n/nl.po | 4 ++-- account_banking/i18n/pt_BR.po | 4 ++-- account_banking/i18n/ro.po | 4 ++-- account_banking/i18n/tr.po | 4 ++-- account_banking_fi_patu/i18n/nl.po | 4 ++-- account_banking_fi_patu/i18n/pt_BR.po | 4 ++-- account_banking_nl_abnamro/i18n/en.po | 4 ++-- account_banking_nl_abnamro/i18n/nl.po | 4 ++-- account_banking_nl_clieop/i18n/da.po | 4 ++-- account_banking_nl_clieop/i18n/en.po | 4 ++-- account_banking_nl_clieop/i18n/nl.po | 4 ++-- account_banking_nl_clieop/i18n/tr.po | 4 ++-- account_banking_nl_girotel/i18n/en.po | 4 ++-- account_banking_nl_girotel/i18n/nl.po | 4 ++-- account_banking_nl_girotel/i18n/pt_BR.po | 4 ++-- account_banking_nl_ing/i18n/nl.po | 4 ++-- account_banking_nl_ing/i18n/pt_BR.po | 4 ++-- account_banking_nl_multibank/i18n/en.po | 4 ++-- account_banking_nl_multibank/i18n/nl.po | 4 ++-- account_banking_nl_multibank/i18n/pt_BR.po | 4 ++-- account_banking_nl_triodos/i18n/en.po | 4 ++-- account_banking_nl_triodos/i18n/nl.po | 4 ++-- account_banking_nl_triodos/i18n/pt_BR.po | 4 ++-- account_banking_pain_base/i18n/fr.po | 4 ++-- account_banking_pain_base/i18n/nl.po | 4 ++-- account_banking_partner_journal_account/i18n/nl.po | 4 ++-- account_banking_payment/i18n/nl.po | 4 ++-- account_banking_payment_export/i18n/nl.po | 4 ++-- account_banking_sepa_credit_transfer/i18n/fr.po | 4 ++-- account_banking_sepa_credit_transfer/i18n/nl.po | 4 ++-- account_banking_sepa_direct_debit/i18n/fr.po | 4 ++-- account_banking_sepa_direct_debit/i18n/nl.po | 4 ++-- account_direct_debit/i18n/nl.po | 4 ++-- account_iban_preserve_domestic/i18n/nl.po | 4 ++-- account_iban_preserve_domestic/i18n/pt_BR.po | 4 ++-- base_iban_bic_not_required/i18n/nl.po | 4 ++-- base_iban_bic_not_required/i18n/pt_BR.po | 4 ++-- 46 files changed, 92 insertions(+), 92 deletions(-) diff --git a/account_bank_statement_tax/i18n/hu.po b/account_bank_statement_tax/i18n/hu.po index 1527497e1..d4f9956fe 100644 --- a/account_bank_statement_tax/i18n/hu.po +++ b/account_bank_statement_tax/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_bank_statement_tax #: model:ir.model,name:account_bank_statement_tax.model_account_bank_statement_line diff --git a/account_bank_statement_tax/i18n/nl.po b/account_bank_statement_tax/i18n/nl.po index 1709dae7a..47ba4a211 100644 --- a/account_bank_statement_tax/i18n/nl.po +++ b/account_bank_statement_tax/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_bank_statement_tax #: model:ir.model,name:account_bank_statement_tax.model_account_bank_statement_line diff --git a/account_bank_statement_tax/i18n/pt_BR.po b/account_bank_statement_tax/i18n/pt_BR.po index 13ca3865b..44c8ca780 100644 --- a/account_bank_statement_tax/i18n/pt_BR.po +++ b/account_bank_statement_tax/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_bank_statement_tax #: model:ir.model,name:account_bank_statement_tax.model_account_bank_statement_line diff --git a/account_banking/i18n/da.po b/account_banking/i18n/da.po index bb8b10922..9adc56c19 100644 --- a/account_banking/i18n/da.po +++ b/account_banking/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/en.po b/account_banking/i18n/en.po index baddfde14..01d121c13 100644 --- a/account_banking/i18n/en.po +++ b/account_banking/i18n/en.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/es_ES.po b/account_banking/i18n/es_ES.po index 6407110c9..a45ae7d2b 100644 --- a/account_banking/i18n/es_ES.po +++ b/account_banking/i18n/es_ES.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/hr.po b/account_banking/i18n/hr.po index 79c8ddf76..da6d1136a 100644 --- a/account_banking/i18n/hr.po +++ b/account_banking/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/hu.po b/account_banking/i18n/hu.po index 53947252d..c9a7327c6 100644 --- a/account_banking/i18n/hu.po +++ b/account_banking/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/nb.po b/account_banking/i18n/nb.po index 880140043..cffd4f4fd 100644 --- a/account_banking/i18n/nb.po +++ b/account_banking/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/nl.po b/account_banking/i18n/nl.po index 5c6d4c205..b54134a3f 100644 --- a/account_banking/i18n/nl.po +++ b/account_banking/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/pt_BR.po b/account_banking/i18n/pt_BR.po index f0c1d32e2..55a268a5d 100644 --- a/account_banking/i18n/pt_BR.po +++ b/account_banking/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/ro.po b/account_banking/i18n/ro.po index 2be8848a4..541664ab0 100644 --- a/account_banking/i18n/ro.po +++ b/account_banking/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking/i18n/tr.po b/account_banking/i18n/tr.po index 9c9325beb..ed72b3683 100644 --- a/account_banking/i18n/tr.po +++ b/account_banking/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking #: field:account.bank.statement.line,reconcile_id:0 diff --git a/account_banking_fi_patu/i18n/nl.po b/account_banking_fi_patu/i18n/nl.po index 7a909b75e..081552571 100644 --- a/account_banking_fi_patu/i18n/nl.po +++ b/account_banking_fi_patu/i18n/nl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_fi_patu #: code:addons/account_banking_fi_patu/patu.py:115 diff --git a/account_banking_fi_patu/i18n/pt_BR.po b/account_banking_fi_patu/i18n/pt_BR.po index 2a393d638..21b40bc37 100644 --- a/account_banking_fi_patu/i18n/pt_BR.po +++ b/account_banking_fi_patu/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_fi_patu #: code:addons/account_banking_fi_patu/patu.py:115 diff --git a/account_banking_nl_abnamro/i18n/en.po b/account_banking_nl_abnamro/i18n/en.po index 69da64ad0..7242da101 100644 --- a/account_banking_nl_abnamro/i18n/en.po +++ b/account_banking_nl_abnamro/i18n/en.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_abnamro #: code:addons/account_banking_nl_abnamro/abnamro.py:122 diff --git a/account_banking_nl_abnamro/i18n/nl.po b/account_banking_nl_abnamro/i18n/nl.po index 381942861..c2036b361 100644 --- a/account_banking_nl_abnamro/i18n/nl.po +++ b/account_banking_nl_abnamro/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_abnamro #: code:addons/account_banking_nl_abnamro/abnamro.py:122 diff --git a/account_banking_nl_clieop/i18n/da.po b/account_banking_nl_clieop/i18n/da.po index 7f37a8c4a..056a89695 100644 --- a/account_banking_nl_clieop/i18n/da.po +++ b/account_banking_nl_clieop/i18n/da.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" diff --git a/account_banking_nl_clieop/i18n/en.po b/account_banking_nl_clieop/i18n/en.po index 9872230d7..83c09a436 100644 --- a/account_banking_nl_clieop/i18n/en.po +++ b/account_banking_nl_clieop/i18n/en.po @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" diff --git a/account_banking_nl_clieop/i18n/nl.po b/account_banking_nl_clieop/i18n/nl.po index 8cc5c4d2d..4725b9098 100644 --- a/account_banking_nl_clieop/i18n/nl.po +++ b/account_banking_nl_clieop/i18n/nl.po @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" diff --git a/account_banking_nl_clieop/i18n/tr.po b/account_banking_nl_clieop/i18n/tr.po index de3d61ca4..368f85988 100644 --- a/account_banking_nl_clieop/i18n/tr.po +++ b/account_banking_nl_clieop/i18n/tr.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" diff --git a/account_banking_nl_girotel/i18n/en.po b/account_banking_nl_girotel/i18n/en.po index 1af16775b..258bb6a0e 100644 --- a/account_banking_nl_girotel/i18n/en.po +++ b/account_banking_nl_girotel/i18n/en.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_girotel #: code:addons/account_banking_nl_girotel/girotel.py:325 diff --git a/account_banking_nl_girotel/i18n/nl.po b/account_banking_nl_girotel/i18n/nl.po index 5cd9e3067..1006a0405 100644 --- a/account_banking_nl_girotel/i18n/nl.po +++ b/account_banking_nl_girotel/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_girotel #: code:addons/account_banking_nl_girotel/girotel.py:325 diff --git a/account_banking_nl_girotel/i18n/pt_BR.po b/account_banking_nl_girotel/i18n/pt_BR.po index 2faa21a20..25cf010ba 100644 --- a/account_banking_nl_girotel/i18n/pt_BR.po +++ b/account_banking_nl_girotel/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_girotel #: code:addons/account_banking_nl_girotel/girotel.py:325 diff --git a/account_banking_nl_ing/i18n/nl.po b/account_banking_nl_ing/i18n/nl.po index 6f5b2f1b9..18d8307b0 100644 --- a/account_banking_nl_ing/i18n/nl.po +++ b/account_banking_nl_ing/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_ing #: code:addons/account_banking_nl_ing/ing.py:257 diff --git a/account_banking_nl_ing/i18n/pt_BR.po b/account_banking_nl_ing/i18n/pt_BR.po index 3c8780e1f..698d96f1d 100644 --- a/account_banking_nl_ing/i18n/pt_BR.po +++ b/account_banking_nl_ing/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_ing #: code:addons/account_banking_nl_ing/ing.py:257 diff --git a/account_banking_nl_multibank/i18n/en.po b/account_banking_nl_multibank/i18n/en.po index 79630c748..7304f42cb 100644 --- a/account_banking_nl_multibank/i18n/en.po +++ b/account_banking_nl_multibank/i18n/en.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_multibank #: code:addons/account_banking_nl_multibank/multibank.py:292 diff --git a/account_banking_nl_multibank/i18n/nl.po b/account_banking_nl_multibank/i18n/nl.po index 1667ba56f..fcacea0e1 100644 --- a/account_banking_nl_multibank/i18n/nl.po +++ b/account_banking_nl_multibank/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_multibank #: code:addons/account_banking_nl_multibank/multibank.py:292 diff --git a/account_banking_nl_multibank/i18n/pt_BR.po b/account_banking_nl_multibank/i18n/pt_BR.po index 3e9bb535e..77176f17d 100644 --- a/account_banking_nl_multibank/i18n/pt_BR.po +++ b/account_banking_nl_multibank/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_multibank #: code:addons/account_banking_nl_multibank/multibank.py:292 diff --git a/account_banking_nl_triodos/i18n/en.po b/account_banking_nl_triodos/i18n/en.po index 1352bea75..9601e842a 100644 --- a/account_banking_nl_triodos/i18n/en.po +++ b/account_banking_nl_triodos/i18n/en.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_triodos #: code:addons/account_banking_nl_triodos/triodos.py:183 diff --git a/account_banking_nl_triodos/i18n/nl.po b/account_banking_nl_triodos/i18n/nl.po index 822d181f4..c6eaf71a3 100644 --- a/account_banking_nl_triodos/i18n/nl.po +++ b/account_banking_nl_triodos/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_triodos #: code:addons/account_banking_nl_triodos/triodos.py:183 diff --git a/account_banking_nl_triodos/i18n/pt_BR.po b/account_banking_nl_triodos/i18n/pt_BR.po index 121b958ff..79cfe7410 100644 --- a/account_banking_nl_triodos/i18n/pt_BR.po +++ b/account_banking_nl_triodos/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_nl_triodos #: code:addons/account_banking_nl_triodos/triodos.py:183 diff --git a/account_banking_pain_base/i18n/fr.po b/account_banking_pain_base/i18n/fr.po index 360bff594..f1be6ac5d 100644 --- a/account_banking_pain_base/i18n/fr.po +++ b/account_banking_pain_base/i18n/fr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_pain_base #: field:res.company,initiating_party_issuer:0 diff --git a/account_banking_pain_base/i18n/nl.po b/account_banking_pain_base/i18n/nl.po index 36e33db82..565dff9e6 100644 --- a/account_banking_pain_base/i18n/nl.po +++ b/account_banking_pain_base/i18n/nl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-12 06:27+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_pain_base #: field:res.company,initiating_party_issuer:0 diff --git a/account_banking_partner_journal_account/i18n/nl.po b/account_banking_partner_journal_account/i18n/nl.po index d00d02222..09768ce15 100644 --- a/account_banking_partner_journal_account/i18n/nl.po +++ b/account_banking_partner_journal_account/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_partner_journal_account #: model:ir.model,name:account_banking_partner_journal_account.model_res_partner diff --git a/account_banking_payment/i18n/nl.po b/account_banking_payment/i18n/nl.po index 862d66b0f..a6f8566e0 100644 --- a/account_banking_payment/i18n/nl.po +++ b/account_banking_payment/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_payment #: model:ir.model,name:account_banking_payment.model_payment_order_create diff --git a/account_banking_payment_export/i18n/nl.po b/account_banking_payment_export/i18n/nl.po index 615d1938b..ad83539c4 100644 --- a/account_banking_payment_export/i18n/nl.po +++ b/account_banking_payment_export/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_payment_export #: help:payment.mode.type,name:0 diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po index 7c3e39b02..51fe915a3 100644 --- a/account_banking_sepa_credit_transfer/i18n/fr.po +++ b/account_banking_sepa_credit_transfer/i18n/fr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 diff --git a/account_banking_sepa_credit_transfer/i18n/nl.po b/account_banking_sepa_credit_transfer/i18n/nl.po index f20a91a56..07bebebdd 100644 --- a/account_banking_sepa_credit_transfer/i18n/nl.po +++ b/account_banking_sepa_credit_transfer/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 diff --git a/account_banking_sepa_direct_debit/i18n/fr.po b/account_banking_sepa_direct_debit/i18n/fr.po index 6620d99b0..909b98fc9 100644 --- a/account_banking_sepa_direct_debit/i18n/fr.po +++ b/account_banking_sepa_direct_debit/i18n/fr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_sepa_direct_debit #: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid diff --git a/account_banking_sepa_direct_debit/i18n/nl.po b/account_banking_sepa_direct_debit/i18n/nl.po index 350697926..80ad8242f 100644 --- a/account_banking_sepa_direct_debit/i18n/nl.po +++ b/account_banking_sepa_direct_debit/i18n/nl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-12 06:27+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_banking_sepa_direct_debit #: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid diff --git a/account_direct_debit/i18n/nl.po b/account_direct_debit/i18n/nl.po index 77e7b0b2d..7f2c26bf1 100644 --- a/account_direct_debit/i18n/nl.po +++ b/account_direct_debit/i18n/nl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_direct_debit #: model:account.payment.term,note:account_direct_debit.payment_term_direct_debit diff --git a/account_iban_preserve_domestic/i18n/nl.po b/account_iban_preserve_domestic/i18n/nl.po index 7ecd6b88e..ad1c296e9 100644 --- a/account_iban_preserve_domestic/i18n/nl.po +++ b/account_iban_preserve_domestic/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_iban_preserve_domestic #: field:res.partner.bank,acc_number_domestic:0 diff --git a/account_iban_preserve_domestic/i18n/pt_BR.po b/account_iban_preserve_domestic/i18n/pt_BR.po index c925a3bff..2db6c6e38 100644 --- a/account_iban_preserve_domestic/i18n/pt_BR.po +++ b/account_iban_preserve_domestic/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: account_iban_preserve_domestic #: field:res.partner.bank,acc_number_domestic:0 diff --git a/base_iban_bic_not_required/i18n/nl.po b/base_iban_bic_not_required/i18n/nl.po index 952a8fc47..de8b0bf3f 100644 --- a/base_iban_bic_not_required/i18n/nl.po +++ b/base_iban_bic_not_required/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: base_iban_bic_not_required #: constraint:res.partner.bank:0 diff --git a/base_iban_bic_not_required/i18n/pt_BR.po b/base_iban_bic_not_required/i18n/pt_BR.po index 1f54e846c..3931c2310 100644 --- a/base_iban_bic_not_required/i18n/pt_BR.po +++ b/base_iban_bic_not_required/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-11 06:47+0000\n" -"X-Generator: Launchpad (build 16916)\n" +"X-Launchpad-Export-Date: 2014-03-08 06:59+0000\n" +"X-Generator: Launchpad (build 16948)\n" #. module: base_iban_bic_not_required #: constraint:res.partner.bank:0