Jump to content

Posible bug en envios por peso?


Perrotekel

Recommended Posts

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...