Jump to content

[résolu] Transporteurs : ceux-ci apparaissent même si le prix est inférieur à leur prix mini :(


Recommended Posts

Bonjour

J'ai un problème pour paramétrer les transporteurs de ma boutique. Étant donné que je vais vendre des bijoux, le poids est négligeable, cependant les prix peuvent être très variables, c'est pourquoi j'ai configuré les transporteurs en fonction du prix des articles.

o Pour une commande chère, pas de problème seuls les transporteurs prenant en charge les commandes dans ces prix sont proposés au client.

o Pour une commande modeste, tous les transporteurs sont affichés, même si le prix de la commande est en dessous de leur tranche de prix.

Qu'ai-je bien pu oublier de configurer ?

Link to comment
Share on other sites

il faut modifier la valeur du champs "Comportement des tranches :"
Cela ce gère dans Panneau d'administration >> Transport >> Transporteurs >>> ton transporteur en question

Passer cette valeur à "désactiver le transporteur"

j'espère que ça va résoudre ton problème ;)

Link to comment
Share on other sites

J'ai paramétré les 3 transporteurs suivants (+ le retrait en magasin):

o La perle (retrait en magasin) de 1 € à 15 000 €
o Colissimo de 1 € à 800 €
o Chronopost de 800 € à 1 500 €
o UPS de 1 500 € à 15 000 €

Si je choisis un bijoux à 50 €, les 3 transporteurs sont affichés, or uniquement Colissimo devrait être proposé
(Si je choisis un bijoux à 950 €, seul Chronopost et UPS sont affichés)

Le site n'est pas encore ouvert en production, mais voici l'adresse du serveur d'intégration :
http://laperle.numeriforge.com

Link to comment
Share on other sites

Apparemment c'est le comportement par défaut de Prestashop qui désactive bien les transporteurs quand la tranche est supérieure mais pas quand elle est inférieure.

Pour désactiver le transporteur quand la tranche est inférieure tu dois modifier le fichier Classes>>Carrier.php comme ceci :

    static public function checkDeliveryPriceByPrice($id_carrier, $orderTotal, $id_zone)
   {
       $result = Db::getInstance()->getRow('
       SELECT d.`price`
       FROM `'._DB_PREFIX_.'delivery` d
       LEFT JOIN `'._DB_PREFIX_.'range_price` r ON d.`id_range_price` = r.`id_range_price`
       WHERE d.`id_zone` = '.intval($id_zone).'
       AND '.floatval($orderTotal).' <= r.`delimiter2`
       AND '.floatval($orderTotal).' >= r.`delimiter1` // <---Ligne à ajouter
       AND d.`id_carrier` = '.intval($id_carrier).'
       ORDER BY r.`delimiter1` ASC');
       if (!isset($result['price']))
           return false;
       return true;
   } 



Et là normalement cela va 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...