Jump to content

pas de frais de port offert pour les envois à l’étranger. comment faire ?


Recommended Posts

  • 3 months later...

Bonjour,

J'ai eu une demande similaire pour un client, il 'ma demandé de ne pas avoir de frais de port offert pour les pays autre que la France.

voici ce que j'ai modifié la class Cart.php (faire une sauvegarde du fichier avant)
ligne 685

if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0)
           return $shipping_cost;



remplacer par

if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0 AND $id_zone==6)
           return $shipping_cost;



J'ai ajouté AND $id_zone==6 qui correspond à la zone de la France. Donc la il appliquera les frais de port offert que pour la zone 6 qui correspond dans son paramétrage à la France.

Cdt

Link to comment
Share on other sites

  • 1 month later...

Je pense qu'il suffit de définir le montant des "Frais de port offerts à partir de " en fonction du montant le plus élevé, toutes destinations confondues, puis de fixer les frais à 0 € pour les couple tranches/zones souhaitées.

Link to comment
Share on other sites

  • 1 month later...
Bonjour,

J'ai eu une demande similaire pour un client, il 'ma demandé de ne pas avoir de frais de port offert pour les pays autre que la France.

voici ce que j'ai modifié la class Cart.php (faire une sauvegarde du fichier avant)
ligne 685
if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0)
           return $shipping_cost;



remplacer par

if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0 AND $id_zone==6)
           return $shipping_cost;



J'ai ajouté AND $id_zone==6 qui correspond à la zone de la France. Donc la il appliquera les frais de port offert que pour la zone 6 qui correspond dans son paramétrage à la France.

Cdt




Bonjour

Et si on a deux zones faut l'écrire comment?

Dans mon cas j'offre les frais de port gratuit pour le Canada et les USA.


Merci!
Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...
  • 1 month later...

Merci pour l'info, je viens d'essayer et cela fait l'inverse de ce que je souhaite.
Avec ce code les frais de port gratuit sont appliqués à l'autre zone que j'utilise pour les DOM-TOM (la zone 7)
Et pour la zone 6 (la france métropolitaine) les frais de port gratuit ne sont plus appliqués.

Question bête : est ce qu'il suffit que je remplace le 6 par le 7 dans le bout de code ?


J'avais bien essayé de rajouter ce bout de code AND $id_zone==6 à l'endroit que tu indique, mais cela avait effacé les paramétrages de tarifs par tranche de poids, du coup cela m'avait un peu refroidit...

Link to comment
Share on other sites

Non ça marche mais, Je ne comprend pas que les frais de port soient un réel problème pour Prestashop ;
Vous nous avez trouvé une solution pour affecter des frais de port gratuits à partir de… sur une zone (France), mais avez du mal à nous trouver une réelle solution pour affecter ces même frais de port gratuits à un seul transporteur dans la même zone.
La solution existe, mais ne veut pas être dévoilée…
Je ne comprend pas !!!
Prestashop a t’il ses limites

Link to comment
Share on other sites

Ligne 833:

Remplacer:
if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0)



par:

if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0 and $id_zone!=6)



Cordialement.



Pour la version 1.3.1 j'ai voulu offrir les frais de port pour la France ET l'Europe, j'ai donc fait la manip de r.guillaume en ligne 833 du fichier classes/cart.php mais au lieu de rajouter juste la zone 6 j'ai mis :
 AND $id_zone==6 OR $id_zone==1



zone 6 = france, zone 1 = europe (chez moi)

Chez moi ça marche, cela dit je n'y connais absolument rien, ça m'a juste paru logique et j'ai tenté, donc si un "qui s'y connaît" pense que ce n'est pas bien qu'il le dise je ne serais pas vexée ;-)

Voilà, si ça peut aider...

Link to comment
Share on other sites

Bonjour Katzele

J'ai la version 1.2.5 de Presta et j'ai 3 zones qui ont les frais de port gratuit à partir d'un montant.

Je vois que toi tu en as mis deux

AND $id_zone==6 OR $id_zone==1

