Jump to content

transporteur en fonction de la tranche de poid


MRVZ

Recommended Posts

Bonjour à tous,

Je voudrais avoir deux transporteurs l'un pour les produits de 0 à 0.500 gramme et l'autre de 0.500 à 2.0 ou plus, jusque là pas de soucis, J'ai donc créé mes deux transporteurs et leur ai attribué les différentes tranches de poids puis indiqué les prix correspondant à chaque tranches.

Le soucis c'est que lorsque je simule une commande d'un produit pesant 0.250 (donc dans la première tranche) les deux transporteur apparaissent ors j'aurai souhaité que seul le transporteur de la première tranche apparaisse est vice versa dans le cas contraire.

J'espère avoir été le plus clair possible, merci d'avance pour vos réponses

Version 1.2.5.0 - 0.987s

Link to comment
Share on other sites

Une erreur de plus !

Dans la classe Carrier.php le test sur la tranche est faux où alors je n'y comprends rien.

à un moment le code test avec la fonction : checkDeliveryPriceByWeight( qui est dans ce fichier

Et d'après moi, il vérifie sur le poids est bien inférieur à la première borne mais pas si elle est supérieur à la deuxième.

static public function checkDeliveryPriceByWeight($id_carrier, $totalWeight, $id_zone)
{
$result = Db::getInstance()->getRow('
SELECT d.`price`
FROM `'._DB_PREFIX_.'delivery` d
LEFT JOIN `'._DB_PREFIX_.'range_weight` w ON d.`id_range_weight` = w.`id_range_weight`
WHERE d.`id_zone` = '.intval($id_zone).'
AND '.floatval($totalWeight).' <= w.`delimiter2`
AND '.floatval($totalWeight).' >= w.`delimiter1`
AND d.`id_carrier` = '.intval($id_carrier).'
ORDER BY w.`delimiter1` ASC');
if (!isset($result['price']))
return false;
return true;
}

En tout cas avec ça pour moi ça marche j'ai l'impression...

Link to comment
Share on other sites

J'ai bien essayer ta technique : remplacer dans le fichier /classes/Carrier.php le contenu de la ligne 136 à 149 par

    static public function checkDeliveryPriceByWeight($id_carrier, $totalWeight, $id_zone) 
   { 
   $result = Db::getInstance()->getRow('
       SELECT d.`price`
       FROM `'.DB_PREFIX.'delivery` d
       LEFT JOIN `'.DB_PREFIX.'range_weight` w ON d.`id_range_weight` = w.`id_range_weight`
       WHERE d.`id_zone` = '.intval($id_zone).'
       AND '.floatval($totalWeight).' <= w.`delimiter2`
       AND '.floatval($totalWeight).' >= w.`delimiter1`
       AND d.`id_carrier` = '.intval($id_carrier).'
       ORDER BY w.`delimiter1` ASC');
       if (!isset($result['price'])) 
           return false; 
       return true; 
   }



Mais cela ne change rien de mon côté. Une autre idée sur le forum ?
en tout les cas merci de ta réponse zi-dan

PS: la prochaine fois poste ton code en utilisant la balise code ^^

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