Perrotekel Posted March 20, 2009 Share Posted March 20, 2009 Hola mi tienda cobra los gastos de envio en funcion del peso de los productos, pues bien, tengo varios rangos, de 0 a 999, de 1000 a 9999 y de 10000 a 999999 y si a un producto le pongo que tiene de peso 10000 kg cuando vas a seleccionar el gasto de envio te sale el que esta puesto en el rango de 0 a 999, he mirado y es por que al parsear 10000 en el metodo checkDeliveryPriceByWeight con la funcion floatval me devuelve 10,000 y entonces lo trata como 10. 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 d.`id_carrier` = '.intval($id_carrier).' ORDER BY w.`delimiter1` ASC'); if (!isset($result['price'])) return false; return true; } Mirando y mirando he visto que en la clase Cart.php hay una funcion que devuelve el peso total del pedido function getTotalWeight() . . $this->_totalWeight = number_format(floatval($result['nb'] + $result2['nb']), 3); . . He cambiado esa linea para que no devuelva la , decimal. $this->_totalWeight = number_format(floatval($result['nb'] + $result2['nb']), 3,',',''); ¿Que os parece?Saludos Link to comment Share on other sites More sharing options...
Recommended Posts