Pour trois zone faut-il l'écrire AND $id_zone==6 OR $id_zone==1 or $id_zone==7

Je vois que tu as mis deux == et dans la correction de r. guillaume il n'y en a qu'un. Faut en mettre deux ou 1 ?


Merci de ton aide

Link to comment
Share on other sites

Je viens de faire un test en mettant la zone qui correspond au Québec et mes frais de port n'étaient plus gratuit. J'ai mis la zone qui correspond à l'Europe et là ça marche. Les frais de port ne sont plus gratuit pour l'Europe.

Voici ce que j'ai mis

        // Free fees
       if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0 and $id_zone!=10)




Ce que je ne comprends pas cependant c'est pourquoi ça fait l'inverse de ce que les autres ont fait.
Selon ce que j'ai lu il faut mettre la zone que l'on veut que les frais de port restent gratuits mais moi c'est en mettant la zone que je ne veux pas que les frais de port soient gratuit qui marche.

Mystère! Quelqu'un peut m'expliquer?


Merci

Link to comment
Share on other sites

Alors là tu me pose une colle, je ne peux pas t'aider, comme je l'ai dit j'ai fait ça parce que ça me semblait logique, je n'avais même pas vu qu'il n'y avait qu'un = au lieu de 2
Je viens de vérifier, voilà ce que j'ai mis exactement :

    if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0 AND $id_zone==6 OR $id_zone==1)


Chez moi ça fait ce que ça doit, les frais de port gratuit pour la france et l'europe, et je suis en version 1.3.1

Link to comment
Share on other sites

Salut tous,
Pour France le signe "egal à" en php ressemble à ceci

==

, alors que le signe

!==

veut dire "different de".
la bonne syntaxe est donc :

if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0 and $id_zone==1)



@+

Pdriss

Link to comment
Share on other sites

Salut,
Me trouvant confronter au même problème que vous à savoir, frais de port gratuit à partir d'un montant diffèrent selon le pays.

Comme je n'est pas le temps de créer un vrai module, j'ai "bidouiller" un truc que je vous livre brut de pomme ! :-)

Rechercher dans Votre-boutique=>classes=>Cart.php à la ligne 828

        
       // Free fees
       $free_fees_price = 0;
       if (isset($configuration['PS_SHIPPING_FREE_PRICE']))
       $free_fees_price = Tools::convertPrice(floatval($configuration['PS_SHIPPING_FREE_PRICE']), new         Currency(intval($this->id_currency)));
       $orderTotalwithDiscounts = $this->getOrderTotal(true, 4);
       if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0)
           return $shipping_cost;



Remplacer par

        
       // Free fees
       $free_fees_price = 0;
       if ($id_zone==6){
       $free_fees_price = Tools::convertPrice(floatval('25'), new Currency(intval($this->id_currency)));}
       elseif ($id_zone==1){
       $free_fees_price = Tools::convertPrice(floatval('50'), new Currency(intval($this->id_currency)));}
       else {
       $free_fees_price = Tools::convertPrice(floatval('75'), new Currency(intval($this->id_currency)));}
       $orderTotalwithDiscounts = $this->getOrderTotal(true, 4);
       if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0) 
       return $shipping_cost;


Les chiffres entre parenthèse après "floatval" correspondent aux montant à partir duquel les frais de port sont gratuit
$id_zone correspond aux zones ou s'applique les frais port gratuit, ex:

if ($id_zone==6){
       $free_fees_price = Tools::convertPrice(floatval('25'), new Currency(intval($this->id_currency)));}



Cela Veut dire à peut près ceci :


