def onchange_iban(self, cursor, uid, ids, iban, acc_number, context={}): ''' Trigger to auto complete other fields. ''' acc_number = acc_number.strip() country_obj = self.pool.get('res.country') partner_obj = self.pool.get('res.partner') bic = None country_ids = [] if not iban: # Pre fill country based on company address user_obj = self.pool.get('res.users') user = user_obj.browse(cursor, uid, uid, context) country = partner_obj.browse(cursor, uid, user.company_id.partner_id.id ).country country_ids = [country.id] # Complete data with online database when available if country.code in sepa.IBAN.countries: info = sepa.online.account_info(country.code, acc_number) if info: bic = info.bic iban = info.iban else: return {} iban_acc = sepa.IBAN(iban) if iban_acc.valid: bank_id, country_id = get_or_create_bank( self.pool, cursor, uid, bic or iban_acc.BIC_searchkey ) return { 'value': { 'acc_number': iban_acc.localized_BBAN, 'iban': unicode(iban_acc), 'country': country_id or country_ids and country_ids[0] or False, 'bank': bank_id or bank_ids and bank_id[0] or False, } } raise osv.except_osv(_('Invalid IBAN account number!'), _("The IBAN number doesn't seem to be correct") )
def onchange_iban(self, cursor, uid, ids, iban, acc_number, context={}): ''' Trigger to auto complete other fields. ''' acc_number = acc_number.strip() country_obj = self.pool.get('res.country') partner_obj = self.pool.get('res.partner') bic = None country_ids = [] if not iban: # Pre fill country based on company address user_obj = self.pool.get('res.users') user = user_obj.browse(cursor, uid, uid, context) country = partner_obj.browse(cursor, uid, user.company_id.partner_id.id).country country_ids = [country.id] # Complete data with online database when available if country.code in sepa.IBAN.countries: info = sepa.online.account_info(country.code, acc_number) if info: bic = info.bic iban = info.iban else: return {} iban_acc = sepa.IBAN(iban) if iban_acc.valid: bank_id, country_id = get_or_create_bank( self.pool, cursor, uid, bic or iban_acc.BIC_searchkey) return { 'value': { 'acc_number': iban_acc.localized_BBAN, 'iban': unicode(iban_acc), 'country': country_id or country_ids and country_ids[0] or False, 'bank': bank_id or bank_ids and bank_id[0] or False, } } raise osv.except_osv(_('Invalid IBAN account number!'), _("The IBAN number doesn't seem to be correct"))