Interfaces Dolibarr vers exterieur: Difference between revisions

m
Line 3: Line 3:
Pour permettre de déclencher du code personnalisé en réaction à un évènement Dolibarr (création/modification/suppression d'une société/facture/produit), Dolibarr propose un mécanisme de triggers. Ce mécanisme vous permet de personnaliser un workflow afin que les événements de gestion Dolibarr soient répercutés dans une autre application. Rien n'empèche également de l'utiliser pour modifier le comportement de Dolibarr même: par exemple, pour que la validation d'une facture provoque la création d'un contrat automatiquement.
Pour permettre de déclencher du code personnalisé en réaction à un évènement Dolibarr (création/modification/suppression d'une société/facture/produit), Dolibarr propose un mécanisme de triggers. Ce mécanisme vous permet de personnaliser un workflow afin que les événements de gestion Dolibarr soient répercutés dans une autre application. Rien n'empèche également de l'utiliser pour modifier le comportement de Dolibarr même: par exemple, pour que la validation d'une facture provoque la création d'un contrat automatiquement.


Donc, pour ajouter son propre code à déclencher par trigger, la procédure est la suivante:
1) Copier le fichier '''includes/triggers/interface_all_Demo.class.php''' sous le nom:
* '''interface_all_''xxx''.class.php'''
ou bien
* '''interface_mod''MonModule_xxx''.class.php'''
où ''xxx'' est une chaine de votre choix et ''MonModule'' est le nom du module si votre trigger ne doit etre activé que si le module MonModule est actif.
Il faut laisser ce nouveau fichier dans le même répertoire.
Par exemple:
''includes/triggers/interface_modFacture_Monworkflow.class.php''
Les triggers seront déclenchés a chaque evenement Dolibarr a condition que le module Facture soit actif.
2) Editer ce fichier ''interface_modMonModule_Monworkflow.class.php'' afin de renommer la classe ''InterfaceDemo'' par ''InterfaceMonworkflow''


Donc, pour ajouter son propre code à déclencher par trigger, la procédure est la suivante:
# Copier le fichier ''includes/triggers/interface_demo.class.php'' sous le nom ''interface_xxx.class.php'' (ou xxx est une chaine de votre choix), en laissant ce nouveau fichier dans le même répertoire. Par exemple ''includes/triggers/interface_monworkflow.class.php''
# Editer ce fichier ''interface_monworkflow.class.php'' afin de renommer la classe ''InterfaceDemo'' par ''InterfaceMonWorkflow'' et ajouter votre code dans la fonction ''run_trigger''. Cette fonction est appelée à chaque événement Dolibarr. Placer votre code en fonction du ou des événements sur lesquels vous voulez réagir, chaque événement étant identifié par un test sur la variable $action:


3) Editer ce fichier afin de renseigner dans '''$this->name''' la valeur ''Monworkflow''.
Ensuite, accéder à la page Accueil-> Infos Systemes -> Dolibarr -> Triggers.
Votre fichier trigger doit apparaitre dans la liste sans erreur indiquant que les opérations précédentes ont été réalisées avec succès.
4) Revenez maintenant à l'édition du fichier trigger afin d'ajouter votre code dans la fonction ''run_trigger''.
Cette fonction est appelée à chaque événement Dolibarr. Placer votre code en fonction du ou des événements sur lesquels vous voulez réagir, chaque événement pouvant être identifié par un test sur la variable '''$action''':
<pre>
   function run_trigger($action,$object,$user,$lang,$conf)
   function run_trigger($action,$object,$user,$lang,$conf)
   {
   {
Line 25: Line 49:
         ...
         ...
   }
   }
</pre>
Vous pouvez faire ce que vous voulez dans cette portion de code du moment que la fonction run_trigger renvoi un code retour sur le principe suivant:
<0 si ko, 0 si aucune action faite, >0 si ok
Vous pouvez de plus dans cette fonction utiliser les objets suivant:
* '''$object''' est l'objet sur lequel porte l'action (une facture, une propal, une commande, un utilisateur, etc...)
* '''$user''' est l'objet de l'utilisateur Dolibarr qui realise l'action
* '''$langs''' est l'objet qui contient la langue de l'utilisateur Dolibarr
* '''$conf''' est l'objet qui contient toute la configuration de Dolibarr.


Il n'y a plus qu'à tester, en provoquant l'événement déclencheur dans Dolibarr.
Une fois le code réalisé, il n'y a plus qu'à tester, en provoquant l'événement déclencheur dans Dolibarr. Attention, l'appel au '''run_trigger''' et encapsuler dans un transaction. Si votre trigger renvoie un code ko, la fonction appelante peut annuler la transaction (ceci depend de la fonction appelante).
Ajouter des traces dans la fonction '''run_trigger''' afin de vous assurer que le code s'execute bien.


== Gérer de nouveaux évènements ==
== Gérer de nouveaux évènements ==