SI la zone est egal à 6 (pour moi c'est la france) alors le montant à partir duquel le port est gratuit est de 25

le chiffre (25) étant dans la monnaie de la boutique le reste du code permet de convertir ce montant dans une autre monnaie
Vous pouvez ajouter autant de elseif que vous voulez.
Rappel (IF veut dire SI en php et ELSEIF veut dire SINON SI).

Ensuite, ben voui c'est pas fini !! :gulp:

Rechercher dans Votre-boutique=>order.php à la ligne 430

function displaySummary()
{
   global $smarty, $cart;

   if (file_exists(_PS_SHIP_IMG_DIR_.intval($cart->id_carrier).'.jpg'))
       $smarty->assign('carrierPicture', 1);
   $summary = $cart->getSummaryDetails();
   $customizedDatas = Product::getAllCustomizedDatas(intval($cart->id));
   Product::addCustomizationPrice($summary['products'], $customizedDatas);

   if ($free_ship = Tools::convertPrice(floatval(Configuration::get('PS_SHIPPING_FREE_PRICE')), new Currency(intval($cart->id_currency))))
   {
       $discounts = $cart->getDiscounts();
       $total_free_ship =  $free_ship - ($summary['total_products_wt'] + $summary['total_discounts']);
       foreach ($discounts as $discount)
           if ($discount['id_discount_type'] == 3)
           {
               $total_free_ship = 0;
               break ;
           }
       $smarty->assign('free_ship', $total_free_ship);
   }



Remplacer par

function displaySummary()
{
   global $smarty, $cart, $cookie, $defaultCountry;

   if (file_exists(_PS_SHIP_IMG_DIR_.intval($cart->id_carrier).'.jpg'))
       $smarty->assign('carrierPicture', 1);
   $summary = $cart->getSummaryDetails();
   $customizedDatas = Product::getAllCustomizedDatas(intval($cart->id));
   Product::addCustomizationPrice($summary['products'], $customizedDatas);

   $address = new Address(intval($cart->id_address_delivery));
   $id_zone = Address::getZoneById(intval($address->id));
   if ($id_zone==6){
       $free_ship = Tools::convertPrice(floatval('25'), new Currency(intval($cart->id_currency)));}
   elseif ($id_zone==1){
       $free_ship = Tools::convertPrice(floatval('50'), new Currency(intval($cart->id_currency)));}
   elseif ($id_zone==2){
       $free_ship = Tools::convertPrice(floatval('75'), new Currency(intval($cart->id_currency)));}
       $discounts = $cart->getDiscounts();
       $total_free_ship =  $free_ship - ($summary['total_products_wt'] + $summary['total_discounts']);
       foreach ($discounts as $discount)
           if ($discount['id_discount_type'] == 3)
           {
               $total_free_ship = 0;
               break ;
           }
       $smarty->assign('free_ship', $total_free_ship);



IMPORTANT: rentrer les même valeur que dans Cart.php
Cette modif permet d'afficher l'alerte, "Pour obtenir la gratuité des frais de port, vous devez encore commander pour x €" selon la zone de livraison
Vala, j'espère que cela vous sera utile, pour les fainéants je joint les 2 fichiers, faite une sauvegarde des anciens avant de les remplacer.
les fichiers ou les modifs sont valable pour la Version 1.3.1.1 de presatshop, aucune idée si ca fonctionne pour les autres versions.
@+
Pdriss

Cart.php

order.php

Link to comment
Share on other sites

Bonjour à tous et merci pour votre implication :
Il y a des réponse fructueuses, mais mon problème est différent
En résumé voila ce que je souhaiterai:
Transporteurs Pour la France :
Colissimo (Simple) : Gratuit à partir de 69€ - cela fonctionne, sauf que la gratuité s'applique sur tous les autres transporteurs de la zone France
Colissimo recommandé R1 : Pas de Gratuité (La gratuité s'applique quand même à partir de 69€)
Colissimo recommandé R2 : Pas de Gratuité (La gratuité s'applique quand même à partir de 69€)
Colissimo recommandé R3 : Pas de Gratuité (La gratuité s'applique quand même à partir de 69€)
Transporteurs Pour l'Outre-Mer :
Colissimo Outre-mer : Pas de Gratuité (Cela fonctionne)
Colissimo recommandé Outre-Mer R1 : Pas de Gratuité (Cela fonctionne)
Colissimo recommandé Outre-Mer R2 : Pas de Gratuité (Cela fonctionne)
Colissimo recommandé Outre-Mer R3 : Pas de Gratuité (Cela fonctionne)
Transporteurs Pour la zone Europe :
Colissimo international Europe : Pas de Gratuité (Cela fonctionne)
Le transporteur par défault est bien le colissimo simple pour la zone France
Ce que j'ai modifié dans le Class/Cart.php :

if (isset($configuration[‘PS_SHIPPING_FREE_PRICE’]) AND $orderTotal >= floatval($configuration[‘PS_SHIPPING_FREE_PRICE’]) AND floatval($configuration[‘PS_SHIPPING_FREE_PRICE’]) > 0) return $shipping_cost;
remplacer par
if (isset($configuration[‘PS_SHIPPING_FREE_PRICE’]) AND $orderTotal >= floatval($configuration[‘PS_SHIPPING_FREE_PRICE’]) AND floatval($configuration[‘PS_SHIPPING_FREE_PRICE’]) > 0 AND $id_zone==6) return $shipping_cost;
Allez, je suis sûr que l'on va trouver, il y a t'il des programmateurs qui ont la solution gratuite ?

Link to comment
Share on other sites

Pdriss, j'ai utilisé ta méthode parce que mon truc de mettre AND et OR, visiblement ça ne marche pas. Par contre moi je veux offrir les frais de port pour la zone 6 la zone 1 et pour le reste je n'offre rien (radine) donc entre parenthèse à la place de (75) j'ai mis (0). Par contre dans le fichier order.php tu précise elseif ($id_zone==2){ comment faire pour que ce soit valable pour tout ce qui n'est pas zone 1 ou 6 ?
Merci de ton aide.

Link to comment
Share on other sites

Bonjour à tous et merci pour votre implication :
Il y a des réponse fructueuses, mais mon problème est différent
En résumé voila ce que je souhaiterai:
Transporteurs Pour la France :
Colissimo (Simple) : Gratuit à partir de 69€ – cela fonctionne, sauf que la gratuité s’applique sur tous les autres transporteurs de la zone France
Colissimo recommandé R1 : Pas de Gratuité (La gratuité s’applique quand même à partir de 69€)
Colissimo recommandé R2 : Pas de Gratuité (La gratuité s’applique quand même à partir de 69€)
Colissimo recommandé R3 : Pas de Gratuité (La gratuité s’applique quand même à partir de 69€)
Transporteurs Pour l’Outre-Mer :
Colissimo Outre-mer : Pas de Gratuité (Cela fonctionne)
Colissimo recommandé Outre-Mer R1 : Pas de Gratuité (Cela fonctionne)
Colissimo recommandé Outre-Mer R2 : Pas de Gratuité (Cela fonctionne)
Colissimo recommandé Outre-Mer R3 : Pas de Gratuité (Cela fonctionne)
Transporteurs Pour la zone Europe :
Colissimo international Europe : Pas de Gratuité (Cela fonctionne)
Le transporteur par défault est bien le colissimo simple pour la zone France
Ce que j’ai modifié dans le Class/Cart.php :

if (isset($configuration[‘PS_SHIPPING_FREE_PRICE’]) AND $orderTotal >= floatval($configuration[‘PS_SHIPPING_FREE_PRICE’]) AND floatval($configuration[‘PS_SHIPPING_FREE_PRICE’]) > 0) return $shipping_cost;
remplacer par
if (isset($configuration[‘PS_SHIPPING_FREE_PRICE’]) AND $orderTotal >= floatval($configuration[‘PS_SHIPPING_FREE_PRICE’]) AND floatval($configuration[‘PS_SHIPPING_FREE_PRICE’]) > 0 AND $id_zone==6) return $shipping_cost;
Allez, je suis sûr que l’on va trouver, il y a t’il des programmateurs qui ont la solution gratuite ?

Link to comment
Share on other sites

Pdriss, j'ai utilisé ta méthode parce que mon truc de mettre AND et OR, visiblement ça ne marche pas. Par contre moi je veux offrir les frais de port pour la zone 6 la zone 1 et pour le reste je n'offre rien (radine) donc entre parenthèse à la place de (75) j'ai mis (0). Par contre dans le fichier order.php tu précise elseif ($id_zone==2){ comment faire pour que ce soit valable pour tout ce qui n'est pas zone 1 ou 6 ?
Merci de ton aide.


Hum...
comment dire ?
J'ai pas trop le temps de me pencher sur ton problème, mais quand même...
Essayer un minimum de comprendre le code, sinon faite appel a des pros, acheter un module ou essayer d'apprendre php...
A defaut lisez Correctement ce qui est poster !
j'ai poster ceci entre autre:
Les chiffres entre parenthèse après “floatval” correspondent aux montant à partir duquel les frais de port sont gratuit
$id_zone correspond aux zones ou s’applique les frais port gratuit

DONC Si tu met (0) à la place de (75) cela veut dire que tu offre les frais de port a partir de 0€ !!
il faut que tu supprime la ligne.
    elseif ($id_zone==2){        $free_ship = Tools::convertPrice(floatval('75'), new Currency(intval($cart->id_currency)));}


Ensuite Elseif veut dire Sinon Si, mais Esle veut dire Sinon donc la bonne syntaxe c'est Si (zone==6) frais de port a partir de (25) Sinon Si (zone==1) frais de port a partir de (50) Sinon pas de frais de port !!
Ce qui en code php donne :

    if ($id_zone==6){
       $free_ship = Tools::convertPrice(floatval('25'), new Currency(intval($cart->id_currency)));}
   elseif ($id_zone==1){
       $free_ship = Tools::convertPrice(floatval('50'), new Currency(intval($cart->id_currency)));}
   else {
       $free_ship = NULL;}



Allez je vous laisse deviner ce qu'il faut faire... :coolsmile:
Pour zazou30_1

J'ai pas le temps de me pencher sur ton problème n'en ayant pas l'utilité, mais a mon avis c'est le meme principe que ma soluce mais en appliquant la procedure au transporteur et non pas au pays.
un truc genre SI transporteur (id==x) ET SI montant de commande (x) frais de port gratuit SINON pas de gratuité.
Voila, je te laisse chercher...
@+
Pdriss

Link to comment
Share on other sites

Merci, désolée de t'avoir dérangé. Pour ma défense, en ayant mis (o) ça n'offrait pas les frais de port du tout pour la zone concernée, j'avais testé quand même avant de demander. J'ai fait comme tu dis dans ton dernier message et c'est parfait.

Link to comment
Share on other sites

Merci, désolée de t'avoir dérangé. Pour ma défense, en ayant mis (o) ça n'offrait pas les frais de port du tout pour la zone concernée, j'avais testé quand même avant de demander. J'ai fait comme tu dis dans ton dernier message et c'est parfait.


Non, tu ne m'a pas derangé, en fait ca fonctionnait quand même chez toi, parce que j'ai oublier qu'en php zero = null, mais le code n'est pas propre.
je precise quand même que je ne suis pas developpeur, il y a moins de 2 ans le php c'etais du chinois pour moi.
je bidouille par obligation c'est tout, n'ayant pas de gros moyen...
Mais il y a des choses "logique" a comprendre quand quelqu'un vous donne un "bout de code".

2 p'tit trucs qui vous feront pas de mal.
1) pensez a noter toutes les modifs que vous faites dans un fichier texte, cela vous permettras de vous y retrouver au changement de version.
2) utiliser le plugin Firebug pour firefox que permet de voir le modif en temps reel d'une page.

@+
Pdriss
Ps: Katzele, pense a modifier le code dans les 2 fichiers. :coolsmile:
Link to comment
Share on other sites

Salut,

le développement d'un seuil de prix par transporteur et par zone pour la gratuité est il prévu pour une intégration future et officielle dans prestashop ?

Genre pour la 1.4... parceque sinon je vais devoir me le taper...

Link to comment
Share on other sites

Ce que je vais dire est vrai : la solution existait déjà, il a fallut que je l'achète à une personne du forum. Soit les gents qui se disent programmateur sur ce forum sont des navets ce que je doute, soit effectivement ils entretiennent un suspens pour faire vivre le forum. Mais la solution existe depuis bien longtemps. Par respect pour celui qui vend le module , je ne le délivrerai pas. Mais c'est grave, nous nous acharnons et perdons un temps précieux, et cela fait rire certains.
Je n'attend plus de remarques de votre part, fin de l'histoire.

Link to comment
Share on other sites

oui, faut croire qu'il est plus rentable de vendre des modules presta que d'ouvrir une boutique...
je perd un temp fou a bidouiller des trucs qui existe surement deja, même si certain modules sont pas cher 15€+15€+15€ ca commence a douiller !
surtout quand on vend des produits en dessous d'1 €. :P
en tout cas, ce n'est pas l'idée que je me faisait de l'open source...
En ce moment j'essaie d'integrer une phrase genre " plus que X (€,$,etc..) pour avoir le port gratuit" dans le panier ajax tout ça selon la zone.
je pense que cela devrais augmenter le taux de conversion.
Et ben je "rame" depuis 3 jours !
si cela vous interresse dite le moi...

@+
Pdriss

Ps: Quelqu'un sait comment "court-circuiter" la config "frais de port" de presta via un module ?

Link to comment
Share on other sites

Et par groupe de clients, ce serait bien aussi, tant qu'à faire un module payant... je vais me faire jeter !
En tout cas la solution de pdriss marche nickel pour moi.

Je précise quand même que des modules payants j'en ai acheté une quantité.

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

Afin de contribuer a une solution gratuite voila ce que j'ai fait sur mon site, en version 1.3.1.1, sur lequel j'étais confrontée au même problème :
- Gratuité des frais de ports sur un seul transporteur à partir d'un montant
- Gratuité des frais de ports seulement pour le pays de ma société

J'ai donc créé une zone spéciale (France Métropolitaine) pour mon pays (France) qui a l'ID (7) : "ces informations sont à adapter pour le code ci-dessous".

J'ai créé deux transporteurs identiques colissimo (1 pour l'Europe hors france : COLISSIMO EUROPE, et l'autre pour la France Métropolitaine : COLISSIMO SUIVI)

J'ai configuré la manutention comme ci-dessous via le BO :
Frais de manutention: 0€
Frais de port offerts à partir de: 100€
Frais de port offerts à partir de: 0kg


Après j'ai apporté une modifications aux fichiers :
classes/Cart.php:
ligne 830 (ajout du transporteur par defaut pour la gratuite des frais de ports)
remplacement de

if (isset($configuration['PS_SHIPPING_FREE_PRICE']))


par

if (isset($configuration['PS_SHIPPING_FREE_PRICE']) && Configuration::get('PS_CARRIER_DEFAULT')==$id_carrier)


ligne 834
remplacement de (7=id de ma zone france metropolitaine)

if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0)


par

if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0 AND intval($id_zone) == 7)


ligne 1039 (ajout de l'entré tableau 'IDzone')
remplacement de

        return array(
           'delivery' => $delivery,
           'delivery_state' => State::getNameById($delivery->id_state),
           'invoice' => $invoice,
           'invoice_state' => State::getNameById($invoice->id_state),
           'carrier' => new Carrier(intval($this->id_carrier), $cookie->id_lang),
           'products' => $this->getProducts(false),
           'discounts' => $this->getDiscounts(),
           'total_discounts' => $this->getOrderTotal(true, 2),
           'total_discounts_tax_exc' => $this->getOrderTotal(false, 2),
           'total_wrapping' => $this->getOrderTotal(true, 6),
           'total_wrapping_tax_exc' => $this->getOrderTotal(false, 6),
           'total_shipping' => $this->getOrderShippingCost(),
           'total_shipping_tax_exc' => $this->getOrderShippingCost(NULL, false),
           'total_products_wt' => $this->getOrderTotal(true, 1),
           'total_products' => $this->getOrderTotal(false, 1),
           'total_price' => $this->getOrderTotal(),
           'total_tax' => $this->getOrderTotal() - $this->getOrderTotal(false),
           'total_price_without_tax' => $this->getOrderTotal(false));
   }


par

        return array(
           'delivery' => $delivery,
           'delivery_state' => State::getNameById($delivery->id_state),
           'invoice' => $invoice,
           'invoice_state' => State::getNameById($invoice->id_state),
           'carrier' => new Carrier(intval($this->id_carrier), $cookie->id_lang),
           'products' => $this->getProducts(false),
           'discounts' => $this->getDiscounts(),
           'total_discounts' => $this->getOrderTotal(true, 2),
           'total_discounts_tax_exc' => $this->getOrderTotal(false, 2),
           'total_wrapping' => $this->getOrderTotal(true, 6),
           'total_wrapping_tax_exc' => $this->getOrderTotal(false, 6),
           'total_shipping' => $this->getOrderShippingCost(),
           'total_shipping_tax_exc' => $this->getOrderShippingCost(NULL, false),
           'total_products_wt' => $this->getOrderTotal(true, 1),
           'total_products' => $this->getOrderTotal(false, 1),
           'total_price' => $this->getOrderTotal(),
           'total_tax' => $this->getOrderTotal() - $this->getOrderTotal(false),
           'total_price_without_tax' => $this->getOrderTotal(false),
           'IDzone' => Address::getZoneById(intval($this->id_address_delivery)));
   }



themes/<>/order-payment.tpl
ligne 82 (pour me pas afficher aux autres pays qui ne profitent pas des frais de ports gratuit à partir d'un certain montant "Remaining amount to be added....")
remplacement de

{if $free_ship > 0}


par

{if $free_ship > 0 AND $IDzone == 7}



themes/<>/shopping-cart.tpl
ligne 107 (pour me pas afficher aux autres pays qui ne profitent pas des frais de ports gratuit à partir d'un certain montant "Remaining amount to be added...")
remplacement de

{if $free_ship > 0}


par

{if $free_ship > 0 AND $IDzone == 7}



Merci des informations des posts d'avant qui m'ont permis de faire ce que je voulais sans payer un module.


Vive les forums et vive l'open-source

Link to comment
Share on other sites

Un grand merci pour ta synthèse des modifs.
J'ai 2 petites remarques :

- je pense que tu veux parler du themes/<>/shopping-cart.tpl à la place de themes/<>/shopping-cart.php.

- idem pour le fichier order-payement.tpl sauf que dans ce cas, je ne trouve pas la modif à faire... :bug:

Je travaille en PS 1.3.2, peut-être que la modif du order-payement.tpl n'est plus d'actualité :roll:

Link to comment
Share on other sites

Oui tu as raison, car en fait j'ai appliqué une modif a mes fichier .tpl en .php pour protéger mon thème ;-P

Je modifie mon post

La ligne à modifier, dans le fichier order-payement.tpl, n'est peut pas présente. Cela dépend de ton thème, chez moi il est affiché car je veux le voir sur ma facture
Voici une copie du code order-payement.tpl (pour info) si tu veux l'ajouter par rapport au tag à remplacer par

                <!-- frais de port gratuit uniquement pour la france order-payment -->
               {if $free_ship > 0 AND $IDzone == 7}

{l s='Remaining amount to be added to your cart in order to obtain free shipping:'}
{convertPrice price=$free_ship}

               {/if}

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...

Bonjour,
si tu veux que les frais de port sera gratuit pour un pays c'est très simple, c'est gérable à partir du BO ^^. c'est pas la peine de modifier dans le code.


tu n'as qu'à modifier les frais de port de la France par exemple et les mettre à 0.
comme dans la pièce joint. Comme sa pour tout les autre pays les frais de port seront appliqué normalement sauf pour la France ils seront à 0 .

35706_F0RNYVxIDn3MwtcB5BP7_t

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

Tout fonctionne bien chez moi. Je rencontre juste un mini problème que je n'arrive vraisemblablement pas a résoudre seul.

la phrase : Pour obtenir la gratuité des frais de port, vous devez encore commander pour... n'apparait plus du tout.

J'aurais voulu qu'elle s'affiche simplement si la zone = 6. J'ai bien suivi ce que vous avez modifier dans le fichier shopping-cart.tpl mais ca ne fonctionne pas chez moi.

Merci d'avance de votre aide.

{if $free_ship > 0 AND $IDzone == 6} 

{l s='Remaining amount to be added to your cart in order to obtain free shipping:'}
{convertPrice price=$free_ship} 

Link to comment
Share on other sites

comment est paramétré votre cache Smarty ?

Dans le fichier config/smarty.config.inc.php il faut que la variable $smarty->force_compile soit à true (pour forcer la compilation a chaque execution)

$smarty->force_compile    = true; // to pass "false" when put into production



Ne pas oublier de la remettre à false après afin de ne pas forcer la regénération du cache

Link to comment
Share on other sites

Activer le mode debug de smarty dans le fichier config/smarty.config.inc.php (Attention si ton site est deja en production car ce mode affiche le contenu de toutes tes variables de chaque pages, tu dois le faire sur un environnement de test)
$smarty->debugging = true;

ou bien si tu ne veux qu'afficher le mode debug sur un fichier .tpl tu dois ajouter la variable {debug} au début de ton fichier

Et après ce mode activé, tu vas sur la page de ton panier pour voir la valeur de tes conditions ($free_ship et $IDzone)
Pour que le message "Pour obtenir la gratuité des frais de port, v..." s'affiche free_ship doit être supérieur à 0 ET IDzone doit être égal à 6

Link to comment
Share on other sites

  • 2 months later...

bonsoir,

Je rencontre le meme probleme je suis passée en version 1.3.7 , et j'ai fait la modif pour les zones, donc j'offre les frais de port en zone 6 ( france ) des 65 euros et pour les DOM zone 7 a partir de 110 euros pour le reste je ne les offres pas, jusque la le calcul ce fait bien cependant cest la phrase "obtenir la gratuité des FDP..." qui me posait probleme.
j'ai donc suivi ce que erotikat disait , sauf que depuis la phrase a disparu autant pour la zone 6 ( cest a dire la france) que pour la zone des DOMS ( zone 7)
je voudrais que la phrase ne s'affiche que pour la france et les DOMS , j'ai donc toujours suivi les conseil d'erotikat, j'etais deja en TRUE et $smarty->debugging = true etait deja sur ce mode.
LA phrase ne s'affiche toujours pas, pourriez vous m'aidez svp, j'y suis depuis deux heures et je tourne en rond.
MErci d'avance

Link to comment
Share on other sites

  • 1 year later...

Merci pour les différentes contributions. Je vais tester la solution de ce pas. J'ai effectivement besoin d'appliquer la gratuité des frais de port à partir d'un certain montant mais uniquement pour la France métropolitaine.

 

Est-ce que cette solution fonctionne avec la 1.5 ?

 

Merci encore à la communauté ;)

Link to comment
Share on other sites

  • 2 months later...
  • 1 year later...

Bonjour,

 

j'aimerais configurer des frais de ports gratuits en France, si et seulement :

 

- si minimum 15 € d'achat

   +

- si livraison dans 27 villes/villages (27 codes postaux) de la communauté urbaine de ma ville (strasbourg)

 

Comment associer ces deux conditions ?

 

 

Les autres modes de livraison en France restent basiques...

 

Merci

Link to comment
Share on other sites

  • 2 years later...

Bonjour, je suis nouveau sur Prestashop et je souhait aussi offrir la livraison uniquement en France, le calcul de mes fdp se fait au poids, j'ai créé une zone France métropolitaine et le pays France.

par contre je ne trouve pas comment modifier le code dans cart.php, quelle est la procédure pour y accéder ?

D'avance merci pour vos réponses.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...