Create numbering module

From Dolibarr ERP CRM Wiki
Revision as of 16:14, 23 July 2010 by Eldy (talk | contribs)
Jump to navigation Jump to search

En verysmall.png Page waiting for translation. To translate, create an account, go back and clic on "Modify".
Fr verysmall.png Page en attente de traduction. Pour traduire, créez un compte, revenez et cliquez sur "Modifier".
Es verysmall.png Página a traducir. Para traducirla, cree una cuenta, vuelva a la página y haga clic en "editar".
It verysmall.png Pagina da tradurre. Per tradurla, crea un utente, torna indietro e clicca su "modifica".
Pt verysmall.png Página a aguardar por tradução. Para traduzir, crie uma conta, volte atrás e clique em "Modificar".
De verysmall.png Seite wartet auf Übersetzung. Um Übersetzung zu erstellen, richte einen Account ein, geh zurück und klicke auf "bearbeiten".
Zh verysmall.png 页面等待翻译。若要翻译本页,先创建一个帐户、登录并返回本页后单击“编辑”。


For each entity (invoice, proposal, order, etc.) created in the application, Dolibarr assigned a reference number (or text). To adapt the reference to any use, Dolibarr uses numbering modules to define the rule of generation of this reference. The supplied modules are a standard one and a generic on with a configurable mask (numbers on x character, with or without prefix, including the date or not, etc.), which can meet most needs. However, there are still cases where the standard module does not meet the need. In this case it is necessary to develop its own numbering module.

Create a new module numbering

For the example, we assume we will create a new numbering module of invoices, we will call it the 'terrebis' and will be a variant of the standard supplier module 'terre'.

   * Copy and paste htdocs/includes/modules/invoice/earth/terre.modules.php in htdocs/includes/modules/invoice/terrebis/terrebis.modules.php. You can use the name you want in place of terrebis while he is not already in use and contains only alphabetic characters.
   * edit the new file to make the following changes in the code: 
  1. Rename the class name to replace the old class name with the chosen name (keep the same naming conventions).
  1. Modify the code for the info() method to return a text description of your module.
  1. Change the method code of getExemple() to return the an example of value for ra eference that might be returned by the module.
  1. Change the method code of canBeActivated() to just do a "return true;"

5. Modify the code of the method getNextValue() to return the next available reference numbering.

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. Within the code for this function, you can use parameters $ $ objsoc or invoice containing the information of third parties involved in the generation and the object involved in the generation (The name of these variables may differ depending on the nature of the managed entity module.) You can also use the objects $ langs, $ conf and $ db, the report provided by the line global $ langs, $ conf $ db; These items include: $ langs: information the user language $ conf: configuration Dolibarr $ db connection object in the database allows querying SQL database.

6. Save: the template 'terrebis' is available in the list of invoice templates into Dolibarr

Test this module

Test this module by activating the module from configuration page. Verify that the column description, example and next value you get reflect what you should get (referred respectively by function info(), getExample() and getNextValue()) .



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/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.
  • é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 example 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() ).