How to programmatically delete order in Magento
If you try to delete orders in the backend, you will find out that you can only set the status to “cancelled” and the order is still there. Unfortunately, Magento doesn’t enable us to delete those via administration, so you will not see any “Delete order” button. This can be quite frustrating both to developers and the merchants.
In this article we will go through how to delete a single order and all orders
How To Delete A Single Order Using PhpMyAdmin
You need to run the following query on your database using PhpMyAdmin:
set @increment_id='10000011'; select @order_id:=entity_id from prefix_sales_order_entity where increment_id=@increment_id; delete from prefix_sales_order_entity where entity_id=@order_id or parent_id=@order_id; delete from prefix_sales_order where increment_id=@increment_id;
In the above example we are trying to delete test order # ’10000011′. Generally people use prefix so change the “prefix_” in the above query with the prefix you have chosen for your Magento store.
The above query will delete the single test order or even an actual order from your Magento store. All you have to do is provide an order number and database prefix. Rest will be taken care of automatically.
Delete All Magento Orders at once
This step is done only on new store which are ready for production and don’t have any “Actual Orders” in the system. I would highly recommend taking a full backup before you proceed. Basically when you run the following queries on your Magento database it will complete wipe out all the records and reset the order counters.
Method 1: Create php script in Magento root folder, copy this code into script and run script.
/** * @author Dejan Radic <dejan.radic@inchoo.net> */ if (version_compare(phpversion(), '5.2.0', '<')===true) { echo '<div style="font:12px/1.35em arial, helvetica, sans-serif;"><div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;"><h3 style="margin:0; font-size:1.7em; font-weight:normal; text-transform:none; text-align:left; color:#2f2f2f;">Whoops, it looks like you have an invalid PHP version.</h3></div><p>Magento supports PHP 5.2.0 or newer. <a href="http://www.magentocommerce.com/install" target="">Find out</a> how to install</a> Magento using PHP-CGI as a work-around.</p></div>'; exit; } error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1); $mageFilename = 'app/Mage.php'; if (!file_exists($mageFilename)) { echo $mageFilename." was not found"; exit; } require_once $mageFilename; Mage::app(); $executionPath = null; /* * determine Magento Edition */ if (file_exists('LICENSE_EE.txt')) { $edition = 'EE'; }elseif (file_exists('LICENSE_PRO.html')) { $edition = 'PE'; } else { $edition = 'CE'; } if(($edition=='EE' && version_compare(Mage::getVersion(), '1.11.0.0.', '<')===true) || ($edition=='PE' && version_compare(Mage::getVersion(), '1.11.0.0.', '<')===true) || ($edition=='CE' && version_compare(Mage::getVersion(), '1.6.0.0.', '<')===true) ){ $executionPath = 'old'; } else { $executionPath = 'new'; } $xpathEntity = 'global/models/sales_entity/entities//table'; if ($executionPath == 'old') { $xpathResource = 'global/models/sales_mysql4/entities//table'; } else { $xpathResource = 'global/models/sales_resource/entities//table'; } $salesEntitiesConf = array_merge( Mage::getSingleton('core/config')->init()->getXpath($xpathEntity), Mage::getSingleton('core/config')->init()->getXpath($xpathResource) ); $resource = Mage::getSingleton('core/resource'); $connection = $resource->getConnection('core_write'); /* * If you want delete System/Order Statuses (Status and State) you * should comments below lines (46-51) */ $skipTables = array ( $resource->getTableName('sales_order_status'), $resource->getTableName('sales_order_status_state'), $resource->getTableName('sales_order_status_label') ); $salesEntitiesConf = array_diff($salesEntitiesConf, $skipTables); /* Multiple RDBMS Support in Magento CE 1.6+ / EE 1.11+ http://www.magentocommerce.com/images/uploads/RDBMS_Guide2.pdf 2.2. Adapters: ... The new Varien_DB_Adapter_Interface was added to sign a contract that all developed adapters must execute in order to get Magento working on an actual database. The interface describes the list of methods and constants that can be used by resource models... Used below in the loop: * If $executionPath == 'old' * Varien_Db_Adapter_Pdo_Mysql::showTableStatus() * Varien_Db_Adapter_Pdo_Mysql::truncate() * Else * Varien_Db_Adapter_Interface::isTableExists() * Varien_Db_Adapter_Interface::truncateTable() */ while ($table = current($salesEntitiesConf) ){ $table = $resource->getTableName($table); if ($executionPath == 'old') { $isTableExists = $connection->showTableStatus($table); } else { $isTableExists = $connection->isTableExists($table); } if ($isTableExists) { try { if ($executionPath == 'old') { $connection->truncate($table); } else { $connection->truncateTable($table); } printf('Successfully truncated the <i style="color:green;">%s</i> table.<br />', $table); } catch(Exception $e) { printf('Error <i style="color:red;">%s</i> occurred truncating the <i style="color:red;">%s</i> table.<br />', $e->getMessage(), $table); } } next($salesEntitiesConf); } exit('All done...');
Method 2: Go to your PhpMyAdmin and run SQL Query
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; -- lets 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; -- Now, lets Reset all ID counters TRUNCATE `eav_entity_store`; ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1; SET FOREIGN_KEY_CHECKS=1;
Now, all the orders, customer orders, logs etc are all gone from your Magento store and it will be in a clean state to start over.
Feel free for drop a comment if you have any query related to this…..:)