Jump to content

Bon de Réduc spécial village :)


Recommended Posts

Bonjour,

J'aimerai pouvoir offrir aux gens de ma petite bourguade la gratuité des frais de port....
Comment puis paramétrer cela pour que les gens qui rentrent le bon code postal ne paie pas les frais d'envoi ? .... Est-ce possible ??
Merci

Link to comment
Share on other sites

  • 3 months later...

Voici la solution (attention, ça reste quand même un peu de la bidouille !)

Dans les transporteurs, activez le Retrait sur place (réglez pour que ça marche pour la France Métropolitaine) et repérez son ID (ce sera l'id carrier retrait sur place).

Ensuite, dans les classes modifiez le fichier Address.php. Il suffit d'insérer la fonction suivante au milieu des autres fonctions :

    static public function getPostcodeByAddress($id_address)
   {
       $result = Db::getInstance()->getRow('
           SELECT `postcode` FROM `'._DB_PREFIX_.'address`
           WHERE `id_address` = '.intval($id_address));
       return isset($result['postcode']) ? $result['postcode'] : false;
   }



Ensuite, à la racine de votre presta, trouvez le fichier order.php et modifiez-le dans sa fonction displayCarrier() (environ ligne 306, dans *carrier step*). Il suffit de remplacer ça :

    $address = new Address(intval($cart->id_address_delivery));
   $id_zone = Address::getZoneById($address->id);
   $result = Carrier::getCarriers(intval($cookie->id_lang), true, false, intval($id_zone));
   $resultsArray = array();


par ça :

    $address = new Address(intval($cart->id_address_delivery));
   $id_zone = Address::getZoneById($address->id);
   $dept = Address::getPostcodeByAddress($address->id);
   //$dept = substr($dept,0,2); //pour prendre le département au lieu de la commune
   $result = Carrier::getCarriers(intval($cookie->id_lang), true, false, intval($id_zone));
   $resultsArray = array();



Enfin, rendez-vous dans le template correspondant, à savoir theme/votretheme/order-carrier.tpl . Dans le début de la boucle d'affichage du tableau, remplacez :

            {foreach from=$carriers item=carrier name=myLoop}


                       <input type="radio" name="id_carrier" value="{$carrier.id_carrier|intval}" id="id_carrier{$carrier.id_carrier|intval}" {if $carrier.id_carrier == $checked || ($checked == 0 && $i == 0) || ($carriers|@sizeof == 1)}checked="checked"{/if} />


par :

            {foreach from=$carriers item=carrier name=myLoop}


                       {if $carrier.id_carrier=='******votre id carrier retrait sur place******'}
                           {if $dept == '*******le code postal exact ou le n° de dept*******'}
                           <input type="radio" name="id_carrier" value="{$carrier.id_carrier|intval}" id="id_carrier{$carrier.id_carrier|intval}" {if $carrier.id_carrier == $checked || ($checked == 0 && $i == 0) || ($carriers|@sizeof == 1)}checked="checked"{/if} />
                           {else}-
                           {/if}
                       {else}
                       <input type="radio" name="id_carrier" value="{$carrier.id_carrier|intval}" id="id_carrier{$carrier.id_carrier|intval}" {if $carrier.id_carrier == $checked || ($checked == 0 && $i == 0) || ($carriers|@sizeof == 1)}checked="checked"{/if} />
                       {/if}


(Remplacez bien les valeurs où il y a des **** )

ça devrait marcher :)

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...