Merge lp:~acysos-team/openerp-spain/openerp-spain-6.1-l10n_es_partner-iban into lp:~openerp-spain-team/openerp-spain/6.1

Proposed by Ignacio Ibeas (www.acysos.com)
Status: Merged
Merged at revision: 382
Proposed branch: lp:~acysos-team/openerp-spain/openerp-spain-6.1-l10n_es_partner-iban
Merge into: lp:~openerp-spain-team/openerp-spain/6.1
Diff against target: 113 lines (+49/-17)
2 files modified
l10n_es_partner/partner_es.py (+45/-13)
l10n_es_partner/partner_es_view.xml (+4/-4)
To merge this branch: bzr merge lp:~acysos-team/openerp-spain/openerp-spain-6.1-l10n_es_partner-iban
Reviewer Review Type Date Requested Status
Pedro Manuel Baeza code review Approve
Review via email: mp+200414@code.launchpad.net

Description of the change

Se soluciona el problema de incompatibilidad con IBAN, ya que da siempre da error porque el IBAN tiene más de 20 dígitos.

Se modifica para que detecte si se selecciona IBAN y obtiene los datos del banco igual que hasta pero desde el IBAN.

Saludos

To post a comment you must log in.
Revision history for this message
Pedro Manuel Baeza (pedro.baeza) :
review: Approve (code review)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'l10n_es_partner/partner_es.py'
2--- l10n_es_partner/partner_es.py 2013-12-29 22:38:45 +0000
3+++ l10n_es_partner/partner_es.py 2014-01-03 15:55:32 +0000
4@@ -5,7 +5,7 @@
5 # Copyright (c) 2008 Spanish Localization Team
6 # Copyright (c) 2009 Zikzakmedia S.L. (http://zikzakmedia.com) All Rights Reserved.
7 # Jordi Esteve <jesteve@zikzakmedia.com>
8-# Copyright (c) 2012 Acysos S.L. (http://acysos.com) All Rights Reserved.
9+# Copyright (c) 2012-2014 Acysos S.L. (http://acysos.com) All Rights Reserved.
10 # Ignacio Ibeas <ignacio@acysos.com>
11 # $Id$
12 #
13@@ -66,26 +66,58 @@
14 return 'invalid-dc'
15 return '%s %s %s %s' % (bank, office, dc, account)
16
17+def _pretty_iban(iban_str):
18+ "return iban_str in groups of four characters separated by a single space"
19+ res = []
20+ while iban_str:
21+ res.append(iban_str[:4])
22+ iban_str = iban_str[4:]
23+ return ' '.join(res)
24+
25 class res_partner_bank(osv.osv):
26 _inherit = 'res.partner.bank'
27 _columns = {
28 'acc_country_id': fields.many2one("res.country", 'Bank country', help="If the country of the bank is Spain, it validates the bank code. It only reads the digit characters of the bank code:\n- If the number of digits is 18, computes the two digits of control.\n- If the number of digits is 20, computes the two digits of control and ignores the current ones.\n- If the number of digits is different from 18 or 20, it leaves the bank code unaltered.\nThe result is shown in the '1234 5678 06 1234567890' format."),
29 }
30
31- def onchange_banco(self, cr, uid, ids, account, country_id, context=None):
32+ def onchange_banco(self, cr, uid, ids, account, country_id, state, context=None):
33 if account and country_id:
34 country = self.pool.get('res.country').browse(cr, uid, country_id, context)
35- if country.code.upper() in ('ES', 'CT'):
36- number = checkBankAccount(account)
37- if number == 'invalid-size':
38- return { 'warning': { 'title': _('Warning'), 'message': _('Bank account should have 20 digits.') } }
39- if number == 'invalid-dc':
40- return { 'warning': { 'title': _('Warning'), 'message': _('Invalid bank account.') } }
41- bank_ids = self.pool.get('res.bank').search(cr, uid, [('code','=',number[:4])], context=context)
42- if bank_ids:
43- return {'value':{'acc_number': number, 'bank': bank_ids[0]}}
44- else:
45- return {'value':{'acc_number': number}}
46+ if country.code.upper() in ('ES'):
47+ bank_obj = self.pool.get('res.bank')
48+ if state == 'bank':
49+ number = checkBankAccount( account )
50+ if number == 'invalid-size':
51+ return { 'warning': { 'title': _('Warning'),
52+ 'message': _('Bank account should have 20 digits.') } }
53+ if number == 'invalid-dc':
54+ return { 'warning': { 'title': _('Warning'),
55+ 'message': _('Invalid bank account.') } }
56+
57+ bank_ids = bank_obj.search(cr, uid,
58+ [('code','=',number[:4])],
59+ context=context)
60+ if bank_ids:
61+ return {'value':{'acc_number': number,
62+ 'bank': bank_ids[0]}}
63+ else:
64+ return {'value':{'acc_number': number}}
65+ elif state =='iban':
66+ partner_bank_obj = self.pool.get('res.partner.bank')
67+ if partner_bank_obj.is_iban_valid(cr,uid,account,context):
68+ number = _pretty_iban(account.replace(" ", ""))
69+
70+ bank_ids = bank_obj.search(cr, uid,
71+ [('code','=',number[5:9])],
72+ context=context)
73+ if bank_ids:
74+ return {'value':{'acc_number': number,
75+ 'bank': bank_ids[0]}}
76+ else:
77+ return {'value':{'acc_number': number}}
78+ else:
79+ return { 'warning': { 'title': _('Warning'),
80+ 'message': _('IBAN account is not valid') } }
81 return {'value':{}}
82
83 res_partner_bank()
84
85=== modified file 'l10n_es_partner/partner_es_view.xml'
86--- l10n_es_partner/partner_es_view.xml 2013-12-29 22:38:45 +0000
87+++ l10n_es_partner/partner_es_view.xml 2014-01-03 15:55:32 +0000
88@@ -8,10 +8,10 @@
89 <field name="inherit_id" ref="account.view_partner_property_form"/>
90 <field name="arch" type="xml">
91 <field name="acc_number" position="attributes">
92- <attribute name="on_change">onchange_banco(acc_number, acc_country_id)</attribute>
93+ <attribute name="on_change">onchange_banco(acc_number, acc_country_id, state)</attribute>
94 </field>
95 <field name="acc_number" position="after">
96- <field name="acc_country_id" on_change="onchange_banco(acc_number, acc_country_id)"/>
97+ <field name="acc_country_id" on_change="onchange_banco(acc_number, acc_country_id, state)"/>
98 </field>
99 </field>
100 </record>
101@@ -21,10 +21,10 @@
102 <field name="inherit_id" ref="base.view_partner_bank_form"/>
103 <field name="arch" type="xml">
104 <field name="acc_number" position="attributes">
105- <attribute name="on_change">onchange_banco(acc_number, acc_country_id)</attribute>
106+ <attribute name="on_change">onchange_banco(acc_number, acc_country_id, state)</attribute>
107 </field>
108 <field name="acc_number" position="after">
109- <field name="acc_country_id" on_change="onchange_banco(acc_number, acc_country_id)"/>
110+ <field name="acc_country_id" on_change="onchange_banco(acc_number, acc_country_id, state)"/>
111 </field>
112 </field>
113 </record>