Bonjour @anaislille,
@arthuronline a raison, le contexte du panier peut parfois être délicat à ce stade. La vérification !(int) Configuration::get('CONORDERFEE_ENABLED') est là pour désactiver le module si besoin, donc il faut s'assurer que la valeur est bien à 1 en base de données pour la clé CONORDERFEE_ENABLED. Cependant, le souci le plus courant ici est bien la disponibilité de l'objet Cart.
PrestaShop 8.1.5, bien que robuste, a parfois des flux où le $params['cart'] n'est pas systématiquement injecté ou est vide si le contexte n'est pas entièrement établi. Une bonne pratique est de toujours fallback sur le panier du Context global si $params['cart'] est absent. Voici une modification pour sécuriser la récupération du panier :
function hookActionValidateOrderBefore($params)
{
if (!(int) Configuration::get('CONORDERFEE_ENABLED')) {
return;
}
$cart = isset($params['cart']) ? $params['cart'] : Context::getContext()->cart;
if (!($cart instanceof Cart) || !$cart->id) {
return;
}
Avec cette adaptation, le module devrait correctement récupérer le panier, même si le $params est incomplet. Pour une gestion plus avancée et sans modifications manuelles de code, il existe des solutions dédiées comme le module Frais conditionnels de commande qui intègre ces vérifications de manière standardisée.