@@ -202,7 +202,26 @@ def getPartnerBase(self, DatiAnagrafici, partnerCreate=True): # noqa: C901
202
202
cf , vat = self ._define_vat_fiscalcode (DatiAnagrafici )
203
203
204
204
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 ):
205
223
commercial_partner_id = False
224
+ cf , vat = self ._define_vat_fiscalcode (DatiAnagrafici )
206
225
if len (partners ) > 1 :
207
226
for partner in partners :
208
227
if (
@@ -216,21 +235,9 @@ def getPartnerBase(self, DatiAnagrafici, partnerCreate=True): # noqa: C901
216
235
"present in db." % (vat , cf )
217
236
)
218
237
)
219
- return False
238
+ return None
220
239
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
234
241
235
242
def _find_partners_by_cf_vat (self , DatiAnagrafici ):
236
243
partner_model = self .env ["res.partner" ]
@@ -274,7 +281,17 @@ def _add_company_domain_from_attachment(self, domain):
274
281
275
282
def _define_vat_fiscalcode (self , DatiAnagrafici ):
276
283
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
278
295
return cf , vat
279
296
280
297
def _prepare_partner_values (self , DatiAnagrafici , vat = False , cf = False ):
@@ -1868,6 +1885,8 @@ def _process_fatturapa_attachment(self, fatturapa_attachments):
1868
1885
"invoice_id" : invoice .id ,
1869
1886
}
1870
1887
)
1888
+ elif isinstance (partner , bool ):
1889
+ invoice .write ({"intermediary" : False })
1871
1890
else :
1872
1891
new_intermediary_data .append (
1873
1892
{
@@ -1977,18 +1996,3 @@ def importFatturaPA(self):
1977
1996
"type" : "ir.actions.act_window" ,
1978
1997
"domain" : [("id" , "in" , new_invoices )],
1979
1998
}
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