pouc Posted September 17, 2014 Share Posted September 17, 2014 (edited) Bonjour, Je souhaiterais réaliser une modification de la classe Cart. Le but de cette modification est de pouvoir offrir les frais de port au dessus de 50 euros mais si ça dépasse 2kg je veux que le transporteur "socollisimo" disparaisse. manit4c (Olivier C.), m'a fait avancé et je l'en remercie en me donnant les conseils suivants : 1) repérer la fonction qui donne le poids total du panier elle se trouve dans la class cart.php si je ne me trompe pas et doit s'appeler totalWeight ou un truc dans le genre. 2) Repérer toujours dans la class cart la fonction qui va définir les transporteurs valable pour le panier courant elle doit s'appeler getDeliveryOption ou un truc du genre. 3) modifier cette dernière fonction pour qu'elle vérifie également le poids total du panier (via la fonction que t'as repéré étape 1). Si le poids dépasse 2000 (je crois que c'est en grammes) tu enlève le transporteur que tu veux pas voir apparaître dans ce cas (il faut que tu repère son ID) Le seul problème est le code à intégrer sur lequel je galère un peu. Quelqu'un aurait-il une petite idée? Merci. Baptiste Edited September 25, 2014 by pouc (see edit history) Link to comment Share on other sites More sharing options...
pouc Posted September 18, 2014 Author Share Posted September 18, 2014 J'ai un peu avancé alors dans totalWeight j'ai définis le poids de cette façon : $total_weight > 2; foreach ($products as $product) { if (!isset($product['weight_attribute']) || is_null($product['weight_attribute'])) $total_weight += $product['weight'] * $product['cart_quantity']; else $total_weight += $product['weight_attribute'] * $product['cart_quantity']; } Et pour getDeliveryOption : if ($total_weight > 2) { array ($id_carrier = 149); array_splice ($id_carrier); } je sèche complétement!! quelqu'un pour une idée? Merci Baptiste Link to comment Share on other sites More sharing options...
pouc Posted September 25, 2014 Author Share Posted September 25, 2014 (edited) Merci a Szed qui à trouvé la solution sur ce topic : http://www.prestashop.com/forums/topic/355025-frais-de-port-selon-transporteur-et-zones/page-2?do=findComment&comment=1810491 Dans la function getAvailableCarrierList de la classe Carrier, tout en bas, j'ai rajouté la dernière ligne du if : if (($carrier->max_width > 0 && $carrier->max_width < $product->width)|| ($carrier->max_height > 0 && $carrier->max_height < $product->height)|| ($carrier->max_depth > 0 && $carrier->max_depth < $product->depth)|| ($carrier->max_weight > 0 && $carrier->max_weight < $product->weight)|| ($carrier->max_weight > 0 && (float)$carrier->max_weight < $cart->getTotalWeight())){unset($carrier_list[$key]);} Sans celle ci, ce que le transporteur comprend par "poids maxi du panier", est en fait : poids maxi du produit lors de l'ajout apparemment Baptiste Edited September 25, 2014 by pouc (see edit history) 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