Cirice Posted May 29, 2023 Share Posted May 29, 2023 Bonjour, J'ai créé une carte cadeau avec déclinaisons de prix sur un Presta 1.7.8 et acheté le module de Mypresta Gift cards. Comme je n'utilise jamais de cartes cadeau si je dois payer les frais de port, et que je suppose ne pas être la seule, je souhaite que si le montant de la commande du bénéficiaire est inférieure au montant de la carte cadeau, frais de port compris, il ne doive pas les payer. Si la personne en profite pour acheter pour plus cher, basta, elle payera les FDP. Par défaut, le comportement de Prestashop applique les réductions uniquement sur le montant de la commande hors FdP. Je souhaite donc modifier ce comportement dans le cas où le code de réduction a un nom spécifique (généré par le module de Vekia). Vu que mes connaissances en PHP sont un peu limitées, j'ai essayé de me faire aider par ChatGPT. Qui me propose des solutions d'overrides de CartController, mais jusqu'à présent aucune n'a abouti au résultat recherché. Est-ce que quelqu'un a déjà codé cela ? Il existe peut-être des modules mais c'est en forgeant qu'on devient forgeron et cela me permet de m'améliorer dans la personnalisation de PS. Merci d'avance Link to comment Share on other sites More sharing options...
solsol69 Posted May 29, 2023 Share Posted May 29, 2023 Bonjour Il y a 3 heures, Cirice a dit : Par défaut, le comportement de Prestashop applique les réductions uniquement sur le montant de la commande hors FdP Ce module vous permet d'utiliser votre carte cadeau Frais De Port compris. https://addons.prestashop.com/en/wishlist-gift-card/26859-add-shipping-cost-in-gift-card-voucher-discount-amount.html Link to comment Share on other sites More sharing options...
Cirice Posted May 29, 2023 Author Share Posted May 29, 2023 Merci. Mais j'aurais souhaité savoir quel fichier gère le fait que Prestashop ne prend plus en compte les FdP. J'ai tenté un override de CartController.php avec ce code, mais cela ne modifie pas le montant des frais de port <?php class CartControllerOverride extends CartController { public function init() { parent::init(); // Vérifier si le code de réduction "Carte cadeau" est appliqué à la commande if ($this->isCarteCadeauDiscountApplied()) { // Récupérer le montant total de la commande (y compris les frais de port) $totalAmount = $this->context->cart->getOrderTotal(true, Cart::BOTH); // Vérifier si le montant total de la commande est inférieur ou égal au montant du code de réduction "Carte cadeau" if ($totalAmount <= $this->getCarteCadeauDiscountAmount()) { // Définir les frais de port à zéro $this->context->cart->setDeliveryOption(null); $this->context->cart->update(); } } private function isCarteCadeauDiscountApplied() { foreach ($this->context->cart->getCartRules() as $cartRule) { // Vérifier si le nom du code de réduction correspond à "Carte cadeau" if ($cartRule['name'] === 'Carte cadeau') { return true; } } return false; } private function getCarteCadeauDiscountAmount() { foreach ($this->context->cart->getCartRules() as $cartRule) { // Vérifier si le nom du code de réduction correspond à "Carte cadeau" if ($cartRule['name'] === 'Carte cadeau') { return $cartRule['value_real']; } } return 0; } } 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