Caractères spéciaux dans les références poduits

Bonjour à tous!

Fidèle utilisateur de Dolibarr depuis la version 3, je rencontre un petit problème (qui n’est pas vraiment un bug en fait).

Je m’explique : le caractère « / » dans une référence de produit ou de service est systématiquement corrigé par un « _ » ce qui impose de le corriger directement via la base de données ou via un import de fiches produits via les outils d’import.

Là où cela devient « pénible », c’est que chaque modification sur la fiche produit (modification du prix, de la description etc.), change systématiquement la référence et oblige à tout recommencer (import ou correction via base de données).

J’ai un peu essayé de changer le type de caractères de la base de données, mais je pense qu’il y a un script qui doit intervenir et rationaliser les références produits, puisque cela a été sans succès.

J’ai aussi cherché dans les réglages, en vain.

Pour la version de Dolibarr cela se produit aussi bien en version 9, 10 et 11
Je l’ai testé sur une instance Linux sous Apache et MariaDB 10.1.

Si quelqu’un à une idée ou a déjà été confronté à ce problème, tout aide sera la bienvenue.

Merci d’avance à tous!

B9njour,

Oui la ref n’admet pas de caractère spéciaux à chaque maj ou création il y a un nettoyage avant écriture en base

    function dol_string_nospecial($str, $newstr = '_', $badcharstoreplace = '')
     {
     $forbidden_chars_to_replace = array(" ", "'", "/", "\\", ":", "*", "?", "\"", "<", ">", "|", "[", "]", ",", ";", "=", '°'); // more complete than dol_sanitizeFileName
     $forbidden_chars_to_remove = array();
     if (is_array($badcharstoreplace)) $forbidden_chars_to_replace = $badcharstoreplace;
     //$forbidden_chars_to_remove=array("(",")");
      
     return str_replace($forbidden_chars_to_replace, $newstr, str_replace($forbidden_chars_to_remove, "", $str));
     }

Bonjour,
Même soucis, j’ai remplacé les « / » par des « . » et tout va bien !

Bonjour,

Un grand merci à tous! Sur quel fichier faut-il intervenir?

Slt
Definition at line 955 of file [functions.lib.php]

(https://doxygen.dolibarr.org/develop/d9/d69/functions_8lib_8php_source.html).

Merci PM17! Marche parfaitement en intervenant sur ce fichier!
Bonne journée à tous

Bonjour,

Faites tout de même attention :

  1. cette fonction est appelée dans pleins d’endroit dans Dolibarr, il peut y avoir des fonctionnalités qui ne marchent plu…
  2. cette modification sera écrasée à chaque mise à jours.

Le mieux est quand même de ne pas utiliser de / dans les norms

1 « J'aime »

Bonjour,

L’usage du / est déconseillé car il s’agit d’un caractère de séparation dans les url et certains liens de dolibarr utilise la référence.

Bonne journée

1 « J'aime »

Merci à tous pour vos réponses et remarques.
Je vous dirais si je rencontre des problèmes particuliers, pour le moment, tout semble OK