Anomalie #15941
ferméArgument contact is empty suite à une migration 18.10 > 20.03.14
Description
backlog :
Maarcourrier en 2003.14 suite à une migration d'une 18.10
je fais une recherche globale avec 500 résutats en superadmin et j'ai l'erreur suivante :
Fatal error: Uncaught Exception: Argument contact is empty in /var/www/html/MaarchCourrier/src/core/models/ValidatorModel.php:28 Stack trace: #0 /var/www/html/MaarchCourrier/src/app/contact/controllers/ContactController.php(1561): SrcCore\models\ValidatorModel::notEmpty(Array, Array) #1 /var/www/html/MaarchCourrier/src/app/contact/controllers/ContactController.php(1439): Contact\controllers\ContactController::getFormattedOnlyContact(Array) #2 /var/www/html/MaarchCourrier/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php(799): Contact\controllers\ContactController::getFormattedContacts(Array) #3 /var/www/html/MaarchCourrier/core/class/class_core_tools.php(1258): require('/var/www/html/M...') #4 /var/www/html/MaarchCourrier/apps/maarch_entreprise/index.php(225): core_tools->insert_page() #5 {main} thrown in /var/www/html/MaarchCourrier/src/core/models/ValidatorModel.php on line 28
Analyse
certains courriers sont associés à des contacts qui n'existent pas dans la table contact, en plus d'etre associés aux bons contacts.
1/ On affiche un courrier qui bug, il est associé a 2 contacts
grigny_2003=# select * from resource_contacts where res_id = 4535;
-[ RECORD 1 ]------
id | 2
res_id | 4535
item_id | 216
type | user
mode | recipient
-[ RECORD 2 ]------
id | 223
res_id | 4535
item_id | 5651
type | contact
mode | sender
-[ RECORD 3 ]------
id | 224
res_id | 4535
item_id | 1595
type | contact
mode | sender
Un des deux n'existe pas :
grigny_2003=# select * from contacts where id = 5651;
(0 ligne)
grigny_2003=# select * from contacts where id = 1595;
-[ RECORD 1 ]-------+----------------------------
id | 1595
civility |
firstname |
lastname |
company | COTTEL Réseaux
department |
function |
address_number |
address_street |
address_additional1 |
address_additional2 |
address_postcode |
address_town |
address_country |
email |
phone |
communication_means |
notes |
creator | 236
creation_date | 2019-10-14 12:00:28.315447
modification_date |
enabled | t
custom_fields | {"5": "Adresse principale"}
external_id | {"m2m": ""}
et ce probleme est présent sur d'autres courriers :
select count(*) from resource_contacts where item_id not in (select id from contacts)
-[ RECORD 1 ]
count | 90
Pour résoudre nous avons passés les commandes suivantes :
delete from resource_contacts where id in (select id from resource_contacts where item_id not in (select id from contacts) and mode = 'sender');
DELETE 83
grigny_2003=# delete from resource_contacts where id in (select id from resource_contacts where item_id not in (select id from contacts) and mode = 'recipient');
DELETE 7
--> probleme résolu