Durant mon exploration de Dolibarr, j’ai constaté des anomalies récurrente sur un onglet en particulier de mon entreprise, l’onglet Facturation/Paiement
Cependant, malgré des tests, comparaison et recherche, je me retrouve à court de solutions.
Voici 2 images qui vous montrerons le bug que je rencontre.
Sur la première vous pouvez constater la présence d’une ligne Créé par.
Pourtant les deux factures ont bien été produite par le même profil de la même manière, sur le même ordinateur, dans des tranches horaires similaires, avec les mêmes droits, etc…
Je peine donc à expliquer à mes équipes pourquoi ces informations disparaisse et surtout comment je vais pouvoir réparer cela.
Ce bug remonte sur des factures datant parfois de début 2023
Cela est mince comme informations mais le problème n’a été découvert que très récent et dépasse ma compétence sur Dolibarr (ne connaissant que Python et pas du tout PHP).
Merci à toutes celles et ceux qui pourront m’aider
hello une piste comme une autre, le chemin pour créer la dite facture
à partir d’une commande, depuis la fiche du tiers ou avec le menu « nouvelle facture »
Je test lundi, malheureusement je ne pourrais pas faire de test avant.
Mais a priori, la personne me dis que le bug survient même lorsqu’elle fait les mêmes actions.
Bonjour,
Non il s’agit d’une facture d’origine.
Je sais par contre que le clonage pose des problème car la facture cloné récupère toutes les informations temporelles de l’originale et complique sont exploitation, mais il s’agit d’un autre sujet, sur lequel je dois m’atteler aussi.
Est ce que les factures sont crées en appuyant sur le bouton créer facture ? ou en classant la commande livrée et en s’appuyant sur le module workflow ?
Bonjour,
pour débusquer le bug je ne vois pas grand chose d’autre que d’activer le mode debug, attendre que le bug se présente et ensuite analyser & extraire les données du log … fastidieux mais seul moyen d’avoir des infos fiables pour en déduire l’origine du pb.
Il s’agit de la première option, et je n’ai toujours pas trouver d’autres pistes malheureusement
Je vais tâcher de continuer à investiguer et vais voir si je peux activer le mode debug, car je n’ai pas tous les droits et que nous sous-traitons la compétence Dolibarr en externe (n’étant que récemment arrivé dans mon entreprise et junior sur le sujet).
Le seul hic que je peux voir avec cela, c’est que les équipes devront attendre avant de faire leur tâche pour que je puisse activer le mode debug, vu qu’il est à priori aléatoire.
Merci beaucoup pour vos retours, et en espérant que ce début 2025 me permette de débusquer ce vilain bug !
Je suis en attente d’une demande précédente depuis plus d’un mois, il est en arrêt
Donc je ne veux pas l’harceler et remplir sa boite mail, il risquerait de prendre peur
hello,
bon j’ai une autre piste alors: solliciter un autre prestataire, lui demander de monter un dolibarr « pré prod », « cloner » votre dolibarr de prod puis secouer ce dolibarr dans tous les sens avec le mode debug actif pour provoquer le bug et ensuite laisser le pro extraire des logs les infos intéressantes pour trouver le bug et la solution …
(ou faire ça vous même chez vous sur un dolibarr installé sur une machine de tests / dev)
Alors je vais voir cela avec ma responsable et espère que cela nous permettra de trouver une solution à ces bugs
Merci pour les conseils, et je ferai un nouveau message pour indiquer si on a résolu le problème et si oui comment, dès que j’aurai pu avoir un retour sur le sujet !
Après plusieurs recherche et investigations, nous avons enfin une solution !
Alors jusqu’à maintenant, nous étions sur la version 18.x.x
Il s’avère qu’en parcourant le code de Dolibarr, lors de la création d’une facture , le champ de la création du profil ayant créer la facture pouvant rencontrer un problème.
La personne qui m’a épaulé sur le sujet à découvert, que le champ fk_user_author dans utilisé pour récupérer l’information de l’id du profil créateur était spécifié par la variable user_author, qui est déprécié.
Ainsi, nous avons pu récupérer ces informations qui sont tout de même conserver dans une autre table, pour retrouver la donnée, et garantir l’exactitude des informations sur notre Dolibarr.
La table qui nous a sauvé est la table llx_ecm_files, bon a savoir si jamais d’autres personnes se retrouve dans la même situation.
Et depuis que nous sommes passé sur la version 20.x.x, le soucis semble avoir été réglé car la variable dépréciée, a été remplacée. Cela veut dire que les utilisateurs avec une version antérieur à la 20.x.x, peuvent être concerné par le problème.
Voici pour celles et ceux qui en auraient besoin, son code qui nous a permit de résoudre notre problème.
//https://github.com/loafoflead
require '../../main.inc.php';
$table = 'llx_facture';
$missing_field = 'fk_user_author';
$replacement_field = 'fk_user_c';
$obj_type = 'facture';
$db->begin();
$success = $db->query("SELECT ref FROM `".$table."` WHERE " . $missing_field . " IS NULL;");
// $success = $db->query("SELECT * FROM `llx_ecm_files` WHERE filepath LIKE '%facture%';");
if ($success) {
$objects = [];
for ($i = 0; $i < $db->num_rows($success); $i ++) {
array_push($objects, $db->fetch_object($success));
}
print count($objects) + "<br>\n";
foreach ($objects as $obj) {
$success = $db->query("SELECT ".$replacement_field" FROM `llx_ecm_files` WHERE filepath LIKE '%" . $obj->ref . "%' AND src_object_type = '".$obj_type."'");
$ecm;
if ($success) {
$ecm = $db->fetch_object($success);
print 'Facture ' . $obj->ref . ' authored by: ' . $ecm->$replacement_field . '<br />';
}
else {
print 'ERROR: ' . $db->lasterror();
$db->rollback();
die("ERROR READING FROM `llx_ecm_files`");
// continue;
}
$resql = $db->query(
"UPDATE `".$table."` SET ".$table.".".$missing_field." = '" . $ecm->fk_user_c. "' WHERE ".$table.".".$missing_field." IS NULL AND ".$table.".ref = '" . $obj->ref . "';"
);
if (!$resql) {
print "ERROR UPDATING: " . $db->lasterror();
$db->rollback();
die("ERROR: SETTING FIELDS OF `".$table."`");
}
}
$db->commit();
}
else {
print $db->lasterror();
$db->rollback();
die();
}
Dispose d’un menu contextuel
Hello @Platypus
merci pour ce retour détaillé, comme nous maintenons la 18 jusqu’en 2028 (version LTS) je me suis permis de suivre ce bug et d’apporter le correctif suivant: