From 9041fb2c0594da4dc756f36bc3a4e9e1381f88e7 Mon Sep 17 00:00:00 2001 From: "dle@openerp.com" <> Date: Tue, 18 Dec 2012 11:45:32 +0100 Subject: [PATCH] [ADD]Comments bzr revid: dle@openerp.com-20121218104532-jvugb4cm2g1w90g8 --- .../l10n_be_coda/wizard/account_coda_import.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/addons/l10n_be_coda/wizard/account_coda_import.py b/addons/l10n_be_coda/wizard/account_coda_import.py index 33ab9a64aa0..f3d21064276 100644 --- a/addons/l10n_be_coda/wizard/account_coda_import.py +++ b/addons/l10n_be_coda/wizard/account_coda_import.py @@ -91,10 +91,24 @@ class account_coda_import(osv.osv_memory): raise osv.except_osv(_('Error') + ' R1003', _('Unsupported bank account structure ')) statement['journal_id'] = False statement['bank_account'] = False + """ + Belgian Account Numbers are composed of 12 digits. + In OpenERP, the user can fill the bank number in any format: With or without IBan code, with or without spaces, with or without '-' + The two following sql requests handle those cases. + """ if len(statement['acc_number']) >= 12: - cr.execute("select id from res_partner_bank where replace(acc_number,' ','') like %s", ('%' + statement['acc_number'] + '%',)) + """ + If the Account Number is >= 12 digits, it is mostlikely a Belgian Account Number (With or without IBAN). + The following request try to find the Account Number using a 'like' operator. + So, if the Account Number is stored with IBAN code, it can be found thanks to this. + """ + cr.execute("select id from res_partner_bank where replace('-','',replace(acc_number,' ','')) like %s", ('%' + statement['acc_number'] + '%',)) else: - cr.execute("select id from res_partner_bank where replace(acc_number,' ','') = %s", (statement['acc_number'],)) + """ + This case is necessary to avoid cases like the Account Number in the CODA file is set to a single or few digits, + and so a 'like' operator would return the first account number in the database which matches. + """ + cr.execute("select id from res_partner_bank where replace('-','',replace(acc_number,' ','')) = %s", (statement['acc_number'],)) bank_ids = [id[0] for id in cr.fetchall()] if bank_ids and len(bank_ids) > 0: bank_accs = self.pool.get('res.partner.bank').browse(cr, uid, bank_ids)