diff --git a/addons/l10n_fr_rib/__init__.py b/addons/l10n_fr_rib/__init__.py index 801d6ad8945..bdaab364c54 100644 --- a/addons/l10n_fr_rib/__init__.py +++ b/addons/l10n_fr_rib/__init__.py @@ -1,19 +1,20 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# Copyright (C) 2009 Numérigraphe SARL. +# OpenERP, Open Source Management Solution +# Copyright (C) 2011 OpenERP SA (). # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# 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 General Public License for more details. +# GNU Affero General Public License for more details. # -# You should have received a copy of the GNU General Public License +# You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # ############################################################################## diff --git a/addons/l10n_fr_rib/__terp__.py b/addons/l10n_fr_rib/__openerp__.py similarity index 55% rename from addons/l10n_fr_rib/__terp__.py rename to addons/l10n_fr_rib/__openerp__.py index 43d3c995c24..8c87e8c0a3b 100644 --- a/addons/l10n_fr_rib/__terp__.py +++ b/addons/l10n_fr_rib/__openerp__.py @@ -1,37 +1,37 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# Copyright (C) 2009 Numérigraphe SARL. +# OpenERP, Open Source Management Solution +# Copyright (C) 2011 OpenERP SA (). # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# 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 General Public License for more details. +# GNU Affero General Public License for more details. # -# You should have received a copy of the GNU General Public License +# You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # ############################################################################## { - 'name': 'RIB', - 'version': '0.1', - 'category': 'Generic Modules/Base', - 'description': """ -This module install the base for RIB bank accounts (French standard for bank accounts). -To make it easier to enter RIB data, it will also allow to search for banks by code. - - """, - "author" : "Numérigraphe SARL", + 'name': 'French RIB Bank Details', + 'version': '1.0', + 'category': 'Localization/Account Charts', + 'description': ''' +This module installs the base for RIB bank accounts (French standard for bank accounts). +To make it easier to enter RIB data, it will also allow to search for banks by code.''', + 'author' : u'Numérigraphe SARL', 'depends': ['base', 'account'], 'init_xml': ['bank_data.xml', ], 'update_xml': ['bank_view.xml', ], 'installable': True, 'active': False, } + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_fr_rib/bank.py b/addons/l10n_fr_rib/bank.py index 69a9d2284f2..ccd868d0da2 100644 --- a/addons/l10n_fr_rib/bank.py +++ b/addons/l10n_fr_rib/bank.py @@ -1,19 +1,20 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# Copyright (C) 2009 Numérigraphe SARL. All Rights Reserved +# OpenERP, Open Source Management Solution +# Copyright (C) 2011 OpenERP SA (). # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# 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 General Public License for more details. +# GNU Affero General Public License for more details. # -# You should have received a copy of the GNU General Public License +# You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # ############################################################################## @@ -24,31 +25,36 @@ import unicodedata import netsvc from osv import fields, osv -# Add fields and behavior for French RIB class res_partner_bank(osv.osv): + """Add fields and behavior for French RIB""" _inherit = "res.partner.bank" def _check_key(self, cr, uid, ids): - ''' - Check the RIB key - ''' + """Check the RIB key""" for bank_acc in self.browse(cr, uid, ids): - # ignore the accounts of type other than rib + # Ignore the accounts of type other than rib if bank_acc.state !='rib': continue - # Fail if the needed values are empty of too short - if (not bank_acc.bank or not bank_acc.bank.code or len(bank_acc.bank.code) != 5 + if (not bank_acc.bank or not bank_acc.bank.code + or len(bank_acc.bank.code) != 5 or not bank_acc.office or len(bank_acc.office) != 5 or not bank_acc.acc_number or len(bank_acc.acc_number) != 11 or not bank_acc.key or len(bank_acc.key) != 2): return False - # get the rib data (without the key) - rib = "%s%s%s" % (bank_acc.bank.code, bank_acc.office, bank_acc.acc_number) - # translate letters into numbers according to a specific table (notice how s -> 2) - # Note: maketrans and translate work best with latin1 - that should not be a problem for RIB data - rib = rib.lower().encode('latin-1').translate(string.maketrans(u'abcdefghijklmnopqrstuvwxyz', u'12345678912345678923456789')) + # Get the rib data (without the key) + rib = "%s%s%s" % (bank_acc.bank.code, bank_acc.office, + bank_acc.acc_number) + # Translate letters into numbers according to a specific table + # (notice how s -> 2) + # Note: maketrans and translate work best with latin1 - that + # should not be a problem for RIB data + # XXX use dict((ord(a), b) for a, b in zip(intab, outtab)) + # and translate() + rib = rib.lower().encode('latin-1').translate( + string.maketrans(u'abcdefghijklmnopqrstuvwxyz', + u'12345678912345678923456789')) # compute the key key = 97 - (100 * int(rib)) % 97 @@ -57,9 +63,11 @@ class res_partner_bank(osv.osv): return False return True - def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): - #overwrite the search method in order to search not only on bank type == basic account number but also on type == rib - res = super(res_partner_bank, self).search(cr, uid, args, offset, limit, order, context=context, count=count) + def search(self, cr, uid, args, offset=0, limit=None, order=None, + context=None, count=False): + """Search on type == rib""" + res = super(res_partner_bank, self).search(cr, uid, args, offset, + limit=limit, order=order, context=context, count=count) if filter(lambda x:x[0] == 'acc_number' , args): #get the value of the search rib_value = filter(lambda x:x[0] == 'acc_number' , args)[0][2] @@ -68,16 +76,21 @@ class res_partner_bank(osv.osv): #add the new criterion args1 += [('rib', 'ilike', rib_value)] #append the results to the older search - res += super(res_partner_bank, self).search(cr, uid, args1, offset, limit, - order, context=context, count=count) + res += super(res_partner_bank, self).search(cr, uid, args1, offset, + limit, order, context=context, count=count) return res _columns = { - 'office': fields.char('Office Code', size=5, readonly=True, help="Office Code"), - 'key': fields.char('Key', size=2, readonly=True, help="The key is a number allowing to check the correctness of the other codes."), + 'office': fields.char('Office Code', size=5, readonly=True, + help="Office Code"), + 'key': fields.char('Key', size=2, readonly=True, + help="The key is a number allowing to check the " + "correctness of the other codes."), } - _constraints = [(_check_key, "The RIB key does not correspond to the other codes.", ["key"])] + _constraints = [(_check_key, + "The RIB key does not correspond to the other codes.", + ["key"])] res_partner_bank() @@ -86,23 +99,25 @@ class res_bank(osv.osv): _inherit = 'res.bank' # allow a search by code - def name_search(self, cr, user, name, args=None, operator='ilike', context=None, limit=80): - if not args: + def name_search(self, cr, user, name, args=None, operator='ilike', + context=None, limit=80): + if args is None: args = [] - if context is None: - context = {} ids = [] if name: - ids = self.search(cr, user, [('name', operator, name)] + args, limit=limit, context=context) + ids = self.search(cr, user, [('name', operator, name)] + args, + limit=limit, context=context) if not ids: - ids = self.search(cr, user, [('code', operator, name)] + args, limit=limit, context=context) + ids = self.search(cr, user, [('code', operator, name)] + args, + limit=limit, context=context) return self.name_get(cr, user, ids, context) # show the code before the name def name_get(self, cr, uid, ids, context=None): result = [] for bank in self.browse(cr, uid, ids, context): - result.append((bank.id, (bank.code and (bank.code + ' - ') or '') + bank.name)) + result.append((bank.id, + (bank.code and (bank.code + ' - ') or '') + bank.name)) return result res_bank() diff --git a/addons/l10n_fr_rib/bank_view.xml b/addons/l10n_fr_rib/bank_view.xml index eacfaf1cb5b..c30f3233a23 100644 --- a/addons/l10n_fr_rib/bank_view.xml +++ b/addons/l10n_fr_rib/bank_view.xml @@ -45,8 +45,8 @@ - - + + @@ -58,7 +58,7 @@ form - + @@ -70,8 +70,8 @@ tree - - + + @@ -82,7 +82,7 @@ tree - + -->