SmythSys IT Consulting

Carritos vacíos al enviar productos al mismo en Prestashop. Posible solución.

Hace unos días, tras una actualización en un Prestashop 1.6 de un cliente, empezaron a ocurrir “cosas raras”.

En el Front End, de manera aleatoria (y muy frecuente en ciertos momentos), los clientes estaban enviando productos al carrito, y al llegar al mismo estaba vacío.
En el Back End, algunos plugins como el de TPV, al intentar enviar productos para cobrar, también daban un resultado vacío.

Todo esto sin errores significativos en los logs del servidor, ni en modo debug. Sólo salía este error en los logs de Prestashop (backend) :
Frontcontroller::init – Cart cannot be loaded or an order has already been placed using this cart

Posible solución.

Y digo posible porque en estas cosas las causas pueden ser múltiples, y lo que vale para uno no siempre vale para otro.

Nosotros descubrimos la causa en este post.
Al comprobar las tablas ps_cart y ps_order, viemos que el id del carrito que estaba asignando ps_cart, como posible siguiente carrito, era MUCHO menor que los que estaban en ps_order.
Y los pedidos fallaban cuando coincidían con un ps_cart que ya había tenido un pedido (en ps_order). A veces no fallaba porque no todos los carritos se convierten en pedidos.

La solución entonces es hacer que el último número de ps_cart (a partir del cual crea el siguiente) sea mayor que el último de los carritos de los pedidos. Así no pueden coincidir.

Deja un comentario

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).