Changes

m
no edit summary
Line 1: Line 1: −
[[Category:Complementary modules]]
+
<!-- BEGIN interlang links -->
 +
<!-- Do NOT edit this section
 +
    Links below are automatically managed by PolyglotBot
 +
    You can edit links on the English source page : Module_CustomFields -->
 +
[[en:Module_CustomFields]]
 +
<!-- END interlang links -->
 +
 
 +
[[Category:Modules complémentaires]]
 
[[Category:CustomFields]]
 
[[Category:CustomFields]]
{{TemplateUserDoc}}
+
{{TemplateDocUtil}}
{{TemplateMod}}
+
{{TemplateModFR}}
{{ToTranslate}}
+
 
 +
'''<span style="color:red; font-size: 1.5em;">This module is not available for Dolibarr Version > 3 . </span>'''
 +
'''<span style="color:red; font-size: 1.5em;">For newer Dolibarr version use the native [[Extrafields]] feature, see the related page.</span>'''
 +
 
 
L'article n'a pas encore été entièrement traduit en français.
 
L'article n'a pas encore été entièrement traduit en français.
    
Veuillez [[Module_CustomFields|lire le wiki en anglais]] qui est déjà complet (icône à gauche).
 
Veuillez [[Module_CustomFields|lire le wiki en anglais]] qui est déjà complet (icône à gauche).
    +
{{ToTranslate}}
 +
 +
= Informations =
 +
{{TemplateModuleInfo
 +
|editor=
 +
|web=
 +
|webbuy={{LinkToPluginDownloadDoliStore|keyword=customfield}}
 +
|status=stable
 +
|prerequisites=Dolibarr <= 3.3.*
 +
|minversion=3.2.0
 +
|note=
 +
}}
 +
 +
= Description =
 +
Ce module permet à l'utilisateur de créer et de manipuler facilement des champs personnalisés, et de les utiliser ensuite dans les documents PDF ou ODT, ainsi que dans le code PHP
 +
 +
Vous pouvez choisir le type de données, la taille, le libellé, les valeurs possibles, celle par défaut ainsi que des contraintes (liens vers d'autres tables) ou des requêtes SQL.
 +
 +
Le module CustomFields a été conçu pour vous permettre de :
 +
 +
* créer facilement des champs personnalisés avec le type de données de votre choix
 +
* manipuler/créer/modifier/supprimer des listes de champs personnalisés
 +
* Utiliser facilement ces champs dans vos documents PDF ou ODT, ou dans n'importe quel morceau de code PHP
 +
 +
Ce module a pour philosophie :
 +
 +
* Le respect des standards.
 +
* L'indépendance du code de dolibarr.
 +
* Etre réutilisable.
 +
 +
CustomFields a été conçu dans l'optique d'être le plus portable, souple, modulaire et réutilisable possible, ainsi il pourra être adapté à n'importe quel module Dolibarr, ainsi qu'à (presque) n'importe quel besoin utilisateur (même si ce besoin n'est pas encore codé, vous pourrez probablement simplement créer une requête SQL, le reste sera généré autumatiquement).
 +
 +
= Comprendre CustomFields =
 +
 +
Techniquement parlant, ce module est une coquille (wrapper) pour la base de données SQL. Il repsecte les standards SQL, et les manipule de façon standardisée.
 +
 +
Ceci signifie que vous pouvez modifier votre base de données avec un outil tel que phpMyAdmin et que ces changements seront reflétés dans le module de la même façon.
 +
 +
= Fonctionnalités =
 +
 +
- Implémenté nativement dans les modules : Factures, Propales et Produits/Services.
 +
 +
- Totalement multilingue :
 +
* Interface d'Administration  (français et anglais pour l'instant, mais peut être traduit dans n'importe quel langue avec les fichier .lang)
 +
* Libellés des champs personnalisés multilingues
 +
* Valeurs des champs personnalisés multilingues (ex: Case à cocher oui/non qui peut être traduite vers n'importe quelle langue, idem pour les énumérations définies par l'utilisateur). Vous pouvez même traduire les valeurs de vos listes déroulantes ou vos champs contraints.
 +
 +
- Plusieurs types de données standards supportés :
 +
* Textbox
 +
* Areabox
 +
* YesNoBox
 +
* TrueFalseBox
 +
* DropdownBox (avec vos propores valeurs)
 +
* Date
 +
* DateTime
 +
* Integer
 +
* Float
 +
* Double
 +
