From 49fe63a4d041f1fcbda045e553bc56c67391b8c6 Mon Sep 17 00:00:00 2001 From: "John (jol)" Date: Thu, 12 Aug 2021 13:11:54 +0000 Subject: [PATCH] [FIX] account: fix fiscal position with delivery address The goal is to ensure that 2 conditions are met for a fiscal position to be applied (within the EU): - The customer must have a valid VAT number from another EU Member State - The goods must leave the country of origin Task: 2596204 X-original-commit: ca0fc6cda38fd1e4d3c8cd8953bea790a90001f5 Part-of: odoo/odoo#81832 --- addons/account/models/partner.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/addons/account/models/partner.py b/addons/account/models/partner.py index 775ac97b105..56510f2d2c5 100644 --- a/addons/account/models/partner.py +++ b/addons/account/models/partner.py @@ -215,8 +215,15 @@ class AccountFiscalPosition(models.Model): if not partner: return self.env['account.fiscal.position'] - # if no delivery use invoicing - if not delivery: + company = self.env.company + intra_eu = vat_exclusion = False + if company.vat and partner.vat: + eu_country_codes = set(self.env.ref('base.europe').country_ids.mapped('code')) + intra_eu = company.vat[:2] in eu_country_codes and partner.vat[:2] in eu_country_codes + vat_exclusion = company.vat[:2] == partner.vat[:2] + + # If company and partner have the same vat prefix (and are both within the EU), use invoicing + if not delivery or (intra_eu and vat_exclusion): delivery = partner # partner manually set fiscal position always win