magento-delete-orders

Lors qu'un site sous est en production, il peut s'averer très utile - je pense que personne ne dira le contraire - de tester si le passage d'une commande s'effectue correctement. Ci cette étape est validée, la commande doit apparaitre dans le backend avec toutes les informations sur le client ainsi que l'achat en question.
Maintenant, le problème qui se pose est le suivant: Comment supprimer les commandes de test dans le backoffice?

Le backend permet d'annuler des commandes, mais n'a pas encore implémenté une fonction pour les supprimer. Il faudra donc le faire directement dans la base de données...

Avant d'effectuer la requete suivante, le bon sens voudrait de faire un backup (on est jamais trop prudent)! Testé sous 1.3.2.2.

Voici la requète :

 
SET FOREIGN_KEY_CHECKS=0;
 
TRUNCATE `sales_order`;
TRUNCATE `sales_order_datetime`;
TRUNCATE `sales_order_decimal`;
TRUNCATE `sales_order_entity`;
TRUNCATE `sales_order_entity_datetime`;
TRUNCATE `sales_order_entity_decimal`;
TRUNCATE `sales_order_entity_int`;
TRUNCATE `sales_order_entity_text`;
TRUNCATE `sales_order_entity_varchar`;
TRUNCATE `sales_order_int`;
TRUNCATE `sales_order_text`;
TRUNCATE `sales_order_varchar`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;
 
ALTER TABLE `sales_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
 
-- reset customers
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `log_customer`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
 
ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
 
-- Reset all ID counters
TRUNCATE `eav_entity_store`;
ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;
 
SET FOREIGN_KEY_CHECKS=1;
 

Voila, maintenant vous avez une page de commandes vierge et un dashboard comme au premier jour!
[via Inchoo]



  1. Armetiz on jeudi 13 août, 2009

    Je vais faire pleins de commentaires ici :p héhé

    Cet ensemble de commandes est intéressant, mais trop restreint en terme d’utilisation.
    Quelqu’un qui a déjà une boutique en production avec des articles et des commandes ne pourra pas s’en servir. En effet, toutes ces commandes seront annulés.

    Le fait de réinitialiser la valeur de l’auto-incrémente montre une envie de supprimer toutes traces de la commande teste… Or, l’intérêt de l’auto-incrémente n’est pas de maintenir un suite complète de nombre jusqu’à la valeur maximum, mais de maintenir une liste d’identifiant unique.

    Il serai plus intéressant de supprimer les valeurs d’une commande, sans toucher à l’auto-incrémente, cela permettra ensuite de le passer en plugin et de rajouter un bouton “Supprimer” à coté de “Annuler” la commande ;)

  2. Erwan on jeudi 13 août, 2009

    C’est toujours avec plaisir les commentaires, au moins je n’ai pas cette impression désagréable d’écrire dans le vide!
    Bien sur que ce n’est pas la solution idéale, mais malheursement la seule que j’ai trouvé! C’est d’ailleurs étrange que Varien n’ai pas integré cette fonctionnalité dans son système!
    En parlant de plugin, je viens de trouver celui la: http://www.magentocommerce.com/extension/873/delete-orders!
    A tester… mais je crois que je vais m’en tenir avec la requete!

  3. David on jeudi 13 août, 2009

    ça marche très bien pour moi !
    Nous sommes en Magento v1.2.1.2

    Merci beaucoup.