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 _find_bank_account_id(self, account_number): """ Get res.partner.bank ID """ bank_account_id = None if account_number and len(account_number) > 4: iban_number = pretty_iban(account_number) bank_account = self.env['res.partner.bank'].search( [('acc_number', '=', iban_number)], limit=1) if bank_account: bank_account_id = bank_account.id return bank_account_id
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)