Aloha, hoje vou explicar como deletar pedidos de teste no magento.
Existem algumas formas para fazermos isto a primeira forma é comprado o modulo Delete Any Order (€20.00) desenvolvido pela Yireo que tem suporte as versões 1.3 e 1.4, já se você não quer desembolsar nada para esta operação siga os passos a diante conforme sua versão do magento:
Tanto para a versão 1.3 quanto para a 1.4 faremos uma stored procedure no nosso bando de dados.
Magento 1.3
1 Criando a procedure
Copie e cole este SQL no seu banco de dados:
DELIMITER $$ CREATE PROCEDURE DELETAR_PEDIDOS(id_inicial INTEGER, id_final INTEGER) BEGIN DECLARE a INT DEFAULT id_inicial ; simple_loop: LOOP SET a=a+1; SET @increment_id = a; SET FOREIGN_KEY_CHECKS = 1; SELECT @order_id:=entity_id FROM sales_order_entity WHERE increment_id=@increment_id; DELETE FROM sales_order_entity WHERE entity_id=@order_id or parent_id=@order_id; DELETE FROM sales_order WHERE increment_id=@increment_id; SELECT a; IF a=id_final THEN LEAVE simple_loop; END IF; END LOOP simple_loop; END$$
2 Executando a procedure
Primeiro parâmetro é o order id inicial e o segundo é o order id final, sendo assim será deletado todos os pedidos entre este intervalo.
CALL DELETAR_PEDIDOS(100000064, 100000121);
Magento 1.4
1 Criando a procedure
Copie e cole este SQL no seu banco de dados:
DELIMITER $$
CREATE PROCEDURE DELETAR_PEDIDOS(id_inicial INTEGER, id_final INTEGER)
BEGIN
DECLARE a INT DEFAULT id_inicial ;
simple_loop: LOOP
SET a=a+1;
SET @orderId = a;
SET FOREIGN_KEY_CHECKS = 1;
DELETE FROM sales_flat_order
WHERE increment_id = @orderId;
DELETE FROM sales_flat_quote
WHERE reserved_order_id = @orderId;
SELECT a;
IF a=id_final THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
END $$
2 Executando a procedure
Primeiro parâmetro é o order id inicial e o segundo é o order id final, sendo assim será deletado todos os pedidos entre este intervalo.
CALL DELETAR_PEDIDOS(100000064, 100000121);
p.s : Antes de fazer qualquer mudança no seu banco de dados de extremamente recomendado fazer um backup do mesmo.
Excluindo somente um pedido
DELIMITER $$
CREATE PROCEDURE DELETAR_PEDIDO(id INTEGER)
BEGIN
SET FOREIGN_KEY_CHECKS = 1;
SET @id = id;
SELECT @order_id:=entity_id FROM sales_order_entity
WHERE increment_id=@id;
DELETE FROM sales_order_entity
WHERE entity_id=@order_id or parent_id=@order_id;
DELETE FROM sales_order
WHERE increment_id=@id;
END$$
Modo de usar:
CALL DELETAR_PEDIDO(10000054);
