Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 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
Exemplo n.º 9
0
 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})
Exemplo n.º 10
0
 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,
     })
Exemplo n.º 11
0
 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)