Jump to content

[SOLUCIONADO] Intrusión (Order -> total_paid = xx)


Recommended Posts

Hola,

Tengo un problema, no me deja finalizar la compra... me sale el error "Intrusión (Order -> total_paid = xx)" a la hora de pagar contra reemboloso o con tranferencia bancaria.
Con el tpv caja rural y con paypal me envía bien, hacemos el pago, pero al volver a la tienda crea el mismo error. He probado desinstalar módulos y volver a intalar, crea nuevo usuario, etc... sin resultados.
¿A alguien le ha pasado algo parecido y a podido arreglarlo?

Saludos,
Abraham.

SOLUCIONADO

Recuperé un backup anterior y a funcionar de nuevo... ¿Por que ha pasado? Ni idea.

Link to comment
Share on other sites

He activado para que muestre errores y me dice al agregar al carrito:


Notice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '24 <= r.`delimiter2` AND d.`id_carrier` = 47 ORDER BY r.`delimiter1` ASC LIM' at line 5

       SELECT d.`price`
       FROM `ps_delivery` d
       LEFT JOIN `ps_range_price` r ON d.`id_range_price` = r.`id_range_price`
       WHERE d.`id_zone` = 1
       AND 42,24 <= r.`delimiter2`
       AND d.`id_carrier` = 47
       ORDER BY r.`delimiter1` ASC

in /var/www/vhosts/xxxx/classes/MySQL.php on line 57



¿Que archivo llama o debo tocar para arreglar este error?

Link to comment
Share on other sites

El error está en que no reconoce la "," es decir cuando el importe no tiene decimales no hay error, salvo al dar a comprar que recoje el valor sin iva y entonces si dá error de nuevo. Leyendo por foros dicen de añadir

$ A = str_replace (',', '.', floatval ($ B));
pero no entiendo donde exactamente ponerlo ni por que ahora no reconoce las comas.

La función entiendo que es está en classes/carriers.php

    public function getDeliveryPriceByPrice($orderTotal, $id_zone)
   {

       if (isset(self::$priceByPrice[$this->id]))
           return self::$priceByPrice[$this->id];
       $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 d.`id_carrier` = '.intval($this->id).'
       ORDER BY r.`delimiter1` ASC');
       if (!isset($result['price']))
           return $this->getMaxDeliveryPriceByPrice($id_zone);
       return $result['price'];
   }



Seguro que algún gurú dá con la solución....

Prestashop 1.2.3

Link to comment
Share on other sites

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