Bonjour Nicolas,
Merci pour l'astuce du log, ca me confirme mon incompréhension du pb.
Je réalisais mes tests avec une requête d'insert dans ma base et j'en contrôle le remplissage après chaque exécution. Je réalise le changement de statut via le listing de commande dans le backoffice.
J'ai donc intégré
hikashop_writeToLog('du statut '.$order->old->order_status.' au statut '.@$order->order_status);
En début de fonction et un autre dans ma boucle foreach et je constate qu'en fait, ma boucle ne s'exécute que lors du passage en statut cancel, ce que je ne comprend pas à vrai dire.
Ci-joint le résultat du log, pour le passage d'une commande avec 2 articles de refounded à confirmed puis a cancel puis à confirmed
11.24.20 08:53:31
du statut refunded au statut confirmed
11.24.20 08:55:32
du statut confirmed au statut cancelled
11.24.20 08:55:32
du statut confirmed au statut cancelled
11.24.20 08:55:32
du statut confirmed au statut cancelled
11.24.20 08:56:36
du statut cancelled au statut confirmed
Voyez-vous une raison pour que la trigger n'exécute la boucle que lors du passage en
cancel?
Je vous remet en joint l'exact code en place pour ce test, on ne peut plus simple du coup il me semble.
<?php
/**
* @package HikaShop for Joomla!
* @version 4.4.0
* @author hikashop.com
* @copyright (C) 2010-2020 HIKARI SOFTWARE. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
?><?php
class plgHikashopCncplgcmd extends JPlugin
{
function onAfterOrderUpdate(&$order,&$send_email) {
hikashop_writeToLog('du statut '.$order->old->order_status.' au statut '.@$order->order_status);
foreach($order->products as $product) {
hikashop_writeToLog('du statut '.$order->old->order_status.' au statut '.@$order->order_status);
}
}
}
Merci par avance.