[RESOLU]-Envoi mail depuis massactions

Bonjour à tous,
Nous utilisons beaucoup la fonctionnalité d’envoi de mail en masse (massactions depuis la liste).
Je découvre qu’il manque quelques fonctionnalités utiles :
Dans le fichier /core/actions_massactions.inc.php
J’ai ajouté dans le bloc // Initialisation donnees
$objectobj2->email_subject = $subjectreplaced;

Ainsi le champ email_subject (actioncomm) est implémenté en base.
Ce qui me permet de travailler sur le sujet de mail envoyé.

Dans mon module, je me sers donc des triggers en rapport au sujet de mail.
Par exemple, je fais un insertExtraFields().
Mais le problème est que je ne récupère par $object->id avec cette fonctionnalité d’envoi en masse.
Par contre, je le récupère bien quand j’envoie le mail depuis la fiche…

Si quelqu’un avait une idée.

Merci à tous.

Bruce

Solution :
Je vous mets ma fonction doMassActions

    public function doMassActions($parameters, &$object, &$action, $hookmanager)
    {
        global $conf, $user, $langs, $db;

        require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
		require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';



        $error = 0; // Error counter

        if (in_array($parameters['currentcontext'], array('supplierorderlist')))
        {
            foreach($parameters['toselect'] as $objectid)
            {
		        $listofactions=ActionComm::getActions($db, $object->socid, $objectid, 'order_supplier','','','');

		        foreach($listofactions as $actions)
		        {
		            $label=$actions->getNomUrl(0,38);
		        }

                if (stripos($label, 'Rappel commande') !== FALSE)
                {
	                $objectcf2 = new CommandeFournisseur($db);
	                $objectcf2->fetch($objectid);
	                $objectcf2->array_options['options_date_relance'] = dol_now();
					$objectcf2->insertExtraFields();
				}
            }
        }
    }

Ainsi, on peut adapter selon les sujet des mails :happy:

Bonjour à tous,

Petite précision lors d’un envoi de mail en masse, j’appelle la fonction commande (class commande fournisseur) et tout fonctionne bien.
L’id lde l’object est bien transmis.

Je vous met mon bout de code de trigger qui ne prend pas l’id de l’object pour mettre à jour mon extrafield

    private function _Livraison(&$object)
    {
		global $user, $db, $conf;

		require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';

		$objectcf2 = new CommandeFournisseur($db);
		$objectcf2->fetch($object);
		$result=$objectcf2->Livraison($user, date("Y-m-d H:i:s"), 'tot', '');
		$objectcf2->array_options['options_dispo_fourn'] = '1';
		$objectcf2->insertExtraFields();
    }

Et voici mon bout de code de trigger qui prend bien l’id de l’object pour passer la commande

    private function _Commande(&$object)
    {
		global $user, $db, $conf;

		require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';

		$objectcf2 = new CommandeFournisseur($db);
		$objectcf2->fetch($object);
		$result=$objectcf2->commande($user, date("Y-m-d"), 3, '');
    } 

Bonjour à tous,

Vu que j’avance pas, je suis parti sur le hook doMassActions
Dont voici mon bout de code

    public function doMassActions($parameters, &$object, &$action, $hookmanager)
    {
        global $conf, $user, $langs, $db;

        require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';

        $error = 0; // Error counter

        /* print_r($parameters); print_r($object); echo "action: " . $action; */
        if (in_array($parameters['currentcontext'], array('supplierorderlist')))		// do something only for the context 'somecontext1' or 'somecontext2'
        {
            foreach($parameters['toselect'] as $objectid)
            {
                if (stripos($objectid->email_subject, 'Rappel commande') !== FALSE)
                {
	                $objectcf2 = new CommandeFournisseur($db);
	                $objectcf2->fetch($objectid);
	                $objectcf2->array_options['options_date_relance'] = dol_now();
			$objectcf2->insertExtraFields();
				}
            }
        }

    }

Mais $objectid->email_subject ne me renvoi pas l’id de l’objet…

Si vous avez une idée je suis preneur.

Bon week-end.
Bruce

Slt le18info

Pb résolu ? N hesitez pas a partager votre solution .

Salut pm17,

La solution est dans mon post initial :wink:

Bon week-end.

Bruce