Difference between revisions of "Créer un module de numérotation"

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search
Tag: 2017 source edit
 
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
<!-- BEGIN interlang links -->
 +
<!-- Do NOT edit this section
 +
    Links below are automatically managed by PolyglotBot
 +
    You can edit links on the English source page : Create_numbering_module -->
 +
[[en:Create_numbering_module]]
 +
[[es:Crear_un_módulo_de_numeración]]
 +
[[zh:自动编号模块]]
 +
<!-- END interlang links -->
 +
 +
{{TemplateDocDev}}
 +
 
Pour chaque entité (facture, proposition, commande, etc) créée dans l'application, Dolibarr attribue une référence (numéro ou texte). Afin de pouvoir adapter cette référence à toute utilisation, Dolibarr utilise des modules de numérotation pour définir la règle de génération de cette référence. Des modules sont fournis en standard donc certains sont génériques et permettent de définir le masque de numérotation (nombre sur x caractère, avec ou sans prefix, incluant la date ou pas, etc), ce qui permet de répondre à la plupart des besoins. Toutefois, il existe toujours des cas où le module fourni en standard ne répond pas au besoin. Dans ce cas il est nécessaire de développer son propre module de numérotation.
 
Pour chaque entité (facture, proposition, commande, etc) créée dans l'application, Dolibarr attribue une référence (numéro ou texte). Afin de pouvoir adapter cette référence à toute utilisation, Dolibarr utilise des modules de numérotation pour définir la règle de génération de cette référence. Des modules sont fournis en standard donc certains sont génériques et permettent de définir le masque de numérotation (nombre sur x caractère, avec ou sans prefix, incluant la date ou pas, etc), ce qui permet de répondre à la plupart des besoins. Toutefois, il existe toujours des cas où le module fourni en standard ne répond pas au besoin. Dans ce cas il est nécessaire de développer son propre module de numérotation.
  
== Créer un nouveau module de numérotation ==
+
=Créer un nouveau module de numérotation=
  
 
Pour l'exemple, on part du principe qu'on crée un nouveau module de numérotation de factures qu'on nommera 'terrebis' et qui s'inspire du module 'terre' fourni en standard:
 
Pour l'exemple, on part du principe qu'on crée un nouveau module de numérotation de factures qu'on nommera 'terrebis' et qui s'inspire du module 'terre' fourni en standard:
  
* copier-coller ''htdocs/includes/modules/facture/terre/terre.modules.php'' en ''htdocs/includes/modules/facture/terrebis/terrebis.modules.php''. Vous pouvez utilisez le nom que vous désirez a la place de terrebis pour peu qu'il ne soit pas déjà utilisé et ne contienne que des caractères alphabétiques.
+
*copier-coller ''htdocs/core/modules/facture/terre/terre.modules.php'' en ''htdocs/core/modules/facture/terrebis/terrebis.modules.php''. Vous pouvez utilisez le nom que vous désirez a la place de terrebis pour peu qu'il ne soit pas déjà utilisé et ne contienne que des caractères alphabétiques.
* éditer le nouveau fichier afin de faire les modifications suivantes dans le code :  
+
*éditer le nouveau fichier afin de faire les modifications suivantes dans le code :
 +
 
 
1. Renommer le nom de la classe pour remplacer l'ancien nom de classe par le nom choisi (conserver les même conventions de nommages).
 
1. Renommer le nom de la classe pour remplacer l'ancien nom de classe par le nom choisi (conserver les même conventions de nommages).
  
 
2. Modifier le code de la méthode info() afin de renvoyer un texte descriptif de votre module.
 
2. Modifier le code de la méthode info() afin de renvoyer un texte descriptif de votre module.
  
3. Modifier le code de la méthode getExemple() afin de renvoyer un example de référence qui sera renvoyé par le module.
+
3. Modifier le code de la méthode getExemple() afin de renvoyer un exemple de référence qui sera renvoyé par le module.
  
 
4. Modifier le code de la méthode canBeActivated() afin de faire juste un "return true;"
 
4. Modifier le code de la méthode canBeActivated() afin de faire juste un "return true;"
  
5. Modifier le code de la méthode getNextValue() afin de renvoyer la prochaine référence de numérotation disponible.
+
5. Modifier le code de la méthode getNextValue() afin de renvoyer la prochaine référence de numérotation disponible. Au sein du code de cette fonction, vous pouvez utilisez les paramètres $objsoc ou $facture qui contiennent les informations du tiers concerné par la génération et l'object concerné par la génération (Le nom de ces variables peut différer selon la nature des l'entité gérée par le module). Vous pouvez de plus utiliser les objets $langs, $conf et $db, à condition de les déclarer par la ligne
 
