Índice de contenidos
PrestaShop no añade productos al carrito
En esta entrada recapitulo las acciones que hice para «arreglar» el carrito de una tienda desarrollada en PrestaShop 1.7, así como otras alternativas que he recapitulado y que deduzco que a otras personas le han funcionado.
Antecedentes
La base de datos de esta tienda online había crecido de forma desmesurada y necesitaba aliviar el peso de la misma.
En su momento, había ejecutado unas consultas para aliviar la base de datos, que fueron las siguientes:
truncate table PS_cart_product;
truncate table PS_cart;
truncate table PS_cart_discount;
Consultas que en anteriores ocasiones había realizado, pero no había caído en que las había usado en versiones de Prestashop 1.6.
Tendría que haber sospechado que la información vista no era válida para la versión 1.7 de PrestaShop, ya que en esta versión no existe la tabla «PS_cart_discount».
Y efectivamente, si se ejecutan en la versión 1.7 hay que hacer unos ajustes manuales en la base de datos.
El error que obtenía era el siguiente «Frontcontroller::init – Cart cannot be loaded or an order has already been placed using this cart».

La solución a mi problema particular
Al haber vaciado la tabla de los carritos, los IDs en la base de datos se habían descuadrado y en ciertas ocasiones, el añadir productos al carrito fallaba.
La solución es ver el ID del carrito de la tabla carrito (ps_cart) y el ID del carrito de la tabla pedidos (ps_orders).
SELECT id_cart FROM ps_cart ORDER by id_cart DESC LIMIT 1;
SELECT id_cart FROM ps_orders ORDER by id_cart DESC LIMIT 1;
Estas consultas devuelven dos valores.
El ID de la tabla del carrito debe ser siempre mayor que el de la tabla de los pedidos.
Si te sucede esto, tiene solución fácil, tan solo debes ejecutar esta sentencia SQL:
ALTER TABLE ps_cart AUTO_INCREMENT = 5000;
El valor de 5000 es un ejemplo, tienes que poner un valor mayor de lo que devuelve esta consulta —> SELECT id_cart FROM ps_orders ORDER by id_cart DESC LIMIT 1;
Explicación:
Cuando un cliente añade productos se crea un carrito de compra en la base de datos (tabla ps_cart), cuando se hace el pago, se origina un pedido (tabla ps_orders), y el pedido que se acaba de crear se relaciona, en la base de datos, con el carrito creado previamente.
Como se habían eliminado todos los carritos, pasaba que al añadir productos al carrito, PrestaShop detectaba que ese carrito ya tenía relación con un pedido ya finalizado… Esto provocaba que no se pudieran añadir productos al carrito.
Intentos de arreglos que no funcionaron
Editar de la clase del carrito «Cart.php», modificando el cartExists() y devolviendo false en vez de un ID, pero esto provocaba fallos a la hora de pagar, en este caso, en PayPal.
Había probado a desactivar la geolocalización, que había leído que a veces da problemas…
Regeneré los enlaces permanentes, activando y desactivando las URLs amigables (Parámetros Avanzados > Tráfico & SEO)
Comprobé en que el dominio fuera sin las www.
Volví a instalar el tema por defecto y seguía pasando.
Parámetros Avanzados > Tráfico & SEO revisé que la opción «Disable Apache’s mod_security module» estuviera marcada la opción «No».
Pero nada de esto lo solventó, seguía sin poder añadir productos al carrito.
No desesperes
Si esto no te soluciona el problema, ponme un comentario, a ver si entre los dos podemos dar con la solución y que quede constancia de ello para la comunidad de PrestaShop
Fuente: Stackoverflow
Buenas,
Tengo un problema con el carrito que ha surgido estos días de repente.
Cuando hay un producto en vista rápida se puede añadir al carrito pero cuando entras al producto y lo añades al carrito, aparece el carrito vacío.
He probado varias de las opciones que he ido leyendo pero no doy con la solución (también exponer que no soy informático y me cuestan algunas de las opciones).
Si hubiese alguna forma de solucionarlo pero ayudaría ya que ha sido justo minutos antes del lanzamiento de la web. Por ahora lo he puesto en modo catálogo.
Hola Miguel,
Es un caso raro esto que comentas, sucede en todos los productos? Supongo que has probado a borrar la caché.
Te diria que trataras de ampliar información con la consola del navegador, en el error log del php, o si no, desde la adminsitración del PrestaShop también tienes una opción para ver errores en Configurar > Parametros Avanzados > Registros/Logs.
Ayudaría saber la versión del Prestashop y la versión de php 😉
Hola Javier,
Gracias por la respuesta y te he abierto dos comentarios por lo que parece.
Estoy probando con error log y me aparece lo siguiente al añadir al carrito:
DevTools failed to load source map: Could not load content for https://www.veltom.es/themes/core.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
Y como comentario:
A page or script is accessing at least one of navigator.userAgent, navigator.appVersion, and navigator.platform. Starting in Chrome 101, the amount of information available in the User Agent string will be reduced.
To fix this issue, replace the usage of navigator.userAgent, navigator.appVersion, and navigator.platform with feature detection, progressive enhancement, or migrate to navigator.userAgentData.
Note that for performance reasons, only the first access to one of the properties is shown.
La versión de prestashop es 1.7.7.3 y la versión de PHP tenía la 8.1 pero me dijeron que cambiase a 7 porque daba errores con 8, por lo que cambié a 7.4 (Ha dado error con ambas).
Disculpa la tardanza pero como comento, tampoco conozco muy bien el tema de código y errores.
Muchas gracias por la ayuda
Hola Miguel,
La versión PS 1.7.7 solo funciona con las versiones de PHP de la 7.1 hasta la 7.3
https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/
La versión 7.4 no está soportada.
Cambiala a ver qué sucede, por lo que he visto esta mañana, al ver el detalle de un artículo el pie de la página no cargaba, pero en la portada si.
Puede ser que el error sea algo más general y no tan centrado en la funcionalidad del carrito.
Buenas de nuevo.
He probado con PHP 7.1, 7.2 y 7.3 y aún así persiste el error.
Por lo que he buscado, voy a probar eliminando los carritos y pedidos anteriores por si hay algún error de AUTO INCREMENT (aunque he revisado que está correcto en PS_CART, PS_CARRIER y PS_ORDER) pero por lo que veo, en esta versión de Prestashop, desde el backoffice no puedo (o no lo veo) y desde los códigos no me atrevo por desconocimiento.
Mañana probaré de nuevo por si no lo he realizado correctamente pero si no es así, ya no sé cómo puedo descubrir el error.
Si de algún modo puedo descubrirlo me ayudaría mucho el no tener que volver a crear la web desde 0.
Muchas gracias y te mantendré al corriente de los avances.
Un saludo.
Buenos días,
En primer lugar disculpa por tanto lío y gracias por los consejos.
He probado un poco de todo y aún no hay solución. Por lo que veo, todos los errores que estoy teniendo es en la página de producto.
Ahora mismo no puedo cambiar de imagen si quiero ver el producto puesto, no puedo ampliar con la lupa la imagen, no aparecen los iconos de seguridad, envío y devoluciones, no puedo cambiar entre detalle del producto y descripción, así como persiste el error en el carrito. Sin embargo, desde vista rápida del producto en el inicio, si puedo ver las imágenes bien, ampliarlas y añadir al carrito.
Investigaré por esa parte por si por casualidad viene de ahí el error y consigo de alguna manera solucionarlo. Si tuvieses algún consejo me vendría genial porque sigo perdido en todo esto.
Muchas gracias
Miguel Iwasaki
Hola Miguel,
Yo probaría a reinstalar el tema por defecto (no perderías la configuración del PrestaShop), recuerda poner la versión de PHP entre la 7.1 y la 7.3
Otra opción, es que instales un tema gratuito, si en ese tema todo te funciona, significa que hay algo del otro tema que falta o falla.
Igual has tocado algún fichero sin querer y por eso falla, es raro que el carrito vaya en la portada y no en la ficha de producto, y esto indica que el carrito al final funciona, si no, fallaría siempre.
Ya me dirás qué tal!
¡Un saludo!
Hola de nuevo Javier,
Informar que al parecer ya funciona correctamente. Sigo realizando pruebas por si en algún momento vuelve a fallar.
Lo que hice fue como dijiste, buscar un tema gratuito pero tuve problemas al instalarlo, por eso he tardado tanto en volver aquí. Tras varas búsquedas e intentos conseguí uno.
Al cambiar de tema, al principio no funcionaba y me daba el mismo error que el anterior, además que varias traducciones no se hacían correctamente.
Probé con las versiones de PHP de nuevo y nada. Volví a cambiar de tema al mío inicial (que es que viene por defecto) y habían algunas traducciones que aunque estaban bien en el backoffice parece que no se actualizaba. Únicamente tuve que reiniciar alguna y todo correcto al igual que se puede añadir al carrito el producto y puedo ver las imágenes bien.
Parece que al cambiar de tema se habrá reiniciado y todo está correcto.
Ahora quiero revisar que todo esté bien con pedidos ya que los he eliminado todos para empezar de 0.
Muchas gracias por los consejos, en serio, me han servido para volver a tener un poco de control.
Seguiré revisando por si por casualidad vuelven los errores.
Gracias
Un saludo
Miguel Iwasaki
Hola Javier,
Gracias por la respuesta.
Estoy probando con error log y me aparece lo siguiente al añadir al carrito:
DevTools failed to load source map: Could not load content for https://www.veltom.es/themes/core.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
Y como comentario:
A page or script is accessing at least one of navigator.userAgent, navigator.appVersion, and navigator.platform. Starting in Chrome 101, the amount of information available in the User Agent string will be reduced.
To fix this issue, replace the usage of navigator.userAgent, navigator.appVersion, and navigator.platform with feature detection, progressive enhancement, or migrate to navigator.userAgentData.
Note that for performance reasons, only the first access to one of the properties is shown.
Disculpa la tardanza pero como comento, tampoco conozco muy bien el tema de código y errores.
Muchas gracias por la ayuda.
Hola! a nosotros nos está pasando hace 15 dias, que puntualmente, pero diariamente, hay clientes que nos reportan que no pueden añadir algunos productos al carrito. Es decir: entran muchos pedidos sin problema. Pero algunos (diariamente 2/3), nos reportan que van comprando y añadiendo sin problemas, pero luego hay algunos productos que no se añaden, pese a que tienen stock.
Preocupa cuantos clientes tienen el mismo problema y no lo reportan 🙁
Sabes como podemos solucionarlo?
Muchas gracias
Hola Maria!
Primero hay que tratar de averiguar qué falla, este problema del carrito no es algo trivial y pueden ser varias cosas lo que provocan este fallo.
No sé si habéis actualizado algo recientemente o alterado algo de la base de datos, que es lo que me pasó a mí.
Mirad en el error log de PHP y en los errores de PrestaShop a ver si indica el error, sabiendo qué falla entonces se podrá empezar a buscar soluciones 😉
¡Un saludo!
Hola, tuve este mismo problema. «El carrito no se puede cargar o ya se ha realizado un pedido usando este carrito».
En mi caso se generó al vaciar los «carritos de compras» desde SQL. Al hacer esto, se alteran los ID de los carros de compras en relación a pedidos que ya fueron generados con esos mismos ID.
SOLUCIÓN. Ingresar a la Base de Datos (Cpanel – SQL) > ingresar a la tabla «ps_cart» > Pestaña > Operaciones > En opciones de tabla, buscar la casilla — AUTO_INCREMENT | xxx | — Si el ID de los pedidos generados en tu tienda es 500 — en AUTO_INCREMENT debes indicar un # mayor, ejemplo: AUTO_INCREMENT | 600 |, guarda los cambios. Luego ingresas al BackOffice > Parámetros avanzados > Rendimiento > Borrar Caché y listo !
Me salvaste , Gracias,
Me estaba volviendo loco porque me generaba carritos extraños o no me dejaba introducir.
Ahora perfecto
¡Me alegro que haya servido Manuel!
Hola Muy interesante todo lo que leo en los comentarios, pero nada soluciona mi problema, pasa lo mismo con el mismo error «Frontcontroller::init – Cart cannot be loaded or an order has already been placed using this cart». en mi caso el carrito entra perfectamente pero muestra un error 404 al cliente provocando que el cliente no sepa si el carrito llego o no.
incluso compre un nuevo dominio , para un proyecto que tenia en mente, y con una instalacion desde 0 con el theme de casa, y la tienda y productos de prueba me sigue saliendo el mismo problema con la version 8.1 de prestashop, he cambiado versiones de PHP, he probado todas las recomendaciones del articulo que Javier dice que no les funciono, y las que la funciono en base de datos, pero como en la comundad de Prestashop este error empieza a ser un problema muy grande que le pasa un gran numero de gente, pero no doy con la solucion.
Espero que que alguien haya compartido o averiguar mas del asunto.