def _process_onchange_acc_number(self, acc_number, country): res = {} if not acc_number or country != self.env.ref('base.es'): return res # pragma: no cover bank_obj = self.env['res.bank'] acc_number = normalize_iban(acc_number) if len(acc_number) > 20: # It's an IBAN account try: validate_iban(acc_number) bank = bank_obj.search([('code', '=', acc_number[4:8])], limit=1) number = pretty_iban(acc_number) except exceptions.ValidationError: res['warning_message'] = _('IBAN account is not valid') return res else: number = self.check_bank_account(acc_number) if number == 'invalid-size': res['warning_message'] = _( 'Bank account should have 20 digits.') return res elif number == 'invalid-dc': res['warning_message'] = _('Invalid bank account.') return res bank = bank_obj.search([('code', '=', number[:4])], limit=1) res['acc_number'] = number res['bank_id'] = bank.id return res
def create(self, vals_list): for vals in vals_list: if vals.get('l10n_ch_qr_iban'): validate_qr_iban(vals['l10n_ch_qr_iban']) vals['l10n_ch_qr_iban'] = pretty_iban( normalize_iban(vals['l10n_ch_qr_iban'])) return super().create(vals_list)
def write(self, vals): if vals.get("acc_number"): for rec in self: if rec.acc_type == "iban": vals["acc_number"] = pretty_iban( normalize_iban(vals["acc_number"])) return super(ResPartnerBank, self).write(vals)
def write(self, vals): if vals.get('acc_number'): for rec in self: if rec.acc_type == 'iban': vals['acc_number'] = pretty_iban( normalize_iban(vals['acc_number'])) return super(ResPartnerBank, self).write(vals)
def create(self, vals): if "acc_type" in vals and vals["acc_type"] == "iban": vals["acc_number"] = pretty_iban(normalize_iban( vals["acc_number"])) if "beneficiary_id" in vals and not "partner_id" in vals: vals["partner_id"] = (self.env["openg2p.beneficiary"].browse( vals["beneficiary_id"]).partner_id) return super(ResPartnerBank, self).create(vals)
def create(self, vals): if 'acc_type' in vals and vals['acc_type'] == 'iban': vals['acc_number'] = pretty_iban(normalize_iban( vals['acc_number'])) if 'beneficiary_id' in vals and not 'partner_id' in vals: vals['partner_id'] = self.env['openg2p.beneficiary'].browse( vals['beneficiary_id']).partner_id return super(ResPartnerBank, self).create(vals)
def _convert_iban_to_clearing(self, iban): """ Convert a Swiss Iban to a clearing """ iban = normalize_iban(iban) if not iban[:2].upper() == 'CH': return False clearing = iban[4:9].lstrip('0') return clearing
def _convert_iban_to_ccp(self, iban): """ Convert a Postfinance IBAN into an old postal number """ iban = normalize_iban(iban) if not iban[:2].upper() == 'CH': return False part1 = iban[-9:-7] part2 = iban[-7:-1].lstrip('0') part3 = iban[-1:].lstrip('0') ccp = '{}-{}-{}'.format(part1, part2, part3) if not self._check_9_pos_postal_num(ccp): return False return ccp
def _onchange_acc_number_base_bank_from_iban(self): if self.acc_type != "iban": return acc_number = pretty_iban(normalize_iban(self.acc_number)).upper() country_code = self.acc_number[:2].lower() iban_template = _map_iban_template[country_code] first_match = iban_template[2:].find("B") + 2 last_match = iban_template.rfind("B") + 1 bank_code = acc_number[first_match:last_match].replace(" ", "") bank = self.env["res.bank"].search( [("code", "=", bank_code), ("country.code", "=", country_code.upper())], limit=1, ) self.update({"bank_id": bank.id, "acc_number": acc_number})
def _onchange_acc_number_base_bank_from_iban(self): if self.acc_type != 'iban': return acc_number = pretty_iban(normalize_iban(self.acc_number)).upper() country_code = self.acc_number[:2].lower() iban_template = _map_iban_template[country_code] first_match = iban_template[2:].find('B') + 2 last_match = iban_template.rfind('B') + 1 bank_code = acc_number[first_match:last_match].replace(' ', '') bank = self.env['res.bank'].search([ ('code', '=', bank_code), ('country.code', '=', country_code.upper()), ], limit=1) self.update({ 'bank_id': bank.id, 'acc_number': acc_number, })
def write(self, vals): if vals.get('l10n_ch_qr_iban'): self._validate_qr_iban(vals['l10n_ch_qr_iban']) vals['l10n_ch_qr_iban'] = pretty_iban( normalize_iban(vals['l10n_ch_qr_iban'])) return super().write(vals)