+
<syntaxHighlight lang="php">
Au sein du code de cette fonction, vous pouvez utilisez les paramètres $objsoc ou $facture qui contiennent les informations du tiers concerné par la génération et l'object concerné par la génération.
 
Vous pouvez de plus utiliser les objects $langs, $conf et $db à condition de les déclarer par  
 
 
global $langs, $conf, $db;
 
global $langs, $conf, $db;
Ces objets contiennent les infos de la langue utilisateur, de la configuration Dolibarr et un objet connexion à la base qui permet d'effectuer une requete en base.
+
</syntaxHighlight>
 +
Ces objets contiennent:
 +
$langs: les infos de la langue utilisateur,
 +
$conf: la configuration Dolibarr,
 +
$db: l'objet de connexion à la base qui permet d'effectuer des requêtes SQL en base.
  
6. Sauvegarder : le modèle 'masocietebleu' est disponible dans la liste des modèles de propales de Dolibarr
+
6. Sauvegarder : le modèle 'terrebis' est disponible dans la liste des modèles de factures de Dolibarr
  
== Tester ce module ==
+
=Tester ce module=
  
 
Tester ce module en l'activant depuis la page de configuration du module.
 
Tester ce module en l'activant depuis la page de configuration du module.
 
Vérifiez que dans la colonne description, exemple et valeur suivante, vous obtenez des informations cohérentes (renvoyées respectivement par les fonctions info(), getExample() et getNextValue() ).
 
Vérifiez que dans la colonne description, exemple et valeur suivante, vous obtenez des informations cohérentes (renvoyées respectivement par les fonctions info(), getExample() et getNextValue() ).

Latest revision as of 12:54, 15 March 2022


Pour chaque entité (facture, proposition, commande, etc) créée dans l'application, Dolibarr attribue une référence (numéro ou texte). Afin de pouvoir adapter cette référence à toute utilisation, Dolibarr utilise des modules de numérotation pour définir la règle de génération de cette référence. Des modules sont fournis en standard donc certains sont génériques et permettent de définir le masque de numérotation (nombre sur x caractère, avec ou sans prefix, incluant la date ou pas, etc), ce qui permet de répondre à la plupart des besoins. Toutefois, il existe toujours des cas où le module fourni en standard ne répond pas au besoin. Dans ce cas il est nécessaire de développer son propre module de numérotation.

Créer un nouveau module de numérotation

Pour l'exemple, on part du principe qu'on crée un nouveau module de numérotation de factures qu'on nommera 'terrebis' et qui s'inspire du module 'terre' fourni en standard:

  • copier-coller htdocs/core/modules/facture/terre/terre.modules.php en htdocs/core/modules/facture/terrebis/terrebis.modules.php. Vous pouvez utilisez le nom que vous désirez a la place de terrebis pour peu qu'il ne soit pas déjà utilisé et ne contienne que des caractères alphabétiques.
  • éditer le nouveau fichier afin de faire les modifications suivantes dans le code :

1. Renommer le nom de la classe pour remplacer l'ancien nom de classe par le nom choisi (conserver les même conventions de nommages).

2. Modifier le code de la méthode info() afin de renvoyer un texte descriptif de votre module.

3. Modifier le code de la méthode getExemple() afin de renvoyer un exemple de référence qui sera renvoyé par le module.

4. Modifier le code de la méthode canBeActivated() afin de faire juste un "return true;"

5. Modifier le code de la méthode getNextValue() afin de renvoyer la prochaine référence de numérotation disponible. Au sein du code de cette fonction, vous pouvez utilisez les paramètres $objsoc ou $facture qui contiennent les informations du tiers concerné par la génération et l'object concerné par la génération (Le nom de ces variables peut différer selon la nature des l'entité gérée par le module). Vous pouvez de plus utiliser les objets $langs, $conf et $db, à condition de les déclarer par la ligne

global $langs, $conf, $db;

Ces objets contiennent: $langs: les infos de la langue utilisateur, $conf: la configuration Dolibarr, $db: l'objet de connexion à la base qui permet d'effectuer des requêtes SQL en base.

6. Sauvegarder : le modèle 'terrebis' est disponible dans la liste des modèles de factures de Dolibarr

Tester ce module

Tester ce module en l'activant depuis la page de configuration du module. Vérifiez que dans la colonne description, exemple et valeur suivante, vous obtenez des informations cohérentes (renvoyées respectivement par les fonctions info(), getExample() et getNextValue() ).