lokiiy Posted March 30, 2014 Share Posted March 30, 2014 Lorsqu'on met les frais de livraisons gratuit Dans mon cas à partir de 75€ Il est bien de pouvoir présélectionner le transporteur qui sera gratuit afin de ne pas proposer tous les autres gratuitement Si mon mon client fait un achat de 100€ ; donc livraison gratuite Je veux lui proposer uniquement le service Colissimo Classique et non Chronopost ou TNT ou autres transporteurs qui sont proposés et surtout pas au même tarif Donc afin de pouvoir le faire : Dans classe --> fichier cart.php --> ligne 2702 A la place de : // 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; } if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) && $this->getTotalWeight() >= (float)$configuration['PS_SHIPPING_FREE_WEIGHT'] && (float)$configuration['PS_SHIPPING_FREE_WEIGHT'] > 0) { Cache::store($cache_id, $shipping_cost); return $shipping_cost; } Mettre ce code : // 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); if ($orderTotalwithDiscounts >= (float)($free_fees_price) AND (float)($free_fees_price) > 0 AND intval($id_zone) == 9 AND intval($id_carrier) == 3) return $shipping_cost; if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) AND (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0 AND intval($id_zone) == 9 AND intval($id_carrier) == 3) return $shipping_cost; Ne pas oublier de changer « ($id_zone) == 9 » par votre N° ID de zone Ainsi que le N° ID du transporteur pour le frais de port gratuit « ($id_carrier) == 3) » J'ai essayé sur une version migré de la 1.4.11 vers la 1.6.0.5 et cela fonctionne impeccable Le post existait déjà à l'époque : il est ici Malgré que le code ci-dessus fonctionne j'arrive pas à faire fonctionner la variante suivante en l'ajoutant à la suite du code ci-dessus: "OR AND intval($id_zone)==YYY AND intval($id_carrier)== XXX ) " Afin qu'on puisse aussi choisir différent pays ... Car dans l'exemple pour moi la zone 9 correspond à France Metropolitaine .... Une zone que j'ai crée uniquement pour la France ( Il serait bien d'avoir différents pays)... Car les frais de livraison Colissimo international et Colissimo France ne sont pas les même Link to comment Share on other sites More sharing options...
Sab74 Posted April 11, 2014 Share Posted April 11, 2014 Bonjour, Voilà le code que j'ai modifié (en fait le même que la version 1.5) et ca marche chez moi en 1.6. // 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 AND intval($id_carrier) == 62 AND intval($id_zone) == 6) { Cache::store($cache_id, $shipping_cost); return $shipping_cost; } if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) && $this->getTotalWeight() >= (float)$configuration['PS_SHIPPING_FREE_WEIGHT'] && (float)$configuration['PS_SHIPPING_FREE_WEIGHT'] > 0 AND intval($id_carrier) == 62 AND intval($id_zone) == 6) { Cache::store($cache_id, $shipping_cost); return $shipping_cost; } Qui a l'air identique au tien. Est ce les bons ID? Link to comment Share on other sites More sharing options...
lokiiy Posted April 11, 2014 Author Share Posted April 11, 2014 Les ID chez moi sont ok ... Le seul problème que j'ai c'était pour la variante "OR AND intval($id_zone)==YYY AND intval($id_carrier)== XXX ) " Quand je l'ajoute à la suite du code elle fonctionne apparemment pas !! Je voudrais juste savoir ou l'ajouter correctement Link to comment Share on other sites More sharing options...
lokiiy Posted July 7, 2014 Author Share Posted July 7, 2014 Voilà le code que j'ai modifié (en fait le même que la version 1.5) et ca marche chez moi en 1.6. Bonjour Il semblerait que depuis la version 1.6.0.8 le bout de code plus haut ne fonctionne plus ..... J'ai remis le fichier d'origine de la 1.6.0.8 pour voir si tout de même les frais gratuits annoncés à partir de XXXXX étaient pris en compte..... Et ça remarche bien sauf que bien évidemment sans le bout de code il est embêtant de voir tous les transporteurs gratuits Rencontrez vous le même soucis que moi ???? Et si quelqu'un pouvez nous trouver la modification de code à ajouter ça serait vraiment super car pour moi cette option est carrément vital ... Merci de votre soutien !! 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