@@ -314,11 +314,8 @@ def _get_commercial_partner(self, partners):
314
314
commercial_partner = self .env ["res.partner" ].browse ()
315
315
return commercial_partner
316
316
317
- def getPartnerBase (self , DatiAnagrafici ): # noqa: C901
318
- if not DatiAnagrafici :
319
- return False
320
- partner_model = self .env ["res.partner" ]
321
- cf = DatiAnagrafici .CodiceFiscale or False
317
+ def _extract_vat (self , DatiAnagrafici ):
318
+ """Extract VAT from node DatiAnagrafici."""
322
319
vat = False
323
320
if DatiAnagrafici .IdFiscaleIVA :
324
321
id_paese = DatiAnagrafici .IdFiscaleIVA .IdPaese .upper ()
@@ -330,43 +327,51 @@ def getPartnerBase(self, DatiAnagrafici): # noqa: C901
330
327
# XXX maybe San Marino needs special formatting too?
331
328
else :
332
329
vat = id_codice
330
+ return vat
331
+
332
+ def _prepare_partner_values (self , DatiAnagrafici , cf , vat ):
333
+ country_id = False
334
+ if DatiAnagrafici .IdFiscaleIVA :
335
+ CountryCode = DatiAnagrafici .IdFiscaleIVA .IdPaese
336
+ countries = self .CountryByCode (CountryCode )
337
+ if countries :
338
+ country_id = countries [0 ].id
339
+ else :
340
+ raise UserError (_ ("Country Code %s not found in system." ) % CountryCode )
341
+ vals = {
342
+ "vat" : vat ,
343
+ "fiscalcode" : cf ,
344
+ "is_company" : (DatiAnagrafici .Anagrafica .Denominazione and True or False ),
345
+ "eori_code" : DatiAnagrafici .Anagrafica .CodEORI or "" ,
346
+ "country_id" : country_id ,
347
+ }
348
+ if DatiAnagrafici .Anagrafica .Nome :
349
+ vals ["firstname" ] = DatiAnagrafici .Anagrafica .Nome
350
+ if DatiAnagrafici .Anagrafica .Cognome :
351
+ vals ["lastname" ] = DatiAnagrafici .Anagrafica .Cognome
352
+ if DatiAnagrafici .Anagrafica .Denominazione :
353
+ vals ["name" ] = DatiAnagrafici .Anagrafica .Denominazione
354
+ return vals
355
+
356
+ def getPartnerBase (self , DatiAnagrafici ): # noqa: C901
357
+ if not DatiAnagrafici :
358
+ return False
359
+ partner_model = self .env ["res.partner" ]
360
+ cf = DatiAnagrafici .CodiceFiscale or False
361
+ vat = self ._extract_vat (DatiAnagrafici )
333
362
partners = self ._search_partner_by_vat_fc (vat , cf )
334
363
commercial_partner = self ._get_commercial_partner (partners )
335
364
if len (partners ) > 1 and not commercial_partner :
336
- return False
365
+ found_partner = partner_model . browse ()
337
366
elif commercial_partner :
338
367
commercial_partner_id = commercial_partner .id
339
368
self .check_partner_base_data (commercial_partner_id , DatiAnagrafici )
340
- return commercial_partner_id
369
+ found_partner = commercial_partner
341
370
else :
342
371
# partner to be created
343
- country_id = False
344
- if DatiAnagrafici .IdFiscaleIVA :
345
- CountryCode = DatiAnagrafici .IdFiscaleIVA .IdPaese
346
- countries = self .CountryByCode (CountryCode )
347
- if countries :
348
- country_id = countries [0 ].id
349
- else :
350
- raise UserError (
351
- _ ("Country Code %s not found in system." ) % CountryCode
352
- )
353
- vals = {
354
- "vat" : vat ,
355
- "fiscalcode" : cf ,
356
- "is_company" : (
357
- DatiAnagrafici .Anagrafica .Denominazione and True or False
358
- ),
359
- "eori_code" : DatiAnagrafici .Anagrafica .CodEORI or "" ,
360
- "country_id" : country_id ,
361
- }
362
- if DatiAnagrafici .Anagrafica .Nome :
363
- vals ["firstname" ] = DatiAnagrafici .Anagrafica .Nome
364
- if DatiAnagrafici .Anagrafica .Cognome :
365
- vals ["lastname" ] = DatiAnagrafici .Anagrafica .Cognome
366
- if DatiAnagrafici .Anagrafica .Denominazione :
367
- vals ["name" ] = DatiAnagrafici .Anagrafica .Denominazione
368
-
369
- return partner_model .create (vals ).id
372
+ vals = self ._prepare_partner_values (DatiAnagrafici , cf , vat )
373
+ found_partner = partner_model .create (vals )
374
+ return found_partner .id
370
375
371
376
def getCedPrest (self , cedPrest ):
372
377
partner_model = self .env ["res.partner" ]
0 commit comments