Merge lp:~akretion-team/openobject-addons/trunk-fr-display-rib-and-iban into lp:openobject-addons
- trunk-fr-display-rib-and-iban
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 6459 |
Proposed branch: | lp:~akretion-team/openobject-addons/trunk-fr-display-rib-and-iban |
Merge into: | lp:openobject-addons |
Diff against target: |
557 lines (+196/-115) 7 files modified
base_iban/base_iban.py (+24/-15) l10n_fr_rib/__openerp__.py (+1/-1) l10n_fr_rib/bank.py (+18/-23) l10n_fr_rib/bank_data.xml (+16/-5) l10n_fr_rib/bank_view.xml (+50/-23) l10n_fr_rib/i18n/fr.po (+45/-33) l10n_fr_rib/i18n/l10n_fr_rib.pot (+42/-15) |
To merge this branch: | bzr merge lp:~akretion-team/openobject-addons/trunk-fr-display-rib-and-iban |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Raphael Collet (OpenERP) (community) | Approve | ||
Review via email: mp+90449@code.launchpad.net |
Commit message
Description of the change
The initiative of this merge proposal started on the forum :
http://
We need to be able to define both the RIB (old French format) and the IBAN on the same res.partner.bank. Why ? For example, on the customer invoice report, we need to display both the RIB info (for "old school" French customers) and the IBAN/BIC info (for modern French customer and out-of-France customers) with the same "Bank account".
As I went through the code to develop what was needed, I made a number of fixes/enhancements :
- Fix inheritance of the view 'view_partner_
- Add RIB fields to standard tree and form of res.partner.bank (not just the res.partner form view)
- Add max size on RIB fields.
- Constraint now declares all the fields that must trigger the check.
Numérigraphe (numerigraphe) wrote : | # |
Alexis de Lattre (alexis-via) wrote : | # |
I just updated my code to have a single RIB type, as suggestion by Numérigraphe.
I also modified the code of the base_iban module to have IBAN validation in a dedicated function, that can be easily called by the localisation modules and in particular l10n_fr_rib. This change is fully backward compatible.
Raphael Collet (OpenERP) (rco-openerp) wrote : | # |
Overall it looks fine.
Just a few things to fix before merging:
- line 37 of diff below: please resolve the conflict (merge the trunk into your branch)
- line 73: use '!=' instead of '<>' (the latter is obsolescent)
- line 139: please use a better error message than 'Error message in raise'
Thanks,
Raphael
Alexis de Lattre (alexis-via) wrote : | # |
@Raphael Collet
I took into account all your remarks and updated the branch.
Raphael Collet (OpenERP) (rco-openerp) wrote : | # |
Looks good, now. Thanks!
Raphael
Alexis de Lattre (alexis-via) wrote : | # |
@Raphael Collet
Thank you very much for your review and the merge. With these community merges, OpenERP is really heading in the right direction !
Preview Diff
1 | === modified file 'base_iban/base_iban.py' | |||
2 | --- base_iban/base_iban.py 2012-01-30 11:15:21 +0000 | |||
3 | +++ base_iban/base_iban.py 2012-01-31 13:43:27 +0000 | |||
4 | @@ -94,27 +94,36 @@ | |||
5 | 94 | vals['acc_number'] = _pretty_iban(vals['acc_number']) | 94 | vals['acc_number'] = _pretty_iban(vals['acc_number']) |
6 | 95 | return super(res_partner_bank, self).write(cr, uid, ids, vals, context) | 95 | return super(res_partner_bank, self).write(cr, uid, ids, vals, context) |
7 | 96 | 96 | ||
8 | 97 | def is_iban_valid(self, cr, uid, iban, context=None): | ||
9 | 98 | """Check if IBAN is valid or not | ||
10 | 99 | @param iban: IBAN as string | ||
11 | 100 | @return: True if IBAN is valid, False if IBAN is not valid | ||
12 | 101 | """ | ||
13 | 102 | iban = _format_iban(iban).lower() | ||
14 | 103 | if iban[:2] in _ref_iban and len(iban) != len(_format_iban(_ref_iban[iban[:2]])): | ||
15 | 104 | return False | ||
16 | 105 | #the four first digits have to be shifted to the end | ||
17 | 106 | iban = iban[4:] + iban[:4] | ||
18 | 107 | #letters have to be transformed into numbers (a = 10, b = 11, ...) | ||
19 | 108 | iban2 = "" | ||
20 | 109 | for char in iban: | ||
21 | 110 | if char.isalpha(): | ||
22 | 111 | iban2 += str(ord(char)-87) | ||
23 | 112 | else: | ||
24 | 113 | iban2 += char | ||
25 | 114 | #iban is correct if modulo 97 == 1 | ||
26 | 115 | if not int(iban2) % 97 == 1: | ||
27 | 116 | return False | ||
28 | 117 | return True | ||
29 | 118 | |||
30 | 97 | def check_iban(self, cr, uid, ids, context=None): | 119 | def check_iban(self, cr, uid, ids, context=None): |
31 | 98 | ''' | 120 | ''' |
32 | 99 | Check the IBAN number | 121 | Check the IBAN number |
33 | 100 | ''' | 122 | ''' |
34 | 101 | for bank_acc in self.browse(cr, uid, ids, context=context): | 123 | for bank_acc in self.browse(cr, uid, ids, context=context): |
36 | 102 | if bank_acc.state<>'iban': | 124 | if bank_acc.state != 'iban': |
37 | 103 | continue | 125 | continue |
52 | 104 | iban = _format_iban(bank_acc.acc_number).lower() | 126 | if not self.is_iban_valid(cr, uid, bank_acc.acc_number, context=context): |
39 | 105 | if iban[:2] in _ref_iban and len(iban) != len(_format_iban(_ref_iban[iban[:2]])): | ||
40 | 106 | return False | ||
41 | 107 | #the four first digits have to be shifted to the end | ||
42 | 108 | iban = iban[4:] + iban[:4] | ||
43 | 109 | #letters have to be transformed into numbers (a = 10, b = 11, ...) | ||
44 | 110 | iban2 = "" | ||
45 | 111 | for char in iban: | ||
46 | 112 | if char.isalpha(): | ||
47 | 113 | iban2 += str(ord(char)-87) | ||
48 | 114 | else: | ||
49 | 115 | iban2 += char | ||
50 | 116 | #iban is correct if modulo 97 == 1 | ||
51 | 117 | if not int(iban2) % 97 == 1: | ||
53 | 118 | return False | 127 | return False |
54 | 119 | return True | 128 | return True |
55 | 120 | 129 | ||
56 | 121 | 130 | ||
57 | === modified file 'l10n_fr_rib/__openerp__.py' | |||
58 | --- l10n_fr_rib/__openerp__.py 2012-01-30 10:18:37 +0000 | |||
59 | +++ l10n_fr_rib/__openerp__.py 2012-01-31 13:43:27 +0000 | |||
60 | @@ -38,7 +38,7 @@ | |||
61 | 38 | The RIB and IBAN codes for a single account can be entered by recording two Bank Accounts in OpenERP: the first with the type "RIB", the second with the type "IBAN". | 38 | The RIB and IBAN codes for a single account can be entered by recording two Bank Accounts in OpenERP: the first with the type "RIB", the second with the type "IBAN". |
62 | 39 | ''', | 39 | ''', |
63 | 40 | 'author' : u'Numérigraphe SARL', | 40 | 'author' : u'Numérigraphe SARL', |
65 | 41 | 'depends': ['base', 'account'], | 41 | 'depends': ['account', 'base_iban'], |
66 | 42 | 'init_xml': ['bank_data.xml', ], | 42 | 'init_xml': ['bank_data.xml', ], |
67 | 43 | 'update_xml': ['bank_view.xml', ], | 43 | 'update_xml': ['bank_view.xml', ], |
68 | 44 | 'installable': True, | 44 | 'installable': True, |
69 | 45 | 45 | ||
70 | === modified file 'l10n_fr_rib/bank.py' | |||
71 | --- l10n_fr_rib/bank.py 2011-12-01 14:57:54 +0000 | |||
72 | +++ l10n_fr_rib/bank.py 2012-01-31 13:43:27 +0000 | |||
73 | @@ -31,18 +31,18 @@ | |||
74 | 31 | """Check the RIB key""" | 31 | """Check the RIB key""" |
75 | 32 | for bank_acc in self.browse(cr, uid, ids): | 32 | for bank_acc in self.browse(cr, uid, ids): |
76 | 33 | # Ignore the accounts of type other than rib | 33 | # Ignore the accounts of type other than rib |
78 | 34 | if bank_acc.state !='rib': | 34 | if bank_acc.state != 'rib': |
79 | 35 | continue | 35 | continue |
80 | 36 | # Fail if the needed values are empty of too short | 36 | # Fail if the needed values are empty of too short |
81 | 37 | if (not bank_acc.bank_code | 37 | if (not bank_acc.bank_code |
82 | 38 | or len(bank_acc.bank_code) != 5 | 38 | or len(bank_acc.bank_code) != 5 |
83 | 39 | or not bank_acc.office or len(bank_acc.office) != 5 | 39 | or not bank_acc.office or len(bank_acc.office) != 5 |
85 | 40 | or not bank_acc.acc_number or len(bank_acc.acc_number) != 11 | 40 | or not bank_acc.rib_acc_number or len(bank_acc.rib_acc_number) != 11 |
86 | 41 | or not bank_acc.key or len(bank_acc.key) != 2): | 41 | or not bank_acc.key or len(bank_acc.key) != 2): |
87 | 42 | return False | 42 | return False |
88 | 43 | # Get the rib data (without the key) | 43 | # Get the rib data (without the key) |
89 | 44 | rib = "%s%s%s" % (bank_acc.bank_code, bank_acc.office, | 44 | rib = "%s%s%s" % (bank_acc.bank_code, bank_acc.office, |
91 | 45 | bank_acc.acc_number) | 45 | bank_acc.rib_acc_number) |
92 | 46 | # Translate letters into numbers according to a specific table | 46 | # Translate letters into numbers according to a specific table |
93 | 47 | # (notice how s -> 2) | 47 | # (notice how s -> 2) |
94 | 48 | table = dict((ord(a), b) for a, b in zip( | 48 | table = dict((ord(a), b) for a, b in zip( |
95 | @@ -51,7 +51,15 @@ | |||
96 | 51 | # compute the key | 51 | # compute the key |
97 | 52 | key = 97 - (100 * int(rib)) % 97 | 52 | key = 97 - (100 * int(rib)) % 97 |
98 | 53 | if int(bank_acc.key) != key: | 53 | if int(bank_acc.key) != key: |
100 | 54 | return False | 54 | raise osv.except_osv(_('Error'), |
101 | 55 | _("The RIB key %s does not correspond to the other " | ||
102 | 56 | "codes: %s %s %s.") % | ||
103 | 57 | (bank_acc.key, bank_acc.bank_code, | ||
104 | 58 | bank_acc.office, bank_acc.rib_acc_number) ) | ||
105 | 59 | if bank_acc.acc_number: | ||
106 | 60 | if not self.is_iban_valid(cr, uid, bank_acc.acc_number): | ||
107 | 61 | raise osv.except_osv(_('Error'), | ||
108 | 62 | _("The IBAN %s is not valid.") % bank_acc.acc_number) | ||
109 | 55 | return True | 63 | return True |
110 | 56 | 64 | ||
111 | 57 | def onchange_bank_id(self, cr, uid, ids, bank_id, context=None): | 65 | def onchange_bank_id(self, cr, uid, ids, bank_id, context=None): |
112 | @@ -66,31 +74,18 @@ | |||
113 | 66 | return result | 74 | return result |
114 | 67 | 75 | ||
115 | 68 | _columns = { | 76 | _columns = { |
116 | 77 | 'acc_number': fields.char('Account Number', size=64, required=False), | ||
117 | 78 | 'rib_acc_number': fields.char('RIB account number', size=11, readonly=True,), | ||
118 | 69 | 'bank_code': fields.char('Bank Code', size=64, readonly=True,), | 79 | 'bank_code': fields.char('Bank Code', size=64, readonly=True,), |
119 | 70 | 'office': fields.char('Office Code', size=5, readonly=True,), | 80 | 'office': fields.char('Office Code', size=5, readonly=True,), |
120 | 71 | 'key': fields.char('Key', size=2, readonly=True, | 81 | 'key': fields.char('Key', size=2, readonly=True, |
121 | 72 | help="The key is a number allowing to check the " | 82 | help="The key is a number allowing to check the " |
122 | 73 | "correctness of the other codes."), | 83 | "correctness of the other codes."), |
123 | 74 | } | 84 | } |
143 | 75 | 85 | ||
144 | 76 | def _construct_constraint_msg(self, cr, uid, ids, context=None): | 86 | _constraints = [(_check_key, 'The RIB and/or IBAN is not valid', |
145 | 77 | """Quote the data in the warning message""" | 87 | ['rib_acc_number', 'bank_code', 'office', 'key'])] |
146 | 78 | # Only process the first id | 88 | |
128 | 79 | if type(ids) not in (int, long): | ||
129 | 80 | id = ids[0] | ||
130 | 81 | rib = self.browse(cr, uid, id, context=context) | ||
131 | 82 | if rib: | ||
132 | 83 | return (_("\nThe RIB key %s does not correspond to the other " | ||
133 | 84 | "codes: %s %s %s.") % | ||
134 | 85 | (rib.key, | ||
135 | 86 | rib.bank_code, | ||
136 | 87 | rib.office, | ||
137 | 88 | rib.acc_number) ) | ||
138 | 89 | |||
139 | 90 | _constraints = [(_check_key, | ||
140 | 91 | _construct_constraint_msg, | ||
141 | 92 | ["key"])] | ||
142 | 93 | |||
147 | 94 | res_partner_bank() | 89 | res_partner_bank() |
148 | 95 | 90 | ||
149 | 96 | class res_bank(osv.osv): | 91 | class res_bank(osv.osv): |
150 | 97 | 92 | ||
151 | === modified file 'l10n_fr_rib/bank_data.xml' | |||
152 | --- l10n_fr_rib/bank_data.xml 2011-11-21 13:45:45 +0000 | |||
153 | +++ l10n_fr_rib/bank_data.xml 2012-01-31 13:43:27 +0000 | |||
154 | @@ -6,24 +6,27 @@ | |||
155 | 6 | RIB bank details | 6 | RIB bank details |
156 | 7 | --> | 7 | --> |
157 | 8 | <record id="bank_rib" model="res.partner.bank.type"> | 8 | <record id="bank_rib" model="res.partner.bank.type"> |
159 | 9 | <field name="name">RIB Bank Details</field> | 9 | <field name="name">RIB and optional IBAN</field> |
160 | 10 | <field name="code">rib</field> | 10 | <field name="code">rib</field> |
161 | 11 | <field name="format_layout">%(bank_name)s: %(bank_code)s %(office)s %(rib_acc_number)s %(key)s</field> | ||
162 | 11 | </record> | 12 | </record> |
164 | 12 | 13 | ||
165 | 13 | <record id="rib_bank_code_field" model="res.partner.bank.type.field"> | 14 | <record id="rib_bank_code_field" model="res.partner.bank.type.field"> |
166 | 14 | <field name="name">bank_code</field> | 15 | <field name="name">bank_code</field> |
167 | 15 | <field name="bank_type_id" ref="bank_rib"/> | 16 | <field name="bank_type_id" ref="bank_rib"/> |
168 | 16 | <field eval="True" name="required"/> | 17 | <field eval="True" name="required"/> |
169 | 17 | <field eval="False" name="readonly"/> | 18 | <field eval="False" name="readonly"/> |
170 | 19 | <field name="size">5</field> | ||
171 | 18 | </record> | 20 | </record> |
172 | 19 | <record id="rib_office_field" model="res.partner.bank.type.field"> | 21 | <record id="rib_office_field" model="res.partner.bank.type.field"> |
173 | 20 | <field name="name">office</field> | 22 | <field name="name">office</field> |
174 | 21 | <field name="bank_type_id" ref="bank_rib"/> | 23 | <field name="bank_type_id" ref="bank_rib"/> |
175 | 22 | <field eval="True" name="required"/> | 24 | <field eval="True" name="required"/> |
176 | 23 | <field eval="False" name="readonly"/> | 25 | <field eval="False" name="readonly"/> |
177 | 26 | <field name="size">5</field> | ||
178 | 24 | </record> | 27 | </record> |
181 | 25 | <record id="bank_acc_number_field" model="res.partner.bank.type.field"> | 28 | <record id="rib_rib_acc_number_field" model="res.partner.bank.type.field"> |
182 | 26 | <field name="name">acc_number</field> | 29 | <field name="name">rib_acc_number</field> |
183 | 27 | <field name="bank_type_id" ref="bank_rib"/> | 30 | <field name="bank_type_id" ref="bank_rib"/> |
184 | 28 | <field eval="True" name="required"/> | 31 | <field eval="True" name="required"/> |
185 | 29 | <field eval="False" name="readonly"/> | 32 | <field eval="False" name="readonly"/> |
186 | @@ -34,11 +37,19 @@ | |||
187 | 34 | <field name="bank_type_id" ref="bank_rib"/> | 37 | <field name="bank_type_id" ref="bank_rib"/> |
188 | 35 | <field eval="True" name="required"/> | 38 | <field eval="True" name="required"/> |
189 | 36 | <field eval="False" name="readonly"/> | 39 | <field eval="False" name="readonly"/> |
190 | 40 | <field name="size">2</field> | ||
191 | 41 | </record> | ||
192 | 42 | <record id="rib_acc_number_field" model="res.partner.bank.type.field"> | ||
193 | 43 | <field name="name">acc_number</field> | ||
194 | 44 | <field name="bank_type_id" ref="bank_rib"/> | ||
195 | 45 | <field eval="False" name="required"/> | ||
196 | 46 | <field eval="False" name="readonly"/> | ||
197 | 37 | </record> | 47 | </record> |
198 | 38 | <record id="rib_bic_field" model="res.partner.bank.type.field"> | 48 | <record id="rib_bic_field" model="res.partner.bank.type.field"> |
199 | 39 | <field name="name">bank_bic</field> | 49 | <field name="name">bank_bic</field> |
200 | 40 | <field name="bank_type_id" ref="bank_rib"/> | 50 | <field name="bank_type_id" ref="bank_rib"/> |
202 | 41 | <field name="required" eval="0"/> | 51 | <field name="required" eval="False"/> |
203 | 42 | </record> | 52 | </record> |
204 | 53 | |||
205 | 43 | </data> | 54 | </data> |
206 | 44 | </openerp> | 55 | </openerp> |
207 | 45 | 56 | ||
208 | === modified file 'l10n_fr_rib/bank_view.xml' | |||
209 | --- l10n_fr_rib/bank_view.xml 2011-11-21 13:45:45 +0000 | |||
210 | +++ l10n_fr_rib/bank_view.xml 2012-01-31 13:43:27 +0000 | |||
211 | @@ -5,29 +5,56 @@ | |||
212 | 5 | <record id="view_partner_rib1_form" model="ir.ui.view"> | 5 | <record id="view_partner_rib1_form" model="ir.ui.view"> |
213 | 6 | <field name="name">res.partner.form.rib1.inherit</field> | 6 | <field name="name">res.partner.form.rib1.inherit</field> |
214 | 7 | <field name="model">res.partner</field> | 7 | <field name="model">res.partner</field> |
238 | 8 | <field name="inherit_id" ref="base.view_partner_form" /> | 8 | <field name="inherit_id" ref="account.view_partner_property_form" /> |
239 | 9 | <field name="type">form</field> | 9 | <field name="type">form</field> |
240 | 10 | <field name="arch" type="xml"> | 10 | <field name="arch" type="xml"> |
241 | 11 | <field name="acc_number" position="before"> | 11 | <data> |
242 | 12 | <newline /> | 12 | <xpath expr="/form/notebook/page[@string='Accounting']/field[@name='bank_ids']/form/field[@name='acc_number']" position="before"> |
243 | 13 | <field name="bank_code" /> | 13 | <newline /> |
244 | 14 | <field name="office" /> | 14 | <field name="bank_code" /> |
245 | 15 | <newline /> | 15 | <field name="office" /> |
246 | 16 | </field> | 16 | <field name="rib_acc_number" /> |
247 | 17 | </field> | 17 | <field name="key" /> |
248 | 18 | </record> | 18 | <newline /> |
249 | 19 | <record id="view_partner_rib2_form" model="ir.ui.view"> | 19 | </xpath> |
250 | 20 | <field name="name">res.partner.form.rib2.inherit</field> | 20 | <xpath expr="/form/notebook/page[@string='Accounting']/field[@name='bank_ids']/tree/field[@name='acc_number']" position="after"> |
251 | 21 | <field name="model">res.partner</field> | 21 | <field name="rib_acc_number" /> |
252 | 22 | <field name="inherit_id" ref="base.view_partner_form" /> | 22 | </xpath> |
253 | 23 | <field name="type">form</field> | 23 | </data> |
254 | 24 | <field name="arch" type="xml"> | 24 | </field> |
255 | 25 | <field name="acc_number" position="after"> | 25 | </record> |
256 | 26 | <field name="key" /> | 26 | |
257 | 27 | </field> | 27 | <!-- add RIB fields to the form view of res.partner.bank --> |
258 | 28 | </field> | 28 | <record id="view_partner_bank_rib_form" model="ir.ui.view"> |
259 | 29 | </record> | 29 | <field name="name">res.partner.bank.form.rib.inherit</field> |
260 | 30 | 30 | <field name="model">res.partner.bank</field> | |
261 | 31 | <field name="inherit_id" ref="base.view_partner_bank_form" /> | ||
262 | 32 | <field name="type">form</field> | ||
263 | 33 | <field name="arch" type="xml"> | ||
264 | 34 | <field name="acc_number" position="before"> | ||
265 | 35 | <field name="bank_code" /> | ||
266 | 36 | <field name="office" /> | ||
267 | 37 | <newline /> | ||
268 | 38 | <field name="rib_acc_number" /> | ||
269 | 39 | <field name="key" /> | ||
270 | 40 | <newline /> | ||
271 | 41 | </field> | ||
272 | 42 | </field> | ||
273 | 43 | </record> | ||
274 | 44 | |||
275 | 45 | <!-- add rib_acc_number to the tree view of res.partner.bank --> | ||
276 | 46 | <record id="view_partner_bank_rib_tree" model="ir.ui.view"> | ||
277 | 47 | <field name="name">res.partner.bank.tree.rib.inherit</field> | ||
278 | 48 | <field name="model">res.partner.bank</field> | ||
279 | 49 | <field name="inherit_id" ref="base.view_partner_bank_tree" /> | ||
280 | 50 | <field name="type">tree</field> | ||
281 | 51 | <field name="arch" type="xml"> | ||
282 | 52 | <field name="acc_number" position="after"> | ||
283 | 53 | <field name="rib_acc_number" /> | ||
284 | 54 | </field> | ||
285 | 55 | </field> | ||
286 | 56 | </record> | ||
287 | 57 | |||
288 | 31 | <!-- add the bank code--> | 58 | <!-- add the bank code--> |
289 | 32 | <record id="view_res_bank_form" model="ir.ui.view"> | 59 | <record id="view_res_bank_form" model="ir.ui.view"> |
290 | 33 | <field name="name">res.bank.form.rib.inherit</field> | 60 | <field name="name">res.bank.form.rib.inherit</field> |
291 | 34 | 61 | ||
292 | === modified file 'l10n_fr_rib/i18n/fr.po' | |||
293 | --- l10n_fr_rib/i18n/fr.po 2011-11-21 13:45:45 +0000 | |||
294 | +++ l10n_fr_rib/i18n/fr.po 2012-01-31 13:43:27 +0000 | |||
295 | @@ -4,10 +4,10 @@ | |||
296 | 4 | # | 4 | # |
297 | 5 | msgid "" | 5 | msgid "" |
298 | 6 | msgstr "" | 6 | msgstr "" |
300 | 7 | "Project-Id-Version: OpenERP Server 6.1beta\n" | 7 | "Project-Id-Version: OpenERP Server 6.1rc1\n" |
301 | 8 | "Report-Msgid-Bugs-To: \n" | 8 | "Report-Msgid-Bugs-To: \n" |
304 | 9 | "POT-Creation-Date: 2011-11-21 12:37+0000\n" | 9 | "POT-Creation-Date: 2012-01-27 18:47+0000\n" |
305 | 10 | "PO-Revision-Date: 2011-11-21 12:37+0000\n" | 10 | "PO-Revision-Date: 2012-01-27 18:47+0000\n" |
306 | 11 | "Last-Translator: <>\n" | 11 | "Last-Translator: <>\n" |
307 | 12 | "Language-Team: \n" | 12 | "Language-Team: \n" |
308 | 13 | "MIME-Version: 1.0\n" | 13 | "MIME-Version: 1.0\n" |
309 | @@ -23,9 +23,14 @@ | |||
310 | 23 | "Please define BIC/Swift code on bank for bank type IBAN Account to make valid payments" | 23 | "Please define BIC/Swift code on bank for bank type IBAN Account to make valid payments" |
311 | 24 | 24 | ||
312 | 25 | #. module: l10n_fr_rib | 25 | #. module: l10n_fr_rib |
316 | 26 | #: model:ir.model,name:l10n_fr_rib.model_res_partner_bank | 26 | #: model:res.partner.bank.type,name:l10n_fr_rib.bank_rib |
317 | 27 | msgid "Bank Accounts" | 27 | msgid "RIB and optional IBAN" |
318 | 28 | msgstr "Comptes bancaires" | 28 | msgstr "RIB et IBAN optionnel" |
319 | 29 | |||
320 | 30 | #. module: l10n_fr_rib | ||
321 | 31 | #: field:res.partner.bank,rib_acc_number:0 | ||
322 | 32 | msgid "RIB account number" | ||
323 | 33 | msgstr "Numéro de compte RIB" | ||
324 | 29 | 34 | ||
325 | 30 | #. module: l10n_fr_rib | 35 | #. module: l10n_fr_rib |
326 | 31 | #: field:res.partner.bank,bank_code:0 | 36 | #: field:res.partner.bank,bank_code:0 |
327 | @@ -33,9 +38,10 @@ | |||
328 | 33 | msgstr "Code banque" | 38 | msgstr "Code banque" |
329 | 34 | 39 | ||
330 | 35 | #. module: l10n_fr_rib | 40 | #. module: l10n_fr_rib |
334 | 36 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bic_field | 41 | #: code:addons/l10n_fr_rib/bank.py:55 |
335 | 37 | msgid "bank_bic" | 42 | #, python-format |
336 | 38 | msgstr "bank_bic" | 43 | msgid "The RIB key %s does not correspond to the other codes: %s %s %s." |
337 | 44 | msgstr "La clé RIB %s ne correspond pas aux autres codes : %s %s %s." | ||
338 | 39 | 45 | ||
339 | 40 | #. module: l10n_fr_rib | 46 | #. module: l10n_fr_rib |
340 | 41 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_office_field | 47 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_office_field |
341 | @@ -48,13 +54,15 @@ | |||
342 | 48 | msgstr "Code banque RIB" | 54 | msgstr "Code banque RIB" |
343 | 49 | 55 | ||
344 | 50 | #. module: l10n_fr_rib | 56 | #. module: l10n_fr_rib |
352 | 51 | #: model:ir.module.module,description:l10n_fr_rib.module_meta_information | 57 | #: code:addons/l10n_fr_rib/bank.py:62 |
353 | 52 | msgid "\n" | 58 | #, python-format |
354 | 53 | "This module installs the base for RIB bank accounts (French standard for bank accounts). \n" | 59 | msgid "The IBAN %s is not valid." |
355 | 54 | "To make it easier to enter RIB data, it will also allow to search for banks by code." | 60 | msgstr "L'IBAN %s n'est pas valide." |
356 | 55 | msgstr "\n" | 61 | |
357 | 56 | "Ce module installe la base pour les comptes bancaires RIB (norme française pour les n° de compte). \n" | 62 | #. module: l10n_fr_rib |
358 | 57 | "Pour faciliter la saisie des RIBs, il permet aussi de chercher les banques par code." | 63 | #: model:ir.model,name:l10n_fr_rib.model_res_partner_bank |
359 | 64 | msgid "Bank Accounts" | ||
360 | 65 | msgstr "Comptes bancaires" | ||
361 | 58 | 66 | ||
362 | 59 | #. module: l10n_fr_rib | 67 | #. module: l10n_fr_rib |
363 | 60 | #: field:res.partner.bank,office:0 | 68 | #: field:res.partner.bank,office:0 |
364 | @@ -62,9 +70,9 @@ | |||
365 | 62 | msgstr "Code agence" | 70 | msgstr "Code agence" |
366 | 63 | 71 | ||
367 | 64 | #. module: l10n_fr_rib | 72 | #. module: l10n_fr_rib |
371 | 65 | #: model:res.partner.bank.type,name:l10n_fr_rib.bank_rib | 73 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_rib_acc_number_field |
372 | 66 | msgid "RIB Bank Details" | 74 | msgid "rib_acc_number" |
373 | 67 | msgstr "Relevé d'identité bancaire (RIB)" | 75 | msgstr "rib_acc_number" |
374 | 68 | 76 | ||
375 | 69 | #. module: l10n_fr_rib | 77 | #. module: l10n_fr_rib |
376 | 70 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bank_code_field | 78 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bank_code_field |
377 | @@ -72,34 +80,38 @@ | |||
378 | 72 | msgstr "bank_code" | 80 | msgstr "bank_code" |
379 | 73 | 81 | ||
380 | 74 | #. module: l10n_fr_rib | 82 | #. module: l10n_fr_rib |
381 | 75 | #: code:addons/l10n_fr_rib/bank.py:109 | ||
382 | 76 | #, python-format | ||
383 | 77 | msgid "\n" | ||
384 | 78 | "The RIB key %s does not correspond to the other codes: %s %s %s." | ||
385 | 79 | msgstr "\n" | ||
386 | 80 | "La clé RIB %s ne correspond pas aux autres codes : %s %s %s." | ||
387 | 81 | |||
388 | 82 | #. module: l10n_fr_rib | ||
389 | 83 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_key_field | 83 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_key_field |
390 | 84 | msgid "key" | 84 | msgid "key" |
391 | 85 | msgstr "key" | 85 | msgstr "key" |
392 | 86 | 86 | ||
393 | 87 | #. module: l10n_fr_rib | 87 | #. module: l10n_fr_rib |
394 | 88 | #: model:ir.module.module,shortdesc:l10n_fr_rib.module_meta_information | ||
395 | 89 | msgid "French RIB Bank Details" | ||
396 | 90 | msgstr "Relevés d'identité bancaire français (RIB)" | ||
397 | 91 | |||
398 | 92 | #. module: l10n_fr_rib | ||
399 | 93 | #: help:res.partner.bank,key:0 | 88 | #: help:res.partner.bank,key:0 |
400 | 94 | msgid "The key is a number allowing to check the correctness of the other codes." | 89 | msgid "The key is a number allowing to check the correctness of the other codes." |
401 | 95 | msgstr "La clé est un nombre permettant de vérifier que les autres codes sont corrects." | 90 | msgstr "La clé est un nombre permettant de vérifier que les autres codes sont corrects." |
402 | 96 | 91 | ||
403 | 97 | #. module: l10n_fr_rib | 92 | #. module: l10n_fr_rib |
404 | 93 | #: constraint:res.partner.bank:0 | ||
405 | 94 | msgid "Error message in raise" | ||
406 | 95 | msgstr "Error message in raise" | ||
407 | 96 | |||
408 | 97 | #. module: l10n_fr_rib | ||
409 | 98 | #: field:res.partner.bank,key:0 | 98 | #: field:res.partner.bank,key:0 |
410 | 99 | msgid "Key" | 99 | msgid "Key" |
411 | 100 | msgstr "Clé" | 100 | msgstr "Clé" |
412 | 101 | 101 | ||
413 | 102 | #. module: l10n_fr_rib | 102 | #. module: l10n_fr_rib |
414 | 103 | #: code:addons/l10n_fr_rib/bank.py:54 | ||
415 | 104 | #: code:addons/l10n_fr_rib/bank.py:61 | ||
416 | 105 | #, python-format | ||
417 | 106 | msgid "Error" | ||
418 | 107 | msgstr "Error" | ||
419 | 108 | |||
420 | 109 | #. module: l10n_fr_rib | ||
421 | 110 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bic_field | ||
422 | 111 | msgid "bank_bic" | ||
423 | 112 | msgstr "bank_bic" | ||
424 | 113 | |||
425 | 114 | #. module: l10n_fr_rib | ||
426 | 103 | #: model:res.partner.bank.type,format_layout:l10n_fr_rib.bank_rib | 115 | #: model:res.partner.bank.type,format_layout:l10n_fr_rib.bank_rib |
427 | 104 | msgid "%(bank_name)s: %(acc_number)s" | 116 | msgid "%(bank_name)s: %(acc_number)s" |
428 | 105 | msgstr "%(bank_name)s: %(acc_number)s" | 117 | msgstr "%(bank_name)s: %(acc_number)s" |
429 | @@ -110,7 +122,7 @@ | |||
430 | 110 | msgstr "Banque" | 122 | msgstr "Banque" |
431 | 111 | 123 | ||
432 | 112 | #. module: l10n_fr_rib | 124 | #. module: l10n_fr_rib |
434 | 113 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.bank_acc_number_field | 125 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_acc_number_field |
435 | 114 | msgid "acc_number" | 126 | msgid "acc_number" |
436 | 115 | msgstr "acc_number" | 127 | msgstr "acc_number" |
437 | 116 | 128 | ||
438 | 117 | 129 | ||
439 | === modified file 'l10n_fr_rib/i18n/l10n_fr_rib.pot' | |||
440 | --- l10n_fr_rib/i18n/l10n_fr_rib.pot 2011-12-22 18:55:39 +0000 | |||
441 | +++ l10n_fr_rib/i18n/l10n_fr_rib.pot 2012-01-31 13:43:27 +0000 | |||
442 | @@ -4,10 +4,10 @@ | |||
443 | 4 | # | 4 | # |
444 | 5 | msgid "" | 5 | msgid "" |
445 | 6 | msgstr "" | 6 | msgstr "" |
447 | 7 | "Project-Id-Version: OpenERP Server 6.1beta\n" | 7 | "Project-Id-Version: OpenERP Server 6.1rc1\n" |
448 | 8 | "Report-Msgid-Bugs-To: \n" | 8 | "Report-Msgid-Bugs-To: \n" |
451 | 9 | "POT-Creation-Date: 2011-12-22 18:45+0000\n" | 9 | "POT-Creation-Date: 2012-01-27 18:47+0000\n" |
452 | 10 | "PO-Revision-Date: 2011-12-22 18:45+0000\n" | 10 | "PO-Revision-Date: 2012-01-27 18:47+0000\n" |
453 | 11 | "Last-Translator: <>\n" | 11 | "Last-Translator: <>\n" |
454 | 12 | "Language-Team: \n" | 12 | "Language-Team: \n" |
455 | 13 | "MIME-Version: 1.0\n" | 13 | "MIME-Version: 1.0\n" |
456 | @@ -22,13 +22,24 @@ | |||
457 | 22 | msgstr "" | 22 | msgstr "" |
458 | 23 | 23 | ||
459 | 24 | #. module: l10n_fr_rib | 24 | #. module: l10n_fr_rib |
460 | 25 | #: model:res.partner.bank.type,name:l10n_fr_rib.bank_rib | ||
461 | 26 | msgid "RIB and optional IBAN" | ||
462 | 27 | msgstr "" | ||
463 | 28 | |||
464 | 29 | #. module: l10n_fr_rib | ||
465 | 30 | #: field:res.partner.bank,rib_acc_number:0 | ||
466 | 31 | msgid "RIB account number" | ||
467 | 32 | msgstr "" | ||
468 | 33 | |||
469 | 34 | #. module: l10n_fr_rib | ||
470 | 25 | #: field:res.partner.bank,bank_code:0 | 35 | #: field:res.partner.bank,bank_code:0 |
471 | 26 | msgid "Bank Code" | 36 | msgid "Bank Code" |
472 | 27 | msgstr "" | 37 | msgstr "" |
473 | 28 | 38 | ||
474 | 29 | #. module: l10n_fr_rib | 39 | #. module: l10n_fr_rib |
477 | 30 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bic_field | 40 | #: code:addons/l10n_fr_rib/bank.py:55 |
478 | 31 | msgid "bank_bic" | 41 | #, python-format |
479 | 42 | msgid "The RIB key %s does not correspond to the other codes: %s %s %s." | ||
480 | 32 | msgstr "" | 43 | msgstr "" |
481 | 33 | 44 | ||
482 | 34 | #. module: l10n_fr_rib | 45 | #. module: l10n_fr_rib |
483 | @@ -42,6 +53,12 @@ | |||
484 | 42 | msgstr "" | 53 | msgstr "" |
485 | 43 | 54 | ||
486 | 44 | #. module: l10n_fr_rib | 55 | #. module: l10n_fr_rib |
487 | 56 | #: code:addons/l10n_fr_rib/bank.py:62 | ||
488 | 57 | #, python-format | ||
489 | 58 | msgid "The IBAN %s is not valid." | ||
490 | 59 | msgstr "" | ||
491 | 60 | |||
492 | 61 | #. module: l10n_fr_rib | ||
493 | 45 | #: model:ir.model,name:l10n_fr_rib.model_res_partner_bank | 62 | #: model:ir.model,name:l10n_fr_rib.model_res_partner_bank |
494 | 46 | msgid "Bank Accounts" | 63 | msgid "Bank Accounts" |
495 | 47 | msgstr "" | 64 | msgstr "" |
496 | @@ -52,8 +69,8 @@ | |||
497 | 52 | msgstr "" | 69 | msgstr "" |
498 | 53 | 70 | ||
499 | 54 | #. module: l10n_fr_rib | 71 | #. module: l10n_fr_rib |
502 | 55 | #: model:res.partner.bank.type,name:l10n_fr_rib.bank_rib | 72 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_rib_acc_number_field |
503 | 56 | msgid "RIB Bank Details" | 73 | msgid "rib_acc_number" |
504 | 57 | msgstr "" | 74 | msgstr "" |
505 | 58 | 75 | ||
506 | 59 | #. module: l10n_fr_rib | 76 | #. module: l10n_fr_rib |
507 | @@ -62,13 +79,6 @@ | |||
508 | 62 | msgstr "" | 79 | msgstr "" |
509 | 63 | 80 | ||
510 | 64 | #. module: l10n_fr_rib | 81 | #. module: l10n_fr_rib |
511 | 65 | #: code:addons/l10n_fr_rib/bank.py:83 | ||
512 | 66 | #, python-format | ||
513 | 67 | msgid "\n" | ||
514 | 68 | "The RIB key %s does not correspond to the other codes: %s %s %s." | ||
515 | 69 | msgstr "" | ||
516 | 70 | |||
517 | 71 | #. module: l10n_fr_rib | ||
518 | 72 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_key_field | 82 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_key_field |
519 | 73 | msgid "key" | 83 | msgid "key" |
520 | 74 | msgstr "" | 84 | msgstr "" |
521 | @@ -79,11 +89,28 @@ | |||
522 | 79 | msgstr "" | 89 | msgstr "" |
523 | 80 | 90 | ||
524 | 81 | #. module: l10n_fr_rib | 91 | #. module: l10n_fr_rib |
525 | 92 | #: constraint:res.partner.bank:0 | ||
526 | 93 | msgid "Error message in raise" | ||
527 | 94 | msgstr "" | ||
528 | 95 | |||
529 | 96 | #. module: l10n_fr_rib | ||
530 | 82 | #: field:res.partner.bank,key:0 | 97 | #: field:res.partner.bank,key:0 |
531 | 83 | msgid "Key" | 98 | msgid "Key" |
532 | 84 | msgstr "" | 99 | msgstr "" |
533 | 85 | 100 | ||
534 | 86 | #. module: l10n_fr_rib | 101 | #. module: l10n_fr_rib |
535 | 102 | #: code:addons/l10n_fr_rib/bank.py:54 | ||
536 | 103 | #: code:addons/l10n_fr_rib/bank.py:61 | ||
537 | 104 | #, python-format | ||
538 | 105 | msgid "Error" | ||
539 | 106 | msgstr "" | ||
540 | 107 | |||
541 | 108 | #. module: l10n_fr_rib | ||
542 | 109 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_bic_field | ||
543 | 110 | msgid "bank_bic" | ||
544 | 111 | msgstr "" | ||
545 | 112 | |||
546 | 113 | #. module: l10n_fr_rib | ||
547 | 87 | #: model:res.partner.bank.type,format_layout:l10n_fr_rib.bank_rib | 114 | #: model:res.partner.bank.type,format_layout:l10n_fr_rib.bank_rib |
548 | 88 | msgid "%(bank_name)s: %(acc_number)s" | 115 | msgid "%(bank_name)s: %(acc_number)s" |
549 | 89 | msgstr "" | 116 | msgstr "" |
550 | @@ -94,7 +121,7 @@ | |||
551 | 94 | msgstr "" | 121 | msgstr "" |
552 | 95 | 122 | ||
553 | 96 | #. module: l10n_fr_rib | 123 | #. module: l10n_fr_rib |
555 | 97 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.bank_acc_number_field | 124 | #: model:res.partner.bank.type.field,name:l10n_fr_rib.rib_acc_number_field |
556 | 98 | msgid "acc_number" | 125 | msgid "acc_number" |
557 | 99 | msgstr "" | 126 | msgstr "" |
558 | 100 | 127 |
Wouldn't it be possible to have just one RIB type, and make the IBAN fields read-write but not mandatory ?
Lionel Sausin.