Pour permettre de lancer du code en réaction à un événement dans l’ERP, Dolibarr propose un mécanisme de triggers métiers.
Pré-requis
Attributs supplémentaire dans les tables produits de Dolibarr
- need_ecommerce_update (bool)
Ce paramètre est celui qui sera mis à jour quand un produit est modifié.
Création du trigger
On se base sur le template qui se trouve ici htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php
Notre module sera donc : interface_99_modProduct_EcommerceSyncTrigger.class.php
- Le module ‘Produit’ est directement visé (product.class.php)
- Le module à une priorité basse (99)
- Le nom du module est EcommerceSync
Mise à jour du contenu
On édite notre fichier interface_99_modProduct_EcommerceSync.class.php
- Remplace « InterfaceMyModuleTriggers » par « InterfaceEcommerceSyncTrigger«
- Ajout de la logique dans « run_trigger » qui sera appelé à chaque évènement lié
Logique à implémenter dans la fonction « run_trigger«
La logique ne peut être lancée que si une action sur le produit a été réalisé à savoir
if ($action == 'COMPANY_CREATE')||
($action == 'PRODUCT_CREATE')||
($action == 'PRODUCT_MODIFY')||
($action == 'PRODUCT_PRICE_MODIFY')
...
ou
case 'PRODUCT_CREATE':
case 'PRODUCT_MODIFY':
case 'PRODUCT_DELETE':
case 'PRODUCT_PRICE_MODIFY':
case 'PRODUCT_SET_MULTILANGS':
case 'PRODUCT_DEL_MULTILANGS':
...
On va utiliser ‘$objet’ car il comprend les données du produit
…
Déploiement du trigger
On déploie le trigger dans le répertoire « /htdocs/core/triggers »
La liste des trigger est accessible via le lien : http://votredomaine.com/htdocs/admin/triggers.php?mainmenu=home&leftmenu=admintools_info
Activation des permissions
Si vous avez lié votre Trigger à un objet pour hériter des permissions, il va falloir re-loader le modulé lié (ici module produits)
Info / Annexe
Pour débugger votre code, n’oubliez pas que vous pouvez utiliser les logs de Dolibarr
dol_syslog("mon texte de trace", LOG_DEBUG);