# Copyright 2015 Tecnativa - Antonio Espinosa # Copyright 2017 Tecnativa - David Vidal # Copyright 2019 FactorLibre - Rodrigo Bonilla # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import api, fields, models class ResPartner(models.Model): _inherit = 'res.partner' vies_passed = fields.Boolean( string="VIES validation passed", readonly=True) @api.model def simple_vat_check(self, country_code, vat_number): res = super(ResPartner, self).simple_vat_check( country_code, vat_number, ) partner = self.env.context.get('vat_partner') if partner and self.vies_passed: # Can not be sure that this VAT is signed up in VIES partner.update({'vies_passed': False}) return res @api.model def vies_vat_check(self, country_code, vat_number): partner = self.env.context.get('vat_partner') if partner: # If there's an exception checking VIES, the upstream method will # call simple_vat_check and thus the flag will be removed partner.update({'vies_passed': True}) res = super(ResPartner, self).vies_vat_check(country_code, vat_number) if not res: return self.simple_vat_check(country_code, vat_number) return res @api.constrains('vat', 'commercial_partner_country_id') def check_vat(self): for partner in self: partner = partner.with_context(vat_partner=partner) super(ResPartner, partner).check_vat()