Saraaa Posted May 15, 2019 Share Posted May 15, 2019 Bonjour , J'ai donc déjà posé la question à propos de ce problème que j'ai avec les bons d'achat (cart rule) Maintenant, je suis un peu plus consciente du cas où le problème se pose Mon problème est que j'ai créé des bons d'achat (cart rule) de panier pour un grand groupe de personnes. Chacune d'entre eux possède un bons d'achat (cart rule) pouvant être utilisée partiellement. Avec l'option de livraison gratuite, la valeur de la règle de panier est un montant avec taxe. Et quand un client achète des produits dans ma boutique et utilise la règle du panier, le problème se pose alors lorsque la règle du panier a la valeur exacte du total des produits de la commande, dans le back office dans le détail de la commande je trouve le montant de réduction, mais aucune information indiquant quelle règle de panier a été utilisée pour cette réduction. dans la base de données, le montant de réduction existe dans la table ps_orders mais il n'y a pas de ligne de cet ordre dans la table ps_order_cart_rule et la règle de panier peut toujours être utilisée car aucune mise à jour n'a eu lieu dans la table ps_cart_rule. Je veux savoir comment fonctionne la règle de panier et comment puis-je résoudre ce problème, SVP ??? PS: Vous trouvez des captures d'écran d'un test que j'ai fait moi-même J'ai deux prestashop 1.6.1.6 et 1.6.1.23 et le problème est dans les deux Link to comment Share on other sites More sharing options...
Eolia Posted May 15, 2019 Share Posted May 15, 2019 Vous devez avoir des overrides ou des modules greffés sur le validateOrder qui posent problème car rien n'est normal dans votre cas... Link to comment Share on other sites More sharing options...
Saraaa Posted May 16, 2019 Author Share Posted May 16, 2019 (edited) Merci pour votre réponse Effectivement le problème était dans la fonction ValidateOrder dans la classe PaymentModule, quand le client utilise un bon d'achat qui a exactement le même montant que son achat avec l'option de free shipping, dans la fonction il rentre dans la condition qui créer un nouveaux coupon si la totalité du premier n'est pas consommé // IF // This is not multi-shipping // The value of the voucher is greater than the total of the order // Partial use is allowed // This is an "amount" reduction, not a reduction in % or a gift // THEN // The voucher is cloned with a new value corresponding to the remainder if (count($order_list) == 1 && ($values['tax_incl']-$order->total_shipping_tax_incl) > ($order->total_products_wt - $total_reduction_value_ti) && $cart_rule['obj']->partial_use == 1 && $cart_rule['obj']->reduction_amount > 0) { et dans la ligne 559 dans la condition if ($voucher->reduction_amount <= 0) { continue; } comme le $voucher->reduction_amount = 0 il sort de la boucle sans faire l'insertion dans la table order_cart_rule et sans faire le update dans la table cart_rule $order->addCartRule($cart_rule['obj']->id, $cart_rule['obj']->name, $values, 0, $cart_rule['obj']->free_shipping); if ($id_order_state != Configuration::get('PS_OS_ERROR') && $id_order_state != Configuration::get('PS_OS_CANCELED') && !in_array($cart_rule['obj']->id, $cart_rule_used)) { $cart_rule_used[] = $cart_rule['obj']->id; // Create a new instance of Cart Rule without id_lang, in order to update its quantity $cart_rule_to_update = new CartRule((int)$cart_rule['obj']->id); $cart_rule_to_update->quantity = max(0, $cart_rule_to_update->quantity - 1); $cart_rule_to_update->update(); } Edited May 16, 2019 by Saraaa (see edit history) Link to comment Share on other sites More sharing options...
slykikz Posted May 16, 2019 Share Posted May 16, 2019 Bonjour je m'incruste sur le problème pour poser une question par rapport a comment tu as réussi a afficher le petit message sur la page panier pour "Afficher le montant restant jusqu'au frais de port gratuit" Je sais qu'il existent des modules mais je sais aussi qu'on peut modifier dans les fichiers pour avoir donc le résultat. Tu aurais une réponse s'il te plaît, je cherche de partout et je n arrive pas a trouver de solution. Merci Link to comment Share on other sites More sharing options...
Saraaa Posted May 16, 2019 Author Share Posted May 16, 2019 (edited) J'arrive pas à comprendre de quel message vous parler? pouvez vous me montrer dans mes captures d'écrans? Edited May 16, 2019 by Saraaa (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted May 17, 2019 Share Posted May 17, 2019 C'est vrai que j'avais corrigé ce bug il y a quelques temps... Il faut remplacer if ($voucher->reduction_amount <= 0) { continue; } par if ($voucher->reduction_amount > 0) { //le bloc de la création de la nouvelle cart rule (reliquat) } // <- ne pas oublier cette parenthèse fermante ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now