# 02. CHANGELOG DOLIBARR 24

# 2.1 Nouvelles fonctionnalités pour les utilisateurs

#### **INTELLIGENCE ARTIFICIELLE ET ASSISTANT MCP :** 

- NOUVEAU : Serveur MCP expérimental et assistant IA intégrés directement dans Dolibarr (#37888). MCP (Model Context Protocol) permet à Dolibarr d’exposer ses données à un assistant IA externe (tel que Claude), afin que celui-ci puisse interagir avec l’ERP en langage naturel.
- NOUVEAU : Outil vérification orthographique assistée par IA sur les zones de texte (#37692). Une action IA peut relire et corriger automatiquement la rédaction d’un document ou d’un email.
- NOUVEAU : Les outils IA sont disponibles directement dans l’éditeur de messages des tickets.
- NOUVEAU : Des exemples de modèles IA sont aﬀichés dans la page de configuration, pour aider au paramétrage des différents fournisseurs (OpenAI, Ollama, etc.).
- NOUVEAU : Ajout d’un outil de comptage pour l’IA (utilisé par le serveur MCP pour dénombrer des objets Dolibarr).
- NOUVEAU : Ajout du picto “Assistant IA” dans l’interface pour identifier les zones et boutons liés à l’IA.

**Astuce :**

**Ce que ça apporte**<span style="color: rgb(45, 194, 107); white-space: pre-wrap;"> :</span><span style="white-space: pre-wrap;"> Le serveur MCP expérimental ouvre la voie à une utilisation de Dolibarr en langage naturel : « Crée-moi un devis pour le client Dupont », « Donne-moi les factures impayées de ce mois », etc. C’est une révolution dans la façon d’interagir avec l’ERP, sans nécessiter de formation à l’interface.</span>

#### **SÉCURITÉ ET LOGS INALTÉRABLES :** 

- NOUVEAU : Utilisation d’un algorithme de hachage v2 basé sur SHA-256/HMAC pour les logs inaltérables (#37725). Cette évolution renforce la résistance aux falsifications du journal d’audit certifiable.
- NOUVEAU : Aﬀichage de la valeur cumulée (lifetime amount) sur la liste des logs inaltérables. Il est ainsi possible de vérifier en un coup d’œil la cohérence des montants enregistrés.
- NOUVEAU : Amélioration visuelle significative des pages de logs inaltérables (meilleure présentation, couleurs, navigation).
- NOUVEAU : Restriction IP par plage CIDR (#36855) : il est désormais possible de limiter l’accès à Dolibarr à des plages d’adresses IP spécifiques (ex : 192.168.1.0/24), plutôt que seulement à des adresses IP uniques.
- NOUVEAU : Le niveau de protection CSRF passe de 2 à 3 (MAIN\_SECURITY\_CSRF\_WITH\_TOKEN), renforçant la vérification des tokens anti-falsification sur les formulaires.
- NOUVEAU : L’option MAIN\_DISALLOW\_UNSECURED\_SELECT\_INTO\_EXTRAFIELDS\_FILTER est activée par défaut et déplacée dans le fichier conf.php. Cela bloque les filtres non sécurisés sur les extrachamps, évitant des injections SQL potentielles.
- NOUVEAU : Début d’implémentation de MAIN\_RESTRICTHTML\_ONLY\_VALID\_HTML=2 pour bloquer les balises HTML dangereuses dans les zones de contenu riche.
- NOUVEAU : L’utilisation de l’éditeur riche (WYSIWYG) est désactivée par défaut sur les pages publiques, pour limiter les risques XSS sur les formulaires ouverts à l’extérieur.
- NOUVEAU : Amélioration des outils de vérification d’intégrité des fichiers Dolibarr (contrôle des checksums des fichiers du core).

#### **COMPATIBILITÉ :**

- NOUVEAU : Bilan comparatif avec instantané de clôture (#37382) : la balance comparative peut aﬀicher un exercice clos comme référence, permettant de comparer l’exercice courant avec le bilan de clôture de l’exercice précédent.
- NOUVEAU : Message de confirmation avec lien après la validation d’une écriture comptable (#37383) : une fois une transaction validée, Dolibarr aﬀiche un lien direct vers l’écriture créée pour faciliter la navigation.
- NOUVEAU : Options d’export par défaut dans la comptabilité (#37938) : les préférences d’export comptable (format, colonnes, plage de dates) peuvent être sauvegardées.
- NOUVEAU : Système de multi-rapports comptables (#37248) : il est possible de créer et de gérer plusieurs formats de rapports comptables différents.
- NOUVEAU : Modèles de transactions (système complet, partie SQL incluse) (#37286, #36807) : des gabarits d’écritures comptables peuvent être définis pour saisir rapidement des opérations récurrentes.
- NOUVEAU : Choix entre comptabilité d’engagement et comptabilité de trésorerie (#37050) : l’option permet de basculer entre les deux méthodes de comptabilisation.
- NOUVEAU : Lettrage sur le compte général (#38040) : le rapprochement entre écritures peut désormais se faire directement sur un compte comptable général (pas seulement sur le compte auxiliaire).
- NOUVEAU : Recherche AJAX sur les comptes auxiliaires dans la liste des écritures (#37570) : un champ de recherche à la saisie permet de filtrer rapidement les comptes auxiliaires.
- NOUVEAU : Option de dissociation des ventes comptant (#38160) : les ventes au comptant peuvent être comptabilisées séparément des ventes à crédit.
- NOUVEAU : Export Quadra – option pour n’exporter le compte tiers que s’il n’existe pas déjà (#38208), évitant les doublons lors de l’import dans les logiciels compatibles Quadra.
- NOUVEAU : Hook sur le libellé d’une opération comptable (#37838), permettant aux modules tiers de personnaliser le libellé des écritures générées.
- NOUVEAU : Les codes comptables d’un produit peuvent être réduits/masqués dans la fiche produit, pour gagner de la place lorsque de nombreux codes sont définis.
- NOUVEAU : Rapport TVA – Bouton pour tout réduire / tout développer par taux de TVA (#36946), utile lorsque de nombreux taux coexistent.
- NOUVEAU : Ajout de la colonne einvoice\_vate dans le dictionnaire de TVA : permet d’associer un code TVA aux formats de facturation électronique.
- NOUVEAU : Ajout d’une section d’aide pour trouver les modules de facturation électronique (e-invoice) dans la page de configuration, selon le pays.
- NOUVEAU : Ajout des cotisations sociales pour la Suisse (#38236).

#### **FACTURES ET PAIEMENTS :**

- NOUVEAU : Envoi automatique de la facture générée depuis un modèle récurrent (#36967). Une option permet d’envoyer la facture par email automatiquement au moment de sa création par le cron.
- NOUVEAU : Colonne “Compte bancaire” dans les listes de factures clients et fournisseurs (#36718), permettant de voir d’un coup d’œil le compte associé à chaque facture.
- NOUVEAU : Action de masse pour annuler des factures via avoir (#37852) : depuis la liste des factures, il est possible de sélectionner plusieurs factures et de les annuler en créant les avoirs correspondants.
- NOUVEAU : La liste des factures utilise un sélecteur select2 multiselection pour le filtre de statut (#36834) : on peut filtrer simultanément sur plusieurs statuts (brouillon, validé, payé…).
- NOUVEAU : La liste des factures fournisseur utilise également le sélecteur select2 multiselection pour le filtre de statut (#36887).
- NOUVEAU : Envoi d’email en masse depuis la liste des factures d’un produit donné (#37937) : on peut sélectionner toutes les factures contenant un produit spécifique et envoyer un email groupé.
- NOUVEAU : Protection contre la modification du total d’une facture validée : un message d’erreur est aﬀiché si une action tente de modifier le total d’une facture déjà validée.
- NOUVEAU : Option pour masquer le prix unitaire de la remise exceptionnelle sur les lignes de facture (#37066).
- NOUVEAU : Suppression du modèle PDF “crabe” (legacy) : ce vieux modèle de facture n’est plus proposé dans Dolibarr.
- NOUVEAU : Aﬀichage du total en devise secondaire sur le paiement (#37070) : lorsqu’un paiement est effectué dans une devise autre que la devise principale, le montant en devise secondaire est aﬀiché.
- NOUVEAU : Ajout d’un champ “Commentaires” dans la popup de confirmation lors de l’ajout d’un paiement en action de masse (#37594).
- NOUVEAU : Variables de substitution pour les acomptes (dépôts) (#37546), permettant de personnaliser les emails liés aux factures d’acompte.
- NOUVEAU : Extrachamps sur les paiements divers (#38260) : les champs personnalisés sont maintenant disponibles sur les paiements divers (pas seulement sur les factures).
- NOUVEAU : Nouveau statut “Annulé” sur les prélèvements directs (direct debit).
- NOUVEAU : Filtre sur le statut des prélèvements directs dans la liste.
- NOUVEAU : Possibilité de choisir les demandes de paiement à inclure dans un virement bancaire (#36814) : lors de la constitution d’un fichier de virements, on peut sélectionner unitairement les lignes à inclure.
- NOUVEAU : Augmentation de la longueur de la description : 12 caractères pour les paiements par carte, 22 pour le SEPA.
- NOUVEAU : Raccourci vers les prélèvements à clôturer sur la page d’accueil (widget/vignette).

#### **PRÉLÈVEMENTS ET VIREMENTS (SEPA) :**

- NOUVEAU : Hook dans BonPrelevement::EnregDestinataireSEPA() (#37419) : les modules tiers peuvent modifier le contenu des fichiers SEPA générés.
- NOUVEAU : Possibilité de choisir les demandes à inclure dans un fichier de virement bancaire (#36814).

#### **VENTES, ACHATS ET COMMANDES :**

- NOUVEAU : Gestion des remises sur toutes les lignes pour les éléments fournisseur (#36954) : la remise peut être appliquée en masse sur toutes les lignes d’une commande ou facture fournisseur.
- NOUVEAU : Indicateurs visuels sur la fiche commande client (#37460) : des icônes et codes couleur signalent l’état de chaque ligne (livrée, à livrer, etc.).
- NOUVEAU : Ajout du champ libellé dans la méthode addline des commandes fournisseur (#36544).
- NOUVEAU : Liens de téléchargement externes activables pour les documents fournisseur, avec exposition des variables de substitution correspondantes (#37386).
- NOUVEAU : Possibilité de lier une proposition commerciale à un participant de conférence ou à un exposant (#38359).
- NOUVEAU : Aﬀichage du nom du tiers avec sa référence dans les objets liés de toutes les commandes fournisseur (#36952) et de tous les types de documents (#37906).
- NOUVEAU : Ajout de la date de livraison prévue dans le bloc des objets liés d’une commande fournisseur (#38351).
- NOUVEAU : Répertoire de sortie (dir\_output) mis à jour pour les factures fournisseur (#37841) et les commandes fournisseur (#37858).

#### **EXPÉDITIONS ET RÉCEPTIONS :**

- NOUVEAU : Glisser-déposer pour gérer l’ordre des lignes d’une expédition en brouillon (#36311).
- NOUVEAU : Option cachée STOCK\_EXPEDITION\_NO\_MORE\_THAN\_ORDER (#37604) : empêche de créer une expédition avec une quantité supérieure à celle commandée.
- NOUVEAU : Hooks dans la fiche réception (#37214) pour permettre aux modules tiers de personnaliser l’aﬀichage ou le traitement des réceptions.

#### **TIERS ET CONTACTS :** 

- NOUVEAU : La fiche compte bancaire d’un tiers demande maintenant le pays, l’état/région, la devise et le statut du compte (#38031), pour une meilleure conformité bancaire internationale.
- NOUVEAU : La valeur par défaut du type de tiers passe à “Particulier” (au lieu de “Société”) si aucune donnée ne permet de deviner (#Dolibarr). Cela évite de créer de faux “Sociétés” sans raison.
- NOUVEAU : Limite de taille de la liste déroulante des tiers (THIRDPARTY\_LIMIT\_SIZE) : option pour éviter les ralentissements sur les bases avec de nombreux tiers.
- NOUVEAU : Liste des contacts – Ajout des colonnes Région et État/Province (#37553).
- NOUVEAU : Import/export des tiers – Ajout de la localisation Incoterm et possibilité d’importer avec le code incoterm (#37969).
- NOUVEAU : Ajout du champ numéro EUID (European Unique Identifier) sur les fiches tiers (#37222, #36997). L’EUID est l’identifiant européen unique des entreprises, utilisé dans le registre des sociétés européen.
- NOUVEAU : Aﬀichage du nom alias entre parenthèses dans les listes déroulantes de sélection de tiers (#37997), facilitant l’identification des entités avec des noms commerciaux différents.
- NOUVEAU : Infobulle et meilleure traduction sur le champ référence côté tiers lors de la création d’un objet.
- NOUVEAU : La fiche tiers aﬀiche un nouvel onglet avec les événements (agenda) auxquels le tiers participe comme attendee (participant) ou booth (exposant) (#37743).
- NOUVEAU : Champ “compte bancaire par défaut” sur le formulaire de création de tiers (#37866) : on peut directement associer un RIB lors de la création du tiers.
- NOUVEAU : Le numéro de téléphone du tiers est disponible dans la liste des contrats.

#### **PRODUITS, STOCKS ET NOMENCLATURES :**

- NOUVEAU : Module Transfert de stock stabilisé avec couverture fonctionnelle complète (#37557) : le module expérimental de transfert de stock passe en version stable.
- NOUVEAU : Ajout des miniatures et de la valeur de stock dans la liste des catégories produit (#37510).
- NOUVEAU : Aﬀichage d’une image externe liée sur la fiche produit (#37574) : si un produit a une URL d’image externe, elle est aﬀichée directement sur sa fiche.
- NOUVEAU : Support des sous-totaux sur plus d’objets (#34125) : les lignes de type sous-total (product\_type = 9) sont maintenant gérées sur davantage de types de documents.
- NOUVEAU : La vue arborescente des besoins nets de la BOM est aﬀichée par position de ligne (#37459), facilitant la lecture des nomenclatures complexes.
- NOUVEAU : Export des prix multi-tarifs (multiprices) d’un produit avec les extrachamps (#37595).
- NOUVEAU : Options d’impression des étiquettes code-barres des produits (#36656) : format, taille, nombre d’exemplaires configurables.
- NOUVEAU : Possibilité d’enregistrer un mouvement de stock à 0 (#36812) : utile pour justifier formellement l’absence de mouvement sur une période.
- NOUVEAU : Tags et catégories sur les OFs (ordres de fabrication / Manufacturing Orders) (#36816).

#### **INTERVENTIONS :**

- NOUVEAU : Ajout des tags et catégories sur les interventions (#38158) : les interventions peuvent maintenant être classées par catégorie, comme les autres objets Dolibarr.
- NOUVEAU : Glisser-déposer de fichiers directement sur la fiche intervention (#38138).
- NOUVEAU : Bouton “Déplacer vers” dans l’administration des fiches d’intervention (#38314) : permet de réassigner une intervention à un autre contexte.
- NOUVEAU : Fusion des deux étapes de création d’une intervention en un seul formulaire unifié (#38284) : l’UX de création est simplifiée.
- NOUVEAU : Le modèle Fichinter passe en version stable (#36873) : le modèle de génération PDF pour les interventions n’est plus expérimental.

#### **TICKETS :**

- NOUVEAU : Le Portail Web supporte maintenant les interventions et les tickets (#37538) : les clients peuvent consulter et soumettre des tickets/interventions depuis le portail.
- NOUVEAU : Possibilité d’ajouter des contacts externes sur les événements des tickets (#37870).
- NOUVEAU : Les outils IA sont disponibles dans l’éditeur de messages des tickets.
- NOUVEAU : Le message initial de création d’un ticket est aﬀiché comme un message normal dans la vue Événements/Agenda (#37713), uniformisant la lecture de l’historique.
- NOUVEAU : La date de lecture d’un ticket est mise à jour automatiquement lorsque son statut change (#37470).

#### **CONTRATS :**

- NOUVEAU : Ajout d’un total consolidé sur les contrats (#38249) : la fiche contrat aﬀiche un récapitulatif des montants totaux des lignes de services.
- NOUVEAU : Ajout de statistiques sur les contrats (#38136) : une page de statistiques est accessible depuis les contrats pour analyser les tendances.
- NOUVEAU : Le numéro de téléphone du tiers est aﬀiché dans la liste des contrats.

#### **RESSOURCES HUMAINES ET SALAIRES :**

- NOUVEAU : Génération de PDF pour les fiches de salaires (#36785) : le module Salaires peut maintenant produire des bulletins de salaire en PDF.
- NOUVEAU : Raccourcis rapides de navigation sur les dates dans le module Salaires (#37704) : boutons “Mois précédent / Mois en cours / Mois suivant” pour naviguer rapidement entre les périodes.
- NOUVEAU : Import du solde de congés (#37011) : le solde initial de congés d’un employé peut être importé via l’outil d’import.
- NOUVEAU : La date de création peut être renseignée lors de la mise à jour d’une note de frais (#36936).
- NOUVEAU : Ajout d’un traitement batch pour l’envoi d’informations RH (#37542).
- NOUVEAU : La classe Holiday gère maintenant le champ date\_create (#36918).

#### **ADHÉRENTS :**

- NOUVEAU : Aﬀichage de la date de fin d’adhésion dans la liste des partenariats.
- NOUVEAU : Aﬀichage du membre dans la liste des partenariats.
- NOUVEAU : Ajout d’une colonne libellé dans la liste des cotisations d’un adhérent (#38289).
- NOUVEAU : Action de masse pour les abonnements adhérents – libellé de type textline (#38288).
- NOUVEAU : L’infobulle sur la cotisation d’un adhérent inclut maintenant le libellé (#38291).
- NOUVEAU : Filtre sur les dates de début et de fin d’adhésion (#38309) : dans la liste des adhérents, on peut filtrer par période d’adhésion.
- NOUVEAU : Il est maintenant possible de lier les cotisations d’adhésion à des factures, des commandes ou des propales (#37712).
- NOUVEAU : Bouton “Plus” sur la page des statistiques adhérents.
- NOUVEAU : Champ texte de recherche sur le libellé (#38306) dans les listes d’adhérents.

#### **PORTAIL WEB :**

- NOUVEAU : Le portail web supporte les interventions et les tickets (#37538).
- NOUVEAU : Ajout d’un captcha sur les formulaires du portail web (#37726), pour se protéger des soumissions automatisées.
- NOUVEAU : Hooks sur les formulaires de liste du portail web (#36844) : les modules tiers peuvent personnaliser l’aﬀichage des listes dans le portail.
- NOUVEAU : L’éditeur riche est désactivé par défaut sur les pages publiques (sécurité XSS).

#### **AGENDA ET COMMUNICATIONS :**

- NOUVEAU : Possibilité d’activer ou désactiver les calendriers externes individuellement par calendrier.
- NOUVEAU : Prise en charge de la variable \_\_AUTHOREMAIL\_\_ dans les notifications fixes (#37285) : l’email de l’auteur de l’action peut être utilisé dans les templates de notification.
- NOUVEAU : Option globale pour désactiver les emails directement sur chaque page de configuration d’emails. Utile pour les environnements de test.
- NOUVEAU : Nouvelle constante MAIL\_MASS\_ACTION\_SEARCH\_MOST\_RECENT\_FILE\_IF\_NOT\_FOUND (#36813) : lors d’un envoi d’email en masse, si le fichier joint attendu n’est pas trouvé, Dolibarr peut chercher automatiquement le fichier le plus récent portant le même nom.
- NOUVEAU : Le premier message d’un ticket est aﬀiché dans la vue Agenda comme n’importe quel autre message, pour uniformiser l’historique (#37713).

#### **INTERFACE UTILISATEUR ET ERGONOMIE :** 

- NOUVEAU : Refonte visuelle de l’outil d’import/export (look and feel v24) : interface plus moderne et plus claire.
- NOUVEAU : Les catégories aﬀichent leur libellé court par défaut, le libellé complet étant disponible au survol (infobulle). Améliore la lisibilité des longues arborescences.
- NOUVEAU : Les interrupteurs on/off peuvent utiliser des couleurs personnalisées dans les pages de configuration (setup factory).
- NOUVEAU : Lors de la création d’une catégorie, le type de catégorie est sélectionnable directement dans le formulaire (#38206).
- NOUVEAU : Quand il n’y a qu’un seul modèle de document, la sélection de modèle n’est plus aﬀichée lors de la création : le modèle est appliqué automatiquement.
- NOUVEAU : Un séparateur visuel distingue les statuts Gagné/Perdu des autres statuts d’opportunité dans les listes.
- NOUVEAU : Prise en charge du format d’image AVIF (#37014) : le format AVIF (successeur du WebP, meilleure compression) est accepté dans les téléchargements d’images.
- NOUVEAU : Aﬀichage du nom du tiers avec sa référence dans les blocs d’objets liés de tous les types de documents (#37906), pour une identification plus précise.
- NOUVEAU : Ajout d’un texte d’aide (helptext) dans la fonction formconfirm (#38435) : les popups de confirmation peuvent maintenant aﬀicher un texte explicatif supplémentaire.
- NOUVEAU : Forçage de l’aﬀichage des formulaires d’ajout et de liaison de fichiers dans l’onglet “Fichiers liés” (#38100), même si aucun fichier n’est encore présent.
- NOUVEAU : Le compteur d’impression est maintenant calculé de façon synchrone dans documents.php et receipt.php (refactorisation).
- NOUVEAU : Aﬀichage du lien des modules en liste noire dans une infobulle.

#### **IMPORT / EXPORT :**

- NOUVEAU : Mode d’import CSV/XLSX avec désactivation de l’exécution des triggers (#37367) : option pour importer des données sans déclencher les automatismes (utile pour les migrations massives).
- NOUVEAU : Les chaînes de caractères sont automatiquement nettoyées (trim) lors de l’import : les espaces en début et fin de chaque valeur sont supprimés.
- NOUVEAU : Simplification du processus d’import en supprimant certaines étapes redondantes (#36811).
- NOUVEAU : Meilleur aspect visuel de l’outil d’import/export (v24 look and feel).

#### **CONNEXION ET AUTHENTIFICATION :**

- NOUVEAU : Auto-création d’utilisateurs via OpenID Connect (OIDC) (#37314) : si un utilisateur s’authentifie via un fournisseur OIDC et qu’il n’existe pas encore dans Dolibarr, son compte peut être créé automatiquement.
- NOUVEAU : Nouvelle règle MAIN\_BUILD\_LOGIN\_RULE = 'flastname' pour construire automatiquement le login d’un utilisateur à partir de la première lettre du prénom + le nom de famille.
- NOUVEAU : Possibilité de demander et forcer un changement de mot de passe à la prochaine connexion (#37196).

#### **DOLISTORE ET MODULES :**

- NOUVEAU : Installation directe des modules communautaires et gratuits depuis le DoliStore (#38357) : il est possible d’installer un module en un clic depuis l’interface Dolibarr, sans passer par un téléchargement manuel.
- NOUVEAU : Nouveau module expérimental “Quick memo” : permet de coller des post-it sur n’importe quelle page de Dolibarr (#37422). Idéal pour laisser des notes contextuelles sur un écran particulier.

# 2.2 Nouvelles fonctionnalités pour les développeurs et intégrateurs

#### **API REST :**

- NOUVEAU : Endpoint API pour l’historique des prix d’un produit (#38420) : /products/{id}/pricelogs retourne l’historique des prix de vente.
- NOUVEAU : L’API GET /countries/{id} peut maintenant charger les régions et les états en option (#37715), évitant des appels supplémentaires.
- NOUVEAU : API Catégories – endpoint pour lister les types de catégories (#38207).
- NOUVEAU : API Remises – création d’une remise en montant fixe (#37091).
- NOUVEAU : Meilleure compatibilité API pour les utilisateurs, les tâches et les pièces jointes des tickets (#37644).
- NOUVEAU : Le champ default\_rib (RIB par défaut) est maintenant inclus dans les réponses API des tiers (#38355).

#### **HOOKS :**

- NOUVEAU : Hook dans le label d’une opération comptable (#37838) : hookmanager-&gt;executeHooks('addMor ...).
- NOUVEAU : Hook dans les formulaires de liste du portail web (#36844) : webportal\_formlist.
- NOUVEAU : Hook selectForFormsListUrl dans Form::selectForForms (#37447) : permet de modifier l’URL d’une liste de sélection.
- NOUVEAU : Hooks dans la fiche réception (#37214).
- NOUVEAU : Hook dans BonPrelevement::EnregDestinataireSEPA() (#37419).
- NOUVEAU : Hook dans le formulaire email/message des tickets généré par FormTicket (#37580).
- NOUVEAU : Hook dans Add Hook for adapting virtual stock dans l’écran de réapprovisionnement (#37290).

<p class="callout warning">**Avertissement :** Renommage de hook : le hook info\_admin a été renommé en messageOfTheDay. Mettez à jour vos modules si vous l’utilisez.</p>

#### **EXTRACHAMPS (extrafields) :** 

- NOUVEAU : \[RGPD\] Ajout de la colonne personal\_data dans llx\_extrafields (#38194, #38133) : troisième étape du chantier d’anonymisation des extrachamps. Chaque extrachamp peut maintenant être marqué comme “données personnelles” pour faciliter les procédures RGPD (droit à l’oubli, anonymisation).
- NOUVEAU : L’interface d’administration des extrachamps aﬀiche le flag personal\_data et permet de le configurer.
- NOUVEAU : Option infobulle sur les extrachamps dans getNomUrl (#37431) : un extrachamp peut avoir une infobulle au survol.
- NOUVEAU : Utilisation du libellé du select (et non de la valeur technique) pour la substitution des extrachamps dans les emails (#37005).
- NOUVEAU : Support des extrachamps de type chkbxlst (checkbox list) avec des tables contenant jusqu’à 200 000 éléments (#37691) : amélioration des performances pour les très grandes listes.
- NOUVEAU : L’option MAIN\_DISALLOW\_UNSECURED\_SELECT\_INTO\_EXTRAFIELDS\_FILTER est activée par défaut (sécurité).

#### **MODULE BUILDER :**

- NOUVEAU : Possibilité de spécifier si l’objet gère des lignes dans le Module Builder (#32664) : paramètre pour indiquer qu’un objet personnalisé a des lignes associées.
- NOUVEAU : Remplacement automatique des occurrences MyObject / MyModule lors de la génération (#38370) : le module builder substitue correctement ces tokens lors de la création du code.

#### **MÉTHODES ET UTILITAIRES :**

- NOUVEAU : Nouvelle méthode calculateVATNumberFromProperties() : calcule automatiquement le numéro de TVA à partir des propriétés d’un objet.
- NOUVEAU : Nouvelle méthode dolOutputDates() pour aﬀicher des dates de façon normalisée.
- NOUVEAU : Nouvelle méthode formatLogObject() pour formater un log en une seule ligne (#37135), facilitant la lecture des journaux.
- NOUVEAU : Méthode addMoreTagsToDefaultTagsInDolPrintHTML() : les modules tiers peuvent ajouter des balises HTML autorisées dans les sorties contrôlées.
- NOUVEAU : Le cron déverrouille automatiquement les tâches bloquées après un arrêt inattendu du serveur (#37332).
- NOUVEAU : La debugbar capture maintenant la backtrace lors des échecs de requêtes SQL (#36612), facilitant le diagnostic des erreurs de base de données.
- NOUVEAU : Déplacement des librairies JS dans htdocs/public/includes (au lieu de htdocs/includes) pour mieux séparer les ressources publiques.
- NOUVEAU : Le Module Builder peut indiquer qu’un objet gère des lignes (#32664).

#### **SÉCURITÉ DÉVELOPPEURS :**

- NOUVEAU : Une page peut forcer sa propre valeur pour MAIN\_SECURITY\_CSRF\_WITH\_TOKEN, permettant à certaines pages de surcharger le niveau de protection CSRF globalement configuré.

# 2.3 Avertissements – Changements pouvant créer des régressions

**Avertissement**

Les changements suivants peuvent créer des régressions pour certains modules externes, mais ils étaient nécessaires pour améliorer Dolibarr.

- Universal Search Syntax (USF) obligatoire : tous les filtres passés aux fonctions de liste doivent utiliser la syntaxe USF. Les anciens filtres non conformes ne sont plus acceptés. Si votre module utilise des filtres personnalisés sur des listes Dolibarr, vérifiez qu’ils respectent la syntaxe array('customsql'=&gt;'...').
- <span style="white-space: pre-wrap;">Suppression de l’option </span>**PAYMENT\_SECURITY\_TOKEN\_UNIQUE** <span style="white-space: pre-wrap;">: cette ancienne option de sécurité pour les paiements en ligne a été retirée. Le token de signature en ligne est désormais configurable via </span>**XXX\_ONLINE\_SIGNATURE\_SECURITY\_TOKEN** dans la configuration du module concerné.
- Sel par défaut pour les signatures en ligne : Dolibarr utilise maintenant un sel par défaut pour générer les clés de sécurité des liens de signature en ligne. Si aucun sel n’était défini auparavant, les anciens liens de signature peuvent ne plus fonctionner.
- API de connexion désactivée par défaut : les endpoints d’API de login (/login) sont désactivés par défaut. L’API doit être utilisée avec un Bearer token (token API utilisateur). Pour réactiver les endpoints de login, ajouter API\_ENABLE\_LOGIN\_API=1 dans la configuration.
- <span style="white-space: pre-wrap;">Variable de substitution </span>**\_\_MYCOUNTRY\_ID\_\_** <span style="white-space: pre-wrap;">supprimée : c’était un doublon de </span>**\_\_MYCOMPANY\_COUNTRY\_ID\_\_**. Remplacez toute occurrence par la variable standard.
- <span style="white-space: pre-wrap;">Hook renommé : le hook </span>**info\_admin()** <span style="white-space: pre-wrap;">a été renommé en </span>**messageOfTheDay()**. Mettez à jour les modules qui utilisent ce hook.
- Librairie jeditable supprimée : cette librairie JavaScript d’édition inline n’était plus utilisée par le core Dolibarr (uniquement par une option cachée sans règles de sécurité). Si un module externe l’utilise, il devra l’embarquer lui-même.
- <span style="white-space: pre-wrap;">Renommage de la variable interne </span>**DEPOSIT\_AS\_CREDIT\_AVAILABLE\_EVEN\_UNPAID** <span style="white-space: pre-wrap;">en </span>**DEPOSIT\_CAN\_BE\_CONVERTED\_AS\_AVAILABLE\_CREDIT\_EVEN\_IF\_NOT\_YET\_PAID**. Si votre code ou vos modules référencent directement cet ancien nom de constante, mettez-le à jour.