Module CustomFields (Champs Personnalisés) pour Dolibarr
Téléchargement
=> CUSTOMFIELDS V3
CustomFields v3 est disponible pour toutes les versions de Dolibarr à partir de 3.1 et jusqu’à la toute dernière (actuellement 3.7) et probablement compatible avec les futures versions de Dolibarr (tant que les systèmes de Hooks et Triggers ne changent pas) en téléchargement gratuit ici:
Plus d’infos:
http://www.customfields.org
Démo en ligne:
http://customfields.org/demo/htdocs/index.php
CustomFields Pro contient toutes les fonctionnalités de CustomFields Free v2, mais avec bien d’autres fonctionnalités avancées en plus comme les fonctions de surcharge et les cascades.
Note: Les champs créés avec d’anciennes versions de CustomFields et avec la version Free v2 sont totalement compatibles avec la version Pro, il suffit juste de supprimer tous les fichiers CustomFields avant de copier les fichiers de la version Pro (tout est expliqué dans le fichier INSTALL.txt fournis dans l’archive, et sur le wiki également).
=> CUSTOMFIELDS Free V2
CustomFields Free v2 est l’ancienne version de CustomFields.
Pour télécharger CustomFields Free edition pour Dolibarr >= 3.4 (compatible avec tous les Dolibarr supérieurs, y compris 3.6.x et 3.7-alpha):
https://github.com/lrq3000/dolibarr_customfields/archive/3.4.zip
Pour télécharger CustomFields Free edition pour Dolibarr 3.3.x:
https://github.com/lrq3000/dolibarr_customfields/zipball/3.3
ou
http://www.dolistore.com/lang-fr/autres/221-Champs-Personnalis--s.html
Pour télécharger CustomFields Free edition pour Dolibarr 3.2.x:
https://github.com/lrq3000/dolibarr_customfields/zipball/3.2
ou
http://www.dolistore.com/lang-fr/autres/98-Champs-Personnalis--s-pour-Dolibarr-3-2.html
Pour télécharger CustomFields Free edition pour Dolibarr 3.1 (3.1.1 inclus):
https://github.com/lrq3000/dolibarr_customfields/zipball/3.1
Note: il est très fortement conseillé de mettre à jour votre version de CustomFields si elle est en-dessous de 2.11 car les dernières versions ont de nouvelles fonctionnalités critiques.
Documentation
La documentation pour la version Free réside directement dans les archives, dans le fichier README-CF.txt
La documentation pour la version Pro est disponible sur le wiki ainsi que dans le github:
Documentation utilisateur:
http://wiki.dolibarr.org/index.php/Module_CustomFields_FR
Examples d’implémentations:
http://wiki.dolibarr.org/index.php/Module_CustomFields_Cases_FR
Néanmoins les documentations en français ne contiennent que les bases, car la documentation n’a pas encore été totalement traduite.
La documentation complète se trouve sur le wiki en anglais, et contient toutes les infos sur les fonctionnalités avancées de CustomFields:
Documentation utilisateur en anglais:
http://wiki.dolibarr.org/index.php/Module_CustomFields
Documentation développeur en anglais:
http://wiki.dolibarr.org/index.php/Module_CustomFields_Dev
Exemples d’implémentations en anglais:
http://wiki.dolibarr.org/index.php/Module_CustomFields_Cases
Support
Vous pouvez utiliser ce fil de discussion pour poser toutes vos questions à propos de CustomFields.
Le reste de ce post n’est gardé ici qu’en historique des débuts du module, vous pouvez ignorer le reste du post et aller lire la documentation sur le wiki pour commencer à utiliser directement le module, ou aller en dernière page de ce fil de discussion et poster vos questions.
Description
Le module CustomFields (Champs Personnalisés) a été créé dans le but premier de permettre aux intégrateurs de répondre plus facilement, rapidement et robustement aux demandes de customization des utilisateurs.
Mon but était de créer un module qui automatiserait la création et la gestion de champs personnalisés avec un code générique, flexible et facilement adaptable à tous les modules de Dolibarr tels qu’ils sont avec le minimum de modification des fichiers Core, et peut également s’intégrer en théorie à n’importe quel module tiers.
Ce module ne rentre pas en conflit avec ExtraFields et ne remplace pas ses fonctionnalités, mais en lisant le code de EF j’ai pu remarquer qu’il était très spécifique au module société, et très peu générique donc difficilement adaptable à d’autres modules, car il aurait requis de créer des fonctions spécifiques pour chaque module supporté, ce que je voulais absolument éviter. Je voulais qu’un dev extérieur au projet puisse faire (presque) uniquement du copier/coller d’un code que je fournirais pour adapter les champs personnalisés à un nouveau module.
Ceci étant, je voulais également donner un maximum de fonctionnalités et de flexibilité aux usagers et intégrateurs, avec un minimum de compétence et de temps investi. En gros, que tout soit automatisé, même ce qui n’a pas été prévu dans le module CustomFields au départ.
Je vous présente donc aujourd’hui le fruit de mon labeur, sous licence GPL v2 open source, ma contribution au projet et à l’esprit Dolibarr.
Vous pourrez trouver joint à ce post la dernière version standalone du module, la dernière version étant directement mergé à Dolibarr dans mon repository:
Quelques captures d’écran (en anglais mais le module est traduit en francais):
http://imageshack.us/photo/my-images/811/cf8a.jpg/
http://imageshack.us/f/135/cf2io.jpg/
http://imageshack.us/f/197/cf3i.jpg/
http://imageshack.us/f/24/cf4hr.jpg/
http://imageshack.us/f/15/cf5t.jpg/
http://imageshack.us/f/834/cf6c.jpg/
http://imageshack.us/f/829/cf7yu.jpg/
Avantages:
- Supporte nativement les modules suivants: Factures, propositions commerciales, produits/services.
- Support complet du multilangage (francais et anglais pour le moment, mais il est très facile de traduire vers d’autres langues en utilisant la même méthodologie que Dolibarr, à savoir les fichiers de langue):
* Console d’administration multilangue
* Libellés des champs personnalisés multilangues (vous pouvez traduire vos propres champs dans plusieurs langues!)
* ET valeurs des champs personnalisés multilangues également (eg: Choix Oui/Non peut être traduit dans n’importe quelle langue, idem pour les enum/Liste déroulante).
- 6 types de champs gérés nativement :
* Zone de texte simpleTextbox
* Zone de texte étendue HTML
* Choix Oui/Non
* Choix Vrai/Faux
* Liste déroulante (vos propres choix)
* Contrainte (liste déroulante liée à une autre table)
* Autre (type personnalisé)
Le dernier type n’est pas vraiment un type natif mais permet à l’intégrateur de très facilement choisir un type SQL qui n’est pas encore implémenté nativement dans CustomFields, et celui-ci sera quand même géré par le module comme n’importe quel autre champ (par défaut, pour les types inconnus ils sont affichés comme une zone de texte simple).
Il est par ailleurs aisé de rajouter le support natif pour un nouveau type de champ et de programmer sa gestion et son affichage à l’écran (voir le Readme).
- Requête SQL personnalisée pour créer des champs complexes : ces requêtes sql seront executées après la création/modification de la définition d’un champ personnalisé, ce qui permet de virtuellement créer n’importe quoi en SQL.
- Portable vers toutes les versions de Dolibarr (en théorie, tant que les triggers sont implémentés)
- S’intègre harmonieusement à Dolibarr : la nomenclature du projet et les habitudes de développement ont été respectées au maximum.
- Propre : vous pouvez désactiver voire supprimer le module et ses tables sans n’avoir aucun inconvénient (à part la perte des données des champs personnalisés bien entendu), car le module CustomFields est (presque) totalement découplé de Dolibarr.
- Gestion totalement automatique et transparente des champs personnalisés en base de données, grâce à des commandes SQL d’intégrité et aux triggers Dolibarr.
- Extensible à n’importe quel module, que ce soit un module noyau de Dolibarr ou un module tiers créé par la communauté(instructions détaillées dans le README-CF.txt).
- Champs liés/champs contraints : Auto-detection (trouve automatiquement les meilleurs paramètres lors de la création du champ personnalisé) et auto gestion des contraintes (met à jour le champ automatiquement en fonction de l’autre table liée) et auto gestion de leur affichage et de leur interface utilisateur (les affiche en tant que liste déroulante et il est possible de choisir la donnée qui sera affichée, comme le nom ou login ou autre!).
Ex: si vous souhaitez lier votre champ personnalisé à la table des utilisateurs de Dolibarr, sélectionnez à la création de champs le type Autre/Contrainte et comme contrainte: « llx_users ». Créez le champs, celui-ci devrait maintenant vous afficher la liste des ID (rowid) de chaque utilisateur de Dolibarr!
Maintenant si vous voulez afficher le nom de chaque utilisateur au lieu de leur ID, simplement ajoutez le préfixe « name_ » au nom de votre champ personnalisé (vous pourrez toujours changer le libellé plus tard dans les fichiers langs). Par exemple choisissez « name_ref ». Vous pouvez maintenant voir que CustomFields va automatiquement comprendre votre intention et afficher la liste des noms d’utilisateurs au lieu de leur ID (car avec « name_ » vous lui avez dit de prendre le champ name de la table llx_users au lieu des ID).
Ne vous inquiétez pas, le champ est toujours lié aux ID des utilisateurs, donc il ne peut y avoir de doublon ni d’erreur de noms homonymes, c’est simplement l’affichage qui change.
- Possibilité de définir des champs personnalisés différents pour CHAQUE module supporté
- Totalement intégré dans la génération de documents PDF (accessible avec $object->cf_votrechamp) et ODT (accessible avec de simples tags - vous pouvez même accéder à TOUS les champs d’une table liée, par ex: avec name_ref contraint sur llx_users, vous pouvez accéder au nom d’un utilisateur avec {cf_name_ref} mais aussi par {cf_name_ref_name} et accéder au prénom par {cf_name_ref_firstname} et numéro de téléphone par {cf_name_ref_user_mobile}, etc. Plus d’infos dans le Readme).
- Présentation élégante et transparente dans la fiche de données produit/facture/devis/etc.
- Supporte toutes les fonctions classiques d’un champ Dolibarr standart: creation, modification, clonage, suppression, suppression en cascade (facture supprimée -> données champs supprimés), etc.
- Propre: n’interfère pas avec le fonctionnement normal de Dolibarr, tout est séparé. You can just delete the customfields and it will never do anything wrong with your Dolibarr install or your other datas.
- Kit pour développer ses propres modules : CF fournit de nombreuses méthodes pour automatiquement gérer les entrées utilisateurs ainsi que pour accéder et gérer les valeurs des champs depuis n’importe où dans votre code (que ce soit dans le noyau de Dolibarr ou dans votre propre module!), et même quelques fonctions génériques pour envoyer des requêtes SQL libre/personnalisée, échapper les entrées utilisateurs, et gérer les données récupérées.
- Le code est très facile à modifier/personnaliser/réutiliser/porter (très commenté et architecture modulaire, pas de fonctionnalités en double).
- Gratuit et Open Source: gratuit à utiliser, redistribuer et modifier selon vos besoins!
Désavantages:
- Problème possible: a été créé et testé (assidument!) avec le SGBD MySQL, peut-être que cela nécéssitera un peu de portage pour les autres SGBD comme PostgreSQL (usage étendu des tables contenant les schémas de structure : informations.columns et references). Mis à part cela, toutes les commandes SQL ont été pensée et implémentée de la manière la plus générique possible pour être au maximum compatible avec les autres SGBD (même Oracle SQL en théorie!).
NEWS: il semble que informations.columns et references soient des normes de SQL, et PostgreSQL semble les supporter, donc CustomFields devrait aussi fonctionner avec PostgreSQL. Si vous êtes courageux et que vous testez CustomFields avec PostgreSQL, n’oubliez pas de nous faire un retour de votre expérience!
NEWS2: je n’ai pas eu de retour, mais j’ai vérifié et effectivement cela devrait fonctionner sans soucis. D’autre part, CustomFields a été mis à jour pour être encore davantage compatible avec les autres SGBD, donc il ne devrait y avoir aucun soucis.