MRVZ Posted November 18, 2009 Share Posted November 18, 2009 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éponsesVersion 1.2.5.0 - 0.987s Link to comment Share on other sites More sharing options...
webenov Posted November 18, 2009 Share Posted November 18, 2009 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 More sharing options...
MRVZ Posted November 19, 2009 Author Share Posted November 19, 2009 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-danPS: la prochaine fois poste ton code en utilisant la balise code ^^ Link to comment Share on other sites More sharing options...
quinou Posted November 20, 2009 Share Posted November 20, 2009 bonjour,Tu as la réponse ds le fil suivant :http://www.prestashop.com/forums/viewthread/16701/P15/developpement_et_modules/resolu_frais_de_port__problemeRemarque :Alekhine a dupliqué la fonction Link to comment Share on other sites More sharing options...
webenov Posted November 20, 2009 Share Posted November 20, 2009 C'est ce que j'ai proposé. pour moi ca marche bien. 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