enmoderugby Posted Wednesday at 06:46 AM Share Posted Wednesday at 06:46 AM Bonjour, Je souhaiterai offrir une remise aux clients payants par virement bancaire. Je suis sous PS 1.7 Est-ce possible assez facilement ? Merci Link to comment Share on other sites More sharing options...
Prestashop Addict Posted Wednesday at 08:38 AM Share Posted Wednesday at 08:38 AM Bonjour, à part un développement spécifique de module non. Link to comment Share on other sites More sharing options...
Eolia Posted Wednesday at 08:52 AM Share Posted Wednesday at 08:52 AM Un simple module accroché sur le hookValidateOrder qui suivant le mode de paiement ajoute une règle panier ou non à la commande. Sinon, à la mano, éditez la commande en ajoutant une remise en BO. Link to comment Share on other sites More sharing options...
enmoderugby Posted Wednesday at 08:55 AM Author Share Posted Wednesday at 08:55 AM Quel type de module ? Un simple module texte ? Link to comment Share on other sites More sharing options...
cocos.codes Posted Wednesday at 09:03 AM Share Posted Wednesday at 09:03 AM Vous pouvez également utiliser la fonction de remplacement. Vous avez une idée rapide pour le faire facilement. Créez le fichier /override/classes/Cart.php <?php class Cart extends CartCore { public function getOrderTotal($withTaxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null, $use_cache = true) { // Nous facturons le prix normal. $total = parent::getOrderTotal($withTaxes, $type, $products, $id_carrier, $use_cache); // Vérifiez si le client a déjà choisi le paiement par virement bancaire. if ($this->id && Context::getContext()->controller) { $controller = Context::getContext()->controller; if ($controller->php_self === 'order' || $controller->php_self === 'orderopc') { // si le mode de paiement est défini if (isset($controller->checkoutPaymentStep)) { if (Tools::getValue('payment-option') === 'ps_wirepayment') { // Remise de 5 % $total = $total * 0.95; } } } } return $total; } } Link to comment Share on other sites More sharing options...
Prestashop Addict Posted Wednesday at 09:30 AM Share Posted Wednesday at 09:30 AM Attention il faut une trace comptable de la réduction et non juste hardcoder 😞 Le mieux je pense serait de créer un e règle panier pour ce client au moment du checkout une fois le mode de paiement choisi. Link to comment Share on other sites More sharing options...
Eolia Posted Wednesday at 09:31 AM Share Posted Wednesday at 09:31 AM Oui mais ChatGPT n'est pas au courant des règles fiscales^^ Link to comment Share on other sites More sharing options...
enmoderugby Posted Wednesday at 09:43 AM Author Share Posted Wednesday at 09:43 AM Citation Un simple module accroché sur le hookValidateOrder qui suivant le mode de paiement ajoute une règle panier ou non à la commande. Sinon, à la mano, éditez la commande en ajoutant une remise en BO. Ce serait bien mais les règle panier PS ne permettent pas une segmentation par mode de paiement Link to comment Share on other sites More sharing options...
Eolia Posted Wednesday at 09:48 AM Share Posted Wednesday at 09:48 AM Le module crée la règle automatique (newCartRule()) et lui force d'id_cart et l'id_customer avec quantité à 1 expirable à aujourd'hui + délai de paiement. C'est exactement le même fonctionnement quand vous créez/éditez une commande en BO et que vous ajoutez une réduction. Link to comment Share on other sites More sharing options...
enmoderugby Posted Wednesday at 09:49 AM Author Share Posted Wednesday at 09:49 AM D'accord mais quel module ? Link to comment Share on other sites More sharing options...
enmoderugby Posted Wednesday at 09:51 AM Author Share Posted Wednesday at 09:51 AM il y a 47 minutes, cocos.codes a dit : Vous pouvez également utiliser la fonction de remplacement. Vous avez une idée rapide pour le faire facilement. Créez le fichier /override/classes/Cart.php <?php class Cart extends CartCore { public function getOrderTotal($withTaxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null, $use_cache = true) { // Nous facturons le prix normal. $total = parent::getOrderTotal($withTaxes, $type, $products, $id_carrier, $use_cache); // Vérifiez si le client a déjà choisi le paiement par virement bancaire. if ($this->id && Context::getContext()->controller) { $controller = Context::getContext()->controller; if ($controller->php_self === 'order' || $controller->php_self === 'orderopc') { // si le mode de paiement est défini if (isset($controller->checkoutPaymentStep)) { if (Tools::getValue('payment-option') === 'ps_wirepayment') { // Remise de 5 % $total = $total * 0.95; } } } } return $total; } } J'ai tenté de mettre un fichier cart.php dans le fichier override/classes/.... mais rien ne se passe Link to comment Share on other sites More sharing options...
cocos.codes Posted Wednesday at 09:56 AM Share Posted Wednesday at 09:56 AM Vous devez encore vider le cache et l'index des classes pour que l'écrasement puisse commencer. Il faut donc supprimer les dossiers : /var/cache/prod/ /var/cache/dev/ ou cliquer sur « Vider le cache » dans le panneau d'administration : Link to comment Share on other sites More sharing options...
enmoderugby Posted Wednesday at 10:07 AM Author Share Posted Wednesday at 10:07 AM il y a 10 minutes, cocos.codes a dit : Vous devez encore vider le cache et l'index des classes pour que l'écrasement puisse commencer. Il faut donc supprimer les dossiers : /var/cache/prod/ /var/cache/dev/ ou cliquer sur « Vider le cache » dans le panneau d'administration : Ca ne fonctionne toujours pas Link to comment Share on other sites More sharing options...
cocos.codes Posted Wednesday at 10:12 AM Share Posted Wednesday at 10:12 AM 5 minutes ago, enmoderugby said: Ca ne fonctionne toujours pas Donnez-moi un instant, je vais le mettre dans la boutique en ligne test, vous pourrez vérifier son fonctionnement et je vous enverrai le lien. Link to comment Share on other sites More sharing options...
cocos.codes Posted Wednesday at 12:29 PM Share Posted Wednesday at 12:29 PM (edited) Ok, c'est prêt. Je t'ai envoyé le code complet dans un message privé (si je poste le code sur le forum, certaines personnes le considéreront comme du SPAM...). Tout a été testé et fonctionne. Je poste des captures d'écran - si vous êtes intéressé, n'hésitez pas à me contacter. Faites-moi savoir si tout fonctionne chez vous. Screenshots: Edited Wednesday at 12:36 PM by cocos.codes I forgot to upload the screenshots. (see edit history) Link to comment Share on other sites More sharing options...
enmoderugby Posted Wednesday at 01:16 PM Author Share Posted Wednesday at 01:16 PM Merci beaucoup. Ca fonctionne partiellement. Par contre sur le mail automatique que reçoit le client, la remise n'est pas reportée Est-il possible de corriger cela?. Link to comment Share on other sites More sharing options...
cocos.codes Posted Wednesday at 02:00 PM Share Posted Wednesday at 02:00 PM C'est vrai, le module s'intègre dans le hook après la passation de la commande, alors que les e-mails ont déjà été envoyés. Nous allons corriger cela afin que l'intégration se fasse avant l'envoi des e-mails, et le problème sera résolu. Nous nous en occuperons demain, car aujourd'hui, nous n'avons malheureusement plus le temps ! 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