* Contrainte (lien vers d'autres tables)
 +
* Autres (type personnalisé, défini par votre propre requête SQL)
 +
 +
Note : vous pouvez ajouter vos propres types de données SQL, voyez le chapitre adéquat.
 +
Le dernier type n'est pas un type de données standard à proprement parler, mais il permet d'utiliser tout type de données SQL qui n'est pas encore implémenté, il sera manipulé du mieux possible par le module (per défaut, il sera affiché comme une TextBox)
 +
 +
- Requêtes SQL personnalisées pour créer des champs complexes : ces requêtes seront exécutées après la création/modification de la définition du champ personnalisé.
 +
 +
- Mise à jour des champs personnalisés automatique par la base de données et par les Triggers.
 +
 +
- utilisable par tout module, qu'il soit natif (core) ou externe (voir le chaiptre correspondant).
 +
 +
- Détection et utilisation des contraintes automatique (recherche de la clé primaire, choix du même type et taille du champ) et gestion automatique de l'impression et de la modification (affichées comme une liste déroulante).
 +
 +
- remplacement des index par les valeurs d'une autre colonne pour les champs avec contraintes : indiquez quelle(s) colonne(s) vous souhaitez voir apparaitre, et le module affichera la colonne associée à la place de l'ID de l'enregistrement (voir le chapitre correspondant)
 +
 +
- possibilité de définir plusieurs champs personnalisés pour chaque module
 +
 +
- utilisation facile dans les templates PDF et ODT (voir le chapitre correspondant).
 +
 +
- Fonctionne sur mobiles et tablettes : pas d'AJAX, pas de javascript, uniquement du HTML standard.
 +
 +
- Présentation élégantes dans les feuilles de calcul.
 +
 +
- Supporte toutes les fonctions classiques des champs standards (création, édtion, duplication, etc.)
 +
 +
- Isolation du code : n'interfère pas avec le fonctionnement normal de Dolibarr, tout est séparé. Vous pouvez simplement supprimer les champs personnalisés, aucune donnée ne sera impactée, pas plus que votre installation de Dolibarr.
 +
 +
- Développez votre propres modules avec CustomFields : CF fournit de nombreuses méthodes de gestion des entrées des utilisateurs ainsi que de manipulation des valeurs depuis n'importe où dans le code (Natif ou vos modules), et même quelques fonctions génériques pour exécuter n'importe quelle requête SQL et vous aider à l'optimiser, avec gestion automatique des erreurs.
 +
 +
- Le code est très simple à modifier/customiser/réutiliser/porter... (Architecture modulaire totalement commentée, et aucune fonction en double).
 +
 +
- Utilisation stricte des standards SQL, garantissant ainsi le bon fonctionnement avec n'importe quelle base de données respectant ces standards (testé avec MySQL, fonctionne probablement avec PostgreSQL et SQLite).
 +
 +
- Sécurisé : seuls les utilisateurs autorisés peuvent éditer les champs personnalisés (ceux qui ont les droits Créer et Modifier pour ce module)
 +
 +
- Optimisé et rapide : utilisation du cache partout ou cela est possible, et requêtes SQL super optimisées. Code PHP rapide, avec aussi peu de boucles que possible.
 +
 +
 +
= Pré-requis =
 +
 +
Ce module nécessite que votre base de données implémente les clés étrangères pour être totalement fonctionnel - par exemple utilisez InnoDB avec MySQL plutot que MyISAM qui ne supporte pas les clés étrangères et le contrôle d'intégrité référentielle.
 +
 +
Cependant, dans le cas où vous ne pouvez vraiment pas utiliser les clés étrangères dans votre base de données, CustomFields peut toujours fonctionner en [[Module_CustomFields_Dev#SQL_Compatibility_mode|mode de compatibilité]]: vous aurez la plupart des fonctions, dont les contraintes, mais votre base de données sera un peu moins propre.
 +
 +
pour de plus amples informations, référez-vous à la documentation Développeur au sujet du [[Module_CustomFields_Dev#SQL_Compatibility_mode|mode de compatibilité SQL]].
 +
 +
= Utilisation =
 
== Traduction du libellé d'un champ ==
 
== Traduction du libellé d'un champ ==
   Line 86: Line 202:  
<source lang="php">
 
<source lang="php">
 
// Init and main vars for CustomFields
 
// Init and main vars for CustomFields
dol_include_once(DOL_DOCUMENT_ROOT.'/customfields/lib/customfields_aux.lib.php');
+
dol_include_once('/customfields/lib/customfields_aux.lib.php');
    
// Filling the $object with customfields (you can then access customfields by doing $object->customfields->cf_yourfield)
 
// Filling the $object with customfields (you can then access customfields by doing $object->customfields->cf_yourfield)
Line 113: Line 229:  
<source lang="php">
 
<source lang="php">
 
$lineid = $object->lines[$i]->rowid;
 
$lineid = $object->lines[$i]->rowid;
$object->customfields->lines->$lineid>cf_myfield
+
$object->customfields->lines->$lineid->cf_myfield
 
</source>
 
</source>
 
Où $lineid doit être remplacé par l'id de la ligne produit que vous voulez récupérer (rowid sql des produits, donc ça ne commence pas forcément par 0 et peut être n'importe quel nombre).
 
Où $lineid doit être remplacé par l'id de la ligne produit que vous voulez récupérer (rowid sql des produits, donc ça ne commence pas forcément par 0 et peut être n'importe quel nombre).