Makina_AMX Posted March 20, 2014 Share Posted March 20, 2014 Bonjour, Je suis en train de confirgurer ma boutique, et je m'amuse bien ! Jusqu'à ce que j'arrive à la question épineuse du franco de port à partir de xx€ (alors que j'utilise de transporteurs avec tranche de poids). Je sais que ce n'est pas gérable : le franco à 200€ pour la France c'est bien, mais pour La Réunion ou à pétaouchnok ça ne le fait pas du tout... Donc je vous soumets mon idée : 1ère étape : J'ai des zones de définies, "France" (pour la France Métropolitaine), "France DOM" (pour Réunion, Guadeloupe, Guyane, Martinique), "DE+Benelux" (pour Allemagne, Luxembourg, BE et NL), etc... Je me dis pourquoi ne pas définir un franco différent pour chaque zone? Il suffirait dans la base de donnée, table ps_zone (si je ne m'abuse?), d'ajouter une variable "franco" par exemple. Ca je sais faire. 2ème étape : changer le fichier qui permet de dire s'il y a franco ou pas? Là ça me dépasse... Dans quel fichier est-ce? Et comment modifier la ligne de code? Je comprends le fonctionnement général, mais les lignes de code et la syntaxe j'ai du mal ! En gros il faut changer dans la ligne de code la référence à la variable PS_SHIPPING_FREE_PRICE, et dire d'aller chercher dans la table ps_zone, la variable "franco" de la zone en question. Ai-je raison ? Si oui est-ce que quelqu'un peut m'aider à mettre en oeuvre ça ? Merci Link to comment Share on other sites More sharing options...
Makina_AMX Posted March 21, 2014 Author Share Posted March 21, 2014 J'ai trouvé le fichier à modifier : Classes/Cart.php vers la ligne 2674 $configuration = Configuration::getMultiple(array( 'PS_SHIPPING_FREE_PRICE', 'PS_SHIPPING_HANDLING', 'PS_SHIPPING_METHOD', 'PS_SHIPPING_FREE_WEIGHT' )); // Free fees $free_fees_price = 0; if (isset($configuration['PS_SHIPPING_FREE_PRICE'])) $free_fees_price = Tools::convertPrice((float)$configuration['PS_SHIPPING_FREE_PRICE'], Currency::getCurrencyInstance((int)$this->id_currency)); $orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING, null, null, false); if ($orderTotalwithDiscounts >= (float)($free_fees_price) && (float)($free_fees_price) > 0) { Cache::store($cache_id, $shipping_cost); return $shipping_cost; } Comment puis-je modifier la variable PS_SHIPPING_FREE_PRICE par ma nouvelle variable franco de ma table ps_zone ? Merci pour votre aide. Link to comment Share on other sites More sharing options...
Patrick_64 Posted July 29, 2014 Share Posted July 29, 2014 J'ai créé un zone avec FRANCE+MONACO+ANDORRE et dans le fichier CART.PHP j'ai modifié la ligne 2682 : if (isset($configuration['PS_SHIPPING_FREE_PRICE'])) $free_fees_price = Tools::convertPrice((float)$configuration['PS_SHIPPING_FREE_PRICE'], Currency::getCurrencyInstance((int)$this->id_currency)); $orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING, null, null, false); if ($orderTotalwithDiscounts >= (float)($free_fees_price) && (float)($free_fees_price) > 0 and $id_zone==6) //and $id_zone==6 rajouté pour le franco uniquement en France Link to comment Share on other sites More sharing options...
sheyko Posted October 2, 2014 Share Posted October 2, 2014 bonjour On peut faire pareil si on veux le gerer differement la gratuité en fonction du transporteur voila une solution: 1 - indiquer a partir de quelle somme les frais de port sont gratuit. (ex : 70€) 2 - Moi j'ai creer un transporteur "TRANS GRATUIT" dont l'identifiant (colonne ID dans les transporteurs) est 6 3 - ensuite il faut editer le fichier Classes/Cart.php faire une recherche de "// Free fees" puis trouver les lignes ci-dessous et modifier la derniere ligne en ajoutant : and $id_carrier==6 6 etant l'ID du transporteur pour lequel on applique la regle de gratuite des frais de port. ainsi les frais de port seront gratuit si le panier depasse 70€ et si on choisi le transporteur TRANS GRATUIT exemple ci dessous: if (isset($configuration['PS_SHIPPING_FREE_PRICE'])) $free_fees_price = Tools::convertPrice((float)$configuration['PS_SHIPPING_FREE_PRICE'], Currency::getCurrencyInstance((int)$this->id_currency)); $orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING, null, null, false); if ($orderTotalwithDiscounts >= (float)($free_fees_price) && (float)($free_fees_price) > 0 and $id_carrier==6) //and $id_carrier==6 rajouté 6 etant l'identifiant du transporteur pour lequel les frais de port doit etre gratuit 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