diff options
| author | Andrea Grazioso (agr-odoo) <agr@odoo.com> | 2019-10-10 13:41:32 +0000 |
|---|---|---|
| committer | fw-bot <otis@odoo.com> | 2019-10-11 09:16:14 +0000 |
| commit | 8a098afa09dd728fdb2e7f8e57a93e9cbb4e4631 (patch) | |
| tree | 30aa789ac5de9c5c165efd140ef1ac4b9045e963 /addons/l10n_co/models | |
| parent | 3fa123d69fb5d5c1e396bd8307eedc2a3549e72c (diff) | |
[FIX] l10n_co: crash when adding contact
Install l10n_co,contacts. Open contacts.
Several crash messages will popup because the override in l10n_co of
res_partner is not computing the 'l10n_co_verification_code' field for
every record. Changing the implementation to be sure to store some value
for every record fix the issue.
opw-2082583
closes odoo/odoo#38473
X-original-commit: 2489c40507abba5df833b0db7b5a02749b2f749a
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Diffstat (limited to 'addons/l10n_co/models')
| -rw-r--r-- | addons/l10n_co/models/res_partner.py | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/addons/l10n_co/models/res_partner.py b/addons/l10n_co/models/res_partner.py index 986ecf2397e..0fb3bf9e149 100644 --- a/addons/l10n_co/models/res_partner.py +++ b/addons/l10n_co/models/res_partner.py @@ -24,26 +24,28 @@ class ResPartner(models.Model): def _compute_verification_code(self): multiplication_factors = [71, 67, 59, 53, 47, 43, 41, 37, 29, 23, 19, 17, 13, 7, 3] - for partner in self.filtered(lambda partner: partner.vat and partner.country_id == self.env.ref('base.co') and - len(partner.vat) <= len(multiplication_factors)): - number = 0 - padded_vat = partner.vat - - while len(padded_vat) < len(multiplication_factors): - padded_vat = '0' + padded_vat - - # if there is a single non-integer in vat the verification code should be False - try: - for index, vat_number in enumerate(padded_vat): - number += int(vat_number) * multiplication_factors[index] - - number %= 11 - - if number < 2: - partner.l10n_co_verification_code = number - else: - partner.l10n_co_verification_code = 11 - number - except ValueError: + for partner in self: + if partner.vat and partner.country_id == self.env.ref('base.co') and len(partner.vat) <= len(multiplication_factors): + number = 0 + padded_vat = partner.vat + + while len(padded_vat) < len(multiplication_factors): + padded_vat = '0' + padded_vat + + # if there is a single non-integer in vat the verification code should be False + try: + for index, vat_number in enumerate(padded_vat): + number += int(vat_number) * multiplication_factors[index] + + number %= 11 + + if number < 2: + partner.l10n_co_verification_code = number + else: + partner.l10n_co_verification_code = 11 - number + except ValueError: + partner.l10n_co_verification_code = False + else: partner.l10n_co_verification_code = False @api.constrains('vat', 'country_id', 'l10n_co_document_type') |
