Personnaliser les $actions

Bonjour,

Peut-on ajouter des actions ($actions) supplémentaire via un module.

Par exemple sur une commande fournisseur, lorsqu’on envoi un mail (en cliquant sur le bouton) l’action : ORDER_SUPPLIER_SENTBYMAIL est appelée.

J’ai besoin de créer ORDER_SUPPLIER_SENTBYMAIL2 et ORDER_SUPPLIER_SENTBYMAIL3

Merci à tous.

Bruce

Bonjour,

Votre question est pas clair.

Vous pouvez crées plusieurs modules qui réagissent à l’action ORDER_SUPPLIER_SENTBYMAIL et donc plusieurs actions 1,2,3 etc…

Si vous voulez crée des actions différentes (donc pour d’autres actions de l’utilisateurs) et qu’elles ne sont pas prévues dans le CORE, il faut les rajouter à la main dans le CORE, mais c’est une solution non maintenable sur le long term

Bonsoir ksar,

Je me doutais que je n’avais pas été assez clair.

Je m’explique (mieux) :
Depuis une fiche commande fournisseur j’envoie deux mails / jour
1 - envoi commande
2 - envoi du bon de transport

Les deux envoi sont régis par ORDER_SUPPLIER_SENTBYMAIL

Du coup je ne peux adapter mon module pour lancer des actions distinctes…
L’idée est de pouvoir affecter des variables selon l’action.

Par exemple:

        elseif ($action == 'ORDER_SUPPLIER_SENTBYMAIL_COMMANDE') {
            $this->_Commande($object->id);
        }
        elseif ($action == 'ORDER_SUPPLIER_SENTBYMAIL_COLISSIMO') {
            $this->_Collisimo($object->id);
        }

Donc, comment implémenter de nouvelles actions sans toucher au core.

Bonjour,

En faisant un test sur le sujet de l’email vous pourriez surement savoir quel type d’email est encours d’envoi

[code]
$object->email_subject[/code

Bonjour,
Merci ksar pour ton aide :happy:
J’avais dans l’idée d’utiliser un trigger

		if ($action == 'ORDER_SUPPLIER_SENTBYMAIL' && strpos($object->email_subject, 'Commande du')) {
            $this->_Commande($object->id);
        }
        elseif ($action == 'ORDER_SUPPLIER_SENTBYMAIL' && strpos($object->email_subject, 'Colissimo du')) {
            $this->_Livraison($object->id);
        }

Mais $object->email_subject ne me renvoi rien…

Je publie ma function run_trigger qui fonctionne :wink:

    public function run_trigger($action, $object, $user, $langs, $conf)
    {
        global $langs, $db, $user;
        require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
        
        $listofactions=ActionComm::getActions($db, $object->socid, $object->id, 'order_supplier','','','');

        foreach($listofactions as $actions)
        {
            $label=$actions->getNomUrl(0,38);
        }
        if ($action == 'ORDER_SUPPLIER_SENTBYMAIL' && stripos($label, 'Commande fournisseur') !== FALSE)
		{
            $this->_Commande($object->id);
        }
        elseif (stripos($object->email_subject, 'Colissimo du') !== FALSE)
        {
            $this->_Livraison($object->id);
        }
        return 0;
    }

Ces actions me permettent de classer la commande fournisseur selon l’envoi de mail que nous lui faisons.

Il ne me reste plus qu’à implémenter la bonne valeur de substitutions (substitutionarray) pour obtenir la date de commande sous ce format ORDERDATE
Pour le moment voici ce que contient ma function customdoli_completesubstitutionarray
$objectcf2 = new CommandeFournisseur($db);
$objectcf2->fetch($object->rowid);
$substitutionarray[‹ ORDERDATE ›] = date(‹ d/m/Y ›, $objectcf2->date);

Mais $objectcf2->date me renvoi une date par défault…