• By Nacho
  • 22 de febrero de 2024

Cómo eliminar pedidos de PrestaShop 1.6 desde base de datos

Cómo eliminar pedidos de PrestaShop 1.6 desde base de datos

Cómo eliminar pedidos de PrestaShop 1.6 desde base de datos 1000 667 Nacho

Dificultad Media

Si gestionas una tienda en PrestaShop y necesitas eliminar todos los pedidos por cualquier causa, es posible que necesites hacerlo directamente desde base de datos. Este proceso puede ser útil, por ejemplo, cuando deseas limpiar la base de datos de pedidos de una tienda destinada exclusivamente a profesionales.

Consideraciones Importantes antes de Empezar

Antes de realizar cualquier operación de eliminación, es crucial realizar una copia de seguridad completa de tu base de datos. Esto garantizará que puedas restaurar tus datos en caso de cualquier problema. Además, ten en cuenta que la eliminación de pedidos afectará las estadísticas y registros asociados con esos pedidos.

Queries SQL para Eliminar Pedidos

A continuación, te proporcionamos queries SQL que puedes ejecutar en tu base de datos para eliminar los pedidos de una tienda específica. Estas queries deben ejecutarse con precaución y adaptarse según la configuración de tu tienda. LEE HASTA EL FINAL:

1. Eliminar Pedidos:

DELETE FROM ps_orders WHERE id_shop = 1;

2. Eliminar Detalles de Pedidos:

DELETE FROM ps_order_detail WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1);

3. Eliminar Facturas Asociadas a los Pedidos:

DELETE FROM ps_order_invoice WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1);

4. Eliminar Pagos Asociados a los Pedidos:

DELETE FROM ps_order_payment WHERE order_reference IN (SELECT reference FROM ps_orders WHERE id_shop = 1);

5. Eliminar Envíos Asociados a los Pedidos:

DELETE FROM ps_order_carrier WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1);

6. Eliminar Mensajes Asociados a los Pedidos:

DELETE FROM ps_message WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1);

Cómo realizar el borrado desde base de datos:

Para realizar el borrado, debemos realizarlo en un orden concreto, ya que el último borrado debe ser el de la tabla «ps_orders». Es importante hacer este borrado el último, ya que necesitamos que el resto de tablas «encuentren» los pedidos que se deben de eliminar.

El código completo quedaría del siguiente estilo:

DELETE FROM ps_message WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1);
DELETE FROM ps_order_carrier WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1);
DELETE FROM ps_order_payment WHERE order_reference IN (SELECT reference FROM ps_orders WHERE id_shop = 1);
DELETE FROM ps_order_invoice WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1);
DELETE FROM ps_order_detail WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1);
DELETE FROM ps_orders WHERE id_shop = 1;

Después de la Eliminación

Una vez que hayas ejecutado estas queries, verifica que la eliminación de los pedidos no cause problemas con los módulos adicionales que puedas tener instalados en tu tienda. También, recuerda recalcular las estadísticas y limpiar las caches en la interfaz de administración de PrestaShop.

Consideraciones

Si necesitases realizar cualquier filtro, por ejemplo, si tienes multi-tienda y quieres eliminar los datos de la tienda de profesionales, pondríamos «id_shop=2» en todas las queries.

Recuerda utilizar el prefijo de tu tabla, es decir, sustituye «ps_» por el prefijo que hayas decidido y que se esté utilizando en tu PS.

También puedes poner filtros por fecha, por ejemplo, si quieres eliminar los pedidos anteriores a un año en concreto. Para eliminar los pedidos de PrestaShop que sean anteriores a 2020, el código quedaría del siguiente estilo:

-- 1. Eliminar Detalles de Pedidos asociados a esos pedidos:
DELETE FROM ps_order_detail WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1 AND date_add < '2020-01-01');

-- 2. Eliminar Facturas asociadas a esos pedidos:
DELETE FROM ps_order_invoice WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1 AND date_add < '2020-01-01');

-- 3. Eliminar Pagos asociados a esos pedidos:
DELETE FROM ps_order_payment WHERE order_reference IN (SELECT reference FROM ps_orders WHERE id_shop = 1 AND date_add < '2020-01-01');

-- 4. Eliminar Envíos asociados a esos pedidos:
DELETE FROM ps_order_carrier WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1 AND date_add < '2020-01-01');

-- 5. Eliminar Mensajes asociados a esos pedidos:
DELETE FROM ps_message WHERE id_order IN (SELECT id_order FROM ps_orders WHERE id_shop = 1 AND date_add < '2020-01-01');

-- 6. Eliminar Pedidos anteriores a 2020:
DELETE FROM ps_orders WHERE id_shop = 1 AND date_add < '2020-01-01';

Destruir es más fácil que crear

Dejar una Respuesta