Creating triggers witch modify the amount HT before insert or update in the database

Bonjour

Je travaille sur un module etant nouveau développeur sur Dolibarr il y a des petites techniques que je dois maîtriser . J’ai donc besoin d’aide .

En effet, j’ai créé un TRIGGER et je voudrais qu’il déclenche une modification du MONTANT HT de chaque ligne de devis avant l’insertion ou la mise à jour dans la base de données.

La modification s’applique sur la base de d’un extrafield Line que qui doit récupère une valeur (taux ) qui calcule une commission à partir du montant HT .

Merci de m’aider !
J’espère avoir été explicite dans mes explications…

Bonjour,

Comme répondu dans le forum anglais : Creating triggers witch modify the amount HT before insert or update in the database - #3 by Soronser - Developing for Dolibarr - Dolibarr international forum
Il faut passer par les triggers.

En gros les hooks c’est pour modifier l’interface utilisateur et les triggers pour tout le reste.

Bonjour,

Oui C’est ce que j’ai fait .
J’ai créé un Trigger suivant :
interface_99_modMyVoodoo_MyVoodooTriggers.class.php (12,5 Ko)

Je rappelle que dans les paramètres du module créé, j’ai enable les Triggers en mettant Triggers à 1 .

1- Je ne vois pas d’effet concret .
2- Non plus dans le Syslog je ne vois de trace qui indique le Trigger déclenche .

Je ne sais vraiment pas ce qui bloque
A vous lire …

Je ne suis pas totalement d’accord avec cette phrase, les hooks peuvent aussi interagir avec les actions de l’utilisateur sans forcément modifier l’interface. C’est ce qu’il se passe dans le hook doActions par exemple.

Je resumerais plutot en :

  • Hook: Interaction pendant l’action
  • Trigger: interaction après action

Bonjour,

Pas vraiment, c’est plutôt l’inverse : les triggers sont réservés pour un usage bien précis : voir sur le wiki

Notez que les Triggers sont une fonctionnalité pour les développeurs qui est limitée aux événements métiers CRUD (Créer | Lire (Read) | Mettre à jour (Update) | Supprimer (Delete)).

Et donc les hooks c’est pour tout le reste :slight_smile:

J’ai pu le faire avec une TRIGGER … C’est plus pratique

Toutefois j’ai une autre question .
Comment écrire dans la zone des Extrafields sans utiliser JS.
J’ai fait un code JS mais un peu limité . j’aimerais, si possible accéder directement hooké un code dans cette zone (VOIR PHOTO).

J’aimerais savoir la fonction Hookable qui agit dans cette zone ?
J’avais vu un truc comme : printObjectLineTitle() mais ca ne gère pas .
Je n’ai aucun résultat .

Franchement, la différence est tellement mince, que j’ai du mal à comprendre pourquoi avoir inventé 2 manières de faire la même chose…

je pense qu’il va falloir surcharger le template objectline_view.tpl.php avec printObjectLine et printObjectSubLine.
Ou, sinon, créer un nouveau hook dans le template (et sur Github pour ne pas avoir de souci avec les futures versions) :slight_smile: