OI
Join ServerOdoo Italia
supporto
Problema controllo "La Partita Iva è già assegnata ad un altro partner."
Se può aiutare a capire il problema, il record viene creato con il metodo
create
, non da GUICreo un thread senza intasare il canale
Sembra arrivare da qui il problema:
https://github.com/odoo/odoo/blob/14.0/odoo/addons/base/models/res_partner.py#L268
Sembra arrivare da qui il problema:
https://github.com/odoo/odoo/blob/14.0/odoo/addons/base/models/res_partner.py#L268
E l'errore è richiamato da questo modello
https://github.com/OCA/partner-contact/blob/14.0/partner_vat_unique/models/res_partner.py
https://github.com/OCA/partner-contact/blob/14.0/partner_vat_unique/models/res_partner.py
Provo a riassumere:
- fai un create di n° contatti da python
- i contatti NON hanno la stessa p.iva
- entri sul contatto e vedi il warning dello screenshot?
Considera che quel warning viene mostrato se il computed field (non-stored) same_vat_partner_id è True, viene ricalcolato ogni volta che entri sul record
https://github.com/odoo/odoo/blob/b061cf714cbd24b4c6cd39dc1b968d69857d74af/odoo/addons/base/models/res_partner.py#LL175C17-L175C17
se non ci sono state modifiche a quel meccanismo, direi che per forza di cose risulta una p.iva doppia SENZA che i contatti abbiano un parent_id comune.
In pratica la computed func. setta il computed field a True ogni volta che entri sulla vista, mostrando il div di conseguenza. Viene messo a True se risulta un altro contatto con la stessa "vat" , ma in sostanza skippa il check se fanno parte della stessa organizzazione
- fai un create di n° contatti da python
- i contatti NON hanno la stessa p.iva
- entri sul contatto e vedi il warning dello screenshot?
Considera che quel warning viene mostrato se il computed field (non-stored) same_vat_partner_id è True, viene ricalcolato ogni volta che entri sul record
https://github.com/odoo/odoo/blob/b061cf714cbd24b4c6cd39dc1b968d69857d74af/odoo/addons/base/models/res_partner.py#LL175C17-L175C17
se non ci sono state modifiche a quel meccanismo, direi che per forza di cose risulta una p.iva doppia SENZA che i contatti abbiano un parent_id comune.
In pratica la computed func. setta il computed field a True ogni volta che entri sulla vista, mostrando il div di conseguenza. Viene messo a True se risulta un altro contatto con la stessa "vat" , ma in sostanza skippa il check se fanno parte della stessa organizzazione
La creazione viene fatta sempre lato python, l'errore lo trovo anche se cerco di creare un solo contatto tramite un button apposito (non dentro al form res.partner, è un modello differente), vedo proprio il validation error della partita iva duplicata
Capisco, comunque il modulo che hai linkato si basa sempre sul meccanismo "same_vat_partner_id", sostanzialmente se il campo (che viene nativamente computato) è True, invece di mostrare il warning da lo UserError. Abbiamo fatto letteralmente la stessa cosa (scritta in modo leggermente diverso) internamente, quindi conosco bene il meccanismo e so che in genere non da problemi.
L'unico motivo per cui può dare il problema è che l'ORM venga di fatto incaricata di creare un contatto con una vat già esistente, quindi in un qualche punto viene sicuramente incaricata di farlo. A MENO CHE non si sia bloccato per qualche motivo assurdo il campo su True e non venga ricalcolato perché poppa prima lo User error, ma mi sembra assurdo.
Per togliere il dubbio, proverei a "sbloccare" il campo passando "save_vat_partner_id"=False tra i values del create (verrebbe comunque reimpostato al valore True, eventualmente, al primo accesso al record da user interface).
A parte questo, hai loggato le vat dei contatti creati? Dev'esserci per forza la creazione di un contatto con vat duplicata, da qualche parte.
Ultima cosa, ho poca esperienza coi test quindi non so se possano attivarsi " a caso ", sinceramente non penso possa succedere, ma annovero anche questo tra i motivi potrebbero portare alla creazione dei due contatti con vat uguale.
L'unico motivo per cui può dare il problema è che l'ORM venga di fatto incaricata di creare un contatto con una vat già esistente, quindi in un qualche punto viene sicuramente incaricata di farlo. A MENO CHE non si sia bloccato per qualche motivo assurdo il campo su True e non venga ricalcolato perché poppa prima lo User error, ma mi sembra assurdo.
Per togliere il dubbio, proverei a "sbloccare" il campo passando "save_vat_partner_id"=False tra i values del create (verrebbe comunque reimpostato al valore True, eventualmente, al primo accesso al record da user interface).
A parte questo, hai loggato le vat dei contatti creati? Dev'esserci per forza la creazione di un contatto con vat duplicata, da qualche parte.
Ultima cosa, ho poca esperienza coi test quindi non so se possano attivarsi " a caso ", sinceramente non penso possa succedere, ma annovero anche questo tra i motivi potrebbero portare alla creazione dei due contatti con vat uguale.