Difference between revisions of "Interfaces Dolibarr vers exterieur"

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search
m
Line 1: Line 1:
 +
== Ajouter son code sur un évênement ==
 +
 
Pour permettre de déclencher du code personalisé en réaction à un évenement Dolibarr (création/modification/suppression d'une société/facture/produit), Dolibarr propose un mécanisme de triggers.
 
Pour permettre de déclencher du code personalisé en réaction à un évenement Dolibarr (création/modification/suppression d'une société/facture/produit), Dolibarr propose un mécanisme de triggers.
  
 
Pour ajouter son propre code à déclencher par trigger, la procédure est la suivante:
 
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 le laissant dans le meme répertoire. Par exemple includes/triggers/interface_monworkflow.class.php
+
# 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 le laissant dans le meme répertoire. Par exemple includes/triggers/interface_monworkflow.class.php
* Editer ce fichier interface_monworkflow.class.php afin d'ajouter votre code dans la fonction run_trigger. Cette fonction est appelée à chaque évennement Dolibarr. Placer votre code en fonction du ou des évenements sur lesquels vous voulez réagir, chaque évenement étant identifié par un test sur la variable $action:
+
# Editer ce fichier interface_monworkflow.class.php afin d'ajouter votre code dans la fonction run_trigger. Cette fonction est appelée à chaque évennement Dolibarr. Placer votre code en fonction du ou des évenements sur lesquels vous voulez réagir, chaque évenement étant identifié par un test sur la variable $action:
  
 
   function run_trigger($action,$object,$user,$lang,$conf)
 
   function run_trigger($action,$object,$user,$lang,$conf)
Line 22: Line 24:
 
         ...
 
         ...
 
   }
 
   }
 +
 +
 +
== Gérer de nouveux évênements ==
  
 
Les évenements Dolibarr qui provoquent un appel de triggers sont, pour l'instant, identifiés par les codes évenements suivants:
 
Les évenements Dolibarr qui provoquent un appel de triggers sont, pour l'instant, identifiés par les codes évenements suivants:
Line 37: Line 42:
 
   // Fin appel triggers
 
   // Fin appel triggers
  
En remplaçant le XXXXX_YYYYYY par un code évenement non déjà utilisé.
+
Ici, $this doit etre l'objet de la classe metier qui contient toutes les informations à passer au trigger. Remplacer, de plus, le 'XXXXX_YYYYYY' par un code évenement non déjà utilisé.
 
Il sera alors possible d'ajouter dans la methode run_trigger, un if qui permet de gérer ce code. La methode run_trigger serait alors de la forme :
 
Il sera alors possible d'ajouter dans la methode run_trigger, un if qui permet de gérer ce code. La methode run_trigger serait alors de la forme :
  

Revision as of 19:30, 21 April 2005

Ajouter son code sur un évênement

Pour permettre de déclencher du code personalisé en réaction à un évenement Dolibarr (création/modification/suppression d'une société/facture/produit), Dolibarr propose un mécanisme de triggers.

Pour ajouter son propre code à déclencher par trigger, la procédure est la suivante:

  1. 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 le laissant dans le meme répertoire. Par exemple includes/triggers/interface_monworkflow.class.php
  2. Editer ce fichier interface_monworkflow.class.php afin d'ajouter votre code dans la fonction run_trigger. Cette fonction est appelée à chaque évennement Dolibarr. Placer votre code en fonction du ou des évenements sur lesquels vous voulez réagir, chaque évenement étant identifié par un test sur la variable $action:
 function run_trigger($action,$object,$user,$lang,$conf)
 {
       // Mettre ici le code à exécuter en réaction de l'action
       // Le type de l'évenement Dolibarr est stocké dans $action
       // Les données de l'action sont stockées dans $object
       // La configuration, utilisateur et langage sont dans $conf,$user et $lang
       if ($action == 'COMPANY_CREATE')
       {
           dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id);
       }
       elseif ($action == 'COMPANY_MODIFY')
       {        
           dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id);
       }
       elseif ($action == 'COMPANY_DELETE')
       ...
 }


Gérer de nouveux évênements

Les évenements Dolibarr qui provoquent un appel de triggers sont, pour l'instant, identifiés par les codes évenements suivants:

  • COMPANY_CREATE
  • COMPANY_MODIFY
  • COMPANY_DELETE


Pour gérer d'autre évenements que ceux ci-dessus, il faut modifier le code Dolibarr pour y ajouter la séquence suivante dans les méthodes métiers des classes utilisées pour gérer les évenements:

 // Appel des triggers
 include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php");
 $interface=new Interfaces($this->db);
 $interface->run_triggers('XXXXX_YYYYYY',$this,$user,$lang,$conf);
 // Fin appel triggers

Ici, $this doit etre l'objet de la classe metier qui contient toutes les informations à passer au trigger. Remplacer, de plus, le 'XXXXX_YYYYYY' par un code évenement non déjà utilisé. Il sera alors possible d'ajouter dans la methode run_trigger, un if qui permet de gérer ce code. La methode run_trigger serait alors de la forme :

 function run_trigger($action,$object,$user,$lang,$conf)
 {
       // Mettre ici le code à exécuter en réaction de l'action
       // Le type de l'évenement Dolibarr est stocké dans $action
       // Les données de l'action sont stockées dans $object
       // La configuration, utilisateur et langage sont dans $conf,$user et $lang
       
       if ($action == 'XXXXX_YYYYY')
       {
           dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id);
       }
       
       elseif ($action == 'COMPANY_CREATE')
       {
           dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id);
       }
       elseif ($action == 'COMPANY_MODIFY')
       {        
           dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id);
       }
       elseif ($action == 'COMPANY_DELETE')
       ...
 }