Hello!
J'ai un petit souci sur mes modules de livraison.
Quand je modifie le statut d'une commande dans l'admin pour la passer à "Envoyée", les mails de confirmation s'envoient deux fois...
Les deux modules de livraison ont ce code
TheliaEvents::ORDER_UPDATE_STATUS => ["updateStatus", 100],
et les fonctions "updateStatus" ne comporte pas de boucle...
public function updateStatus(OrderEvent $event)
{
$order = $event->getOrder();
$localPickupPlus = new LocalPickupPlus();
if ($order->isSent() && $order->getDeliveryModuleId() == $localPickupPlus->getModuleModel()->getId()) {
$contactEmail = ConfigQuery::getStoreEmail();
if ($contactEmail) {
$message = MessageQuery::create()
->filterByName('mail_local_pickup_plus')
->findOne();
if (false === $message) {
throw new \Exception("Failed to load message 'mail_local_pickup_plus'.");
}
$order = $event->getOrder();
$customer = $order->getCustomer();
$package = $order->getDeliveryRef();
$this->mailer->sendEmailMessage(
'mail_local_pickup_plus',
[$contactEmail => ConfigQuery::getStoreName()],
[$customer->getEmail() => $customer->getFirstname() . " " . $customer->getLastname()],
[
'customer_id' => $customer->getId(),
'order_id' => $order->getId(),
'order_ref' => $order->getRef(),
'order_date' => $order->getCreatedAt(),
'update_date' => $order->getUpdatedAt(),
'package' => $package,
]
);
Tlog::getInstance()->debug(
"Local Pickup Plus shipping message sent to customer " . $customer->getEmail()
);
} else {
$customer = $order->getCustomer();
Tlog::getInstance()->debug(
"Local Pickup Plus shipping message no contact email customer_id ".$customer->getId()
);
}
}
}
J'ai cherché dans les modules installés s'il y avait un dispatchEvent ORDER_UPDATE_STATUS qui ferait doublon, mais non...
Quelqu'un aurait une idée d'où ça pourrait provenir ?
Last edited by Elyos (20-04-2024 09:01:45)