Masques de code client

Bonjour,

Je viens de tomber sur un os.
Lorsque je mets le masque C{yy}{mm}{000@99} (modèle Elephant) pour le code client du module Tiers dans la version 7 de Dolibarr, il ne m’est pas possible de créer un tiers. Aucune erreur n’est affichée, lorsque l’on clique sur Créer, on retombe sur la même page (formulaire de création) sans explication.
Cela fonctionnait avec la version 5.0.1.

Après quelques recherches à coup de " echo ‹ truc ›; " dans les différents fichiers PHP, je suis remonté au fichier dolibarr/htdocs/core/lib/fonctions2.lib.php avec la fonction « function check_value($mask,$value) » suite appelée par le modèle Elephant des codes clients.
L’erreur « ErrorBadMaskBadRazMonth » est retournée par cette fonction.

Y a-t-il moyen de corriger le problème ?

J’ai un peu avancé dans le problème :
En fait, la fonction « check_value » du fichier htdocs/core/lib/functions2.lib.php retourne bien « ErrorBadMaskBadRazMonth » sur les 2 versions.

La différence est dans le fichier htdocs\core\modules\societe\mod_codeclient_elephant.php qui traite différemment l’erreur dans sa fonction « verif » vers la ligne 280 :
===== Version 5 =====
$result=check_value($mask,$code);
===== Version 7 =====
$result=check_value($mask,$code);
$result=check_value($mask,$code);
if (is_string($result))
{
$this->error = $result;
return -5;
}

Je vais modifier de cette façon, peut-être y aura-t-il une façon plus propre :
Fichier htdocs/core/lib/functions2.lib.php ligne 1240 :
- if ($maskraz > 12) return ‹ ErrorBadMaskBadRazMonth ›;
+ if ($maskraz > 12 && $maskraz != 99) return ‹ ErrorBadMaskBadRazMonth ›;

Je ne maitrise absolument pas GitHub, mais je suppose que je vais ouvrir une Issue pour ça.

1 « J'aime »

https://github.com/Dolibarr/dolibarr/issues/8344

Bonjour Arano,

grâce à toi j’avais pu solutionné ce problème et aujourd’hui je rencontre un problème similaire avec les fournisseurs.

Dolibarr en 7.0.3

Si tu avais un élément de réponse …