Skip to content

Commit 06f1a50

Browse files
committed
[IMP] l10n_it_fatturapa_in: commercial partner search improvement
1 parent 659df4b commit 06f1a50

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

l10n_it_fatturapa_in/wizard/wizard_import_fatturapa.py

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,26 @@ def getPartnerBase(self, DatiAnagrafici, partnerCreate=True): # noqa: C901
202202
cf, vat = self._define_vat_fiscalcode(DatiAnagrafici)
203203

204204
partners = self._find_partners_by_cf_vat(DatiAnagrafici)
205+
commercial_partner_id = self._find_commercial_partner(DatiAnagrafici, partners)
206+
if commercial_partner_id is None:
207+
return False
208+
if partners:
209+
if not commercial_partner_id:
210+
commercial_partner_id = partners[0].commercial_partner_id.id
211+
self.check_partner_base_data(commercial_partner_id, DatiAnagrafici)
212+
return commercial_partner_id
213+
else:
214+
# partner to be created
215+
vals = self._prepare_partner_values(DatiAnagrafici, vat, cf)
216+
217+
if partnerCreate:
218+
return partner_model.create(vals).id
219+
220+
return vals
221+
222+
def _find_commercial_partner(self, DatiAnagrafici, partners):
205223
commercial_partner_id = False
224+
cf, vat = self._define_vat_fiscalcode(DatiAnagrafici)
206225
if len(partners) > 1:
207226
for partner in partners:
208227
if (
@@ -216,21 +235,9 @@ def getPartnerBase(self, DatiAnagrafici, partnerCreate=True): # noqa: C901
216235
"present in db." % (vat, cf)
217236
)
218237
)
219-
return False
238+
return None
220239
commercial_partner_id = partner.commercial_partner_id.id
221-
if partners:
222-
if not commercial_partner_id:
223-
commercial_partner_id = partners[0].commercial_partner_id.id
224-
self.check_partner_base_data(commercial_partner_id, DatiAnagrafici)
225-
return commercial_partner_id
226-
else:
227-
# partner to be created
228-
vals = self._prepare_partner_values(DatiAnagrafici, vat, cf)
229-
230-
if partnerCreate:
231-
return partner_model.create(vals).id
232-
233-
return vals
240+
return commercial_partner_id
234241

235242
def _find_partners_by_cf_vat(self, DatiAnagrafici):
236243
partner_model = self.env["res.partner"]
@@ -274,7 +281,17 @@ def _add_company_domain_from_attachment(self, domain):
274281

275282
def _define_vat_fiscalcode(self, DatiAnagrafici):
276283
cf = DatiAnagrafici.CodiceFiscale or False
277-
vat = self.extract_vat(DatiAnagrafici)
284+
vat = False
285+
if DatiAnagrafici.IdFiscaleIVA:
286+
id_paese = DatiAnagrafici.IdFiscaleIVA.IdPaese.upper()
287+
id_codice = re.sub(r"\W+", "", DatiAnagrafici.IdFiscaleIVA.IdCodice).upper()
288+
# Format Italian VAT ID to always have 11 char
289+
# to avoid validation error when creating the given partner
290+
if id_paese == "IT" and not id_codice.startswith("IT"):
291+
vat = "IT{}".format(id_codice.rjust(11, "0")[:11])
292+
# XXX maybe San Marino needs special formatting too?
293+
else:
294+
vat = id_codice
278295
return cf, vat
279296

280297
def _prepare_partner_values(self, DatiAnagrafici, vat=False, cf=False):
@@ -1868,6 +1885,8 @@ def _process_fatturapa_attachment(self, fatturapa_attachments):
18681885
"invoice_id": invoice.id,
18691886
}
18701887
)
1888+
elif isinstance(partner, bool):
1889+
invoice.write({"intermediary": False})
18711890
else:
18721891
new_intermediary_data.append(
18731892
{
@@ -1977,18 +1996,3 @@ def importFatturaPA(self):
19771996
"type": "ir.actions.act_window",
19781997
"domain": [("id", "in", new_invoices)],
19791998
}
1980-
1981-
def extract_vat(self, DatiAnagrafici):
1982-
"""Extract VAT from node DatiAnagrafici."""
1983-
vat = False
1984-
if DatiAnagrafici.IdFiscaleIVA:
1985-
id_paese = DatiAnagrafici.IdFiscaleIVA.IdPaese.upper()
1986-
id_codice = re.sub(r"\W+", "", DatiAnagrafici.IdFiscaleIVA.IdCodice).upper()
1987-
# Format Italian VAT ID to always have 11 char
1988-
# to avoid validation error when creating the given partner
1989-
if id_paese == "IT" and not id_codice.startswith("IT"):
1990-
vat = "IT{}".format(id_codice.rjust(11, "0")[:11])
1991-
# XXX maybe San Marino needs special formatting too?
1992-
else:
1993-
vat = id_codice
1994-
return vat

0 commit comments

Comments
 (0)