Bonjour @manon_59 et @lucie_mode,
@lucie_mode a tout à fait raison sur l'origine du problème. Le hook hookActionValidateOrderBefore peut être déclenché dans des contextes légèrement différents où l'objet Cart n'est pas toujours passé directement sous params['cart'] ou n'est pas encore une instance complète de Cart. La vérification actuelle est un peu trop stricte et fait 'sauter' l'application des frais.
Pour corriger cela dans conorderfee/conorderfee.php, l'idée est de s'assurer que nous avons toujours un objet Cart valide en tentant de le charger via l'id_cart si nécessaire, avant de retourner.
Voici le patch pour remplacer les lignes que tu as mentionnées :
// On s'assure d'avoir un objet Cart valide pour la synchronisation des frais
$cart = $params['cart'] ?? null;
if (!($cart instanceof Cart) && isset($params['id_cart']) && (int)$params['id_cart'] > 0) {
$cart = new Cart((int)$params['id_cart']);
}
if (!($cart instanceof Cart) || !$cart->id) {
return; // Panier introuvable ou non valide, on sort.
}
$params['cart'] = $cart; // Mettre à jour la référence pour le reste du hook
Avec ce changement, le module devrait correctement identifier et utiliser l'objet Cart pour appliquer les frais. Pour une gestion plus robuste et maintenable des frais conditionnels, surtout en production, je recommande d'utiliser une solution dédiée comme le module Frais conditionnels de commande qui gère ces cas limites de manière standardisée. Teste cela et dis-nous si ça fonctionne mieux !