0

在这里,我正在使用下面的代码删除订单,但它仍然显示在订单网格中。当我点击这个订单时,它显示“这个订单不再存在”。但我不需要在运行以下代码后显示订单。

     <?php
$mageFilename = 'app/Mage.php';

require_once $mageFilename;

Varien_Profiler::enable();

Mage::setIsDeveloperMode(true);

ini_set('display_errors', 1);

umask(0);
Mage::app('default');
Mage::register('isSecureArea', 1);
//until here you gained access to the Magento models. The rest is custom code

$orders_object = Mage::getModel('sales/order')->getCollection()->addAttributeToFilter('increment_id', 100000025);

$orders_arr = $orders_object->getData();
if(!empty($orders_arr)){
$orders_data = $orders_arr[0];
$orderId = $orders_data['entity_id'];//put here the id of the order you want to delete. THE ONE FROM THE DATABASE NOT THE INCREMENT_ID

$order = Mage::getModel('sales/order')->load($orderId);

$invoices = $order->getInvoiceCollection();
foreach ($invoices as $invoice){
$invoice->delete();
}
$creditnotes = $order->getCreditmemosCollection();
foreach ($creditnotes as $creditnote){
$creditnote->delete();
}
$shipments = $order->getShipmentsCollection();
foreach ($shipments as $shipment){
$shipment->delete();
}
$order->delete();
echo "deleted";
}else{
echo "no record";
}
?> 
4

3 回答 3

1

网格中的嗨订单来自不同的表“sales_flat_order_grid”,它与 sales_flat_order 没有关系(我的意思是没有 ON DELETE CASCADE)。所以你需要使用下面给出的代码删除它:

更新 1.1

      $order_increment_id = $order->getIncrementId();
      if($order_increment_id){
           $order_in_grid = Mage::getResourceModel('sales/order_grid_collection')->addFieldToFilter('increment_id',$order_increment_id);
           $order_in_grid->getFirstItem()->delete();  
      }

只需将上面的代码放在代码$order->delete();中的这一行之后

更新 1.2。

改用 RAW SQL QUERIES,因为我们无法使用模型从网格中删除订单

     $db = Mage::getSingleton('core/resource')->getConnection('core_write');    
     $sales_flat_order_grid= Mage::getSingleton('core/resource')->getTableName('sales_flat_order_grid');
     $order_increment_id = $order->getIncrementId();
      if($order_increment_id){ 
           $db->query("DELETE FROM ".$sales_flat_order_grid." WHERE increment_id='".mysql_escape_string($order_increment_id)."'");        
      }
于 2013-03-11T14:09:52.963 回答
0

最简单的是,您可以获得一个可以为您完成所有工作的扩展程序。

来源:http ://www.vjtemplates.com/magento-extensions/94-delete-order

于 2013-10-06T15:47:33.293 回答
0
SET FOREIGN_KEY_CHECKS=0;

    ##############################
    # SALES RELATED TABLES
    ##############################
    TRUNCATE `sales_flat_creditmemo`;
    TRUNCATE `sales_flat_creditmemo_comment`;
    TRUNCATE `sales_flat_creditmemo_grid`;
    TRUNCATE `sales_flat_creditmemo_item`;
    TRUNCATE `sales_flat_invoice`;
    TRUNCATE `sales_flat_invoice_comment`;
    TRUNCATE `sales_flat_invoice_grid`;
    TRUNCATE `sales_flat_invoice_item`;
    TRUNCATE `sales_flat_order`;
    TRUNCATE `sales_flat_order_address`;
    TRUNCATE `sales_flat_order_grid`;
    TRUNCATE `sales_flat_order_item`;
    TRUNCATE `sales_flat_order_payment`;
    TRUNCATE `sales_flat_order_status_history`;
    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_quote_payment`;
    TRUNCATE `sales_flat_quote_shipping_rate`;
    TRUNCATE `sales_flat_shipment`;
    TRUNCATE `sales_flat_shipment_comment`;
    TRUNCATE `sales_flat_shipment_grid`;
    TRUNCATE `sales_flat_shipment_item`;
    TRUNCATE `sales_flat_shipment_track`;
    TRUNCATE `sales_invoiced_aggregated`;            # ??
    TRUNCATE `sales_invoiced_aggregated_order`;        # ??
    TRUNCATE `log_quote`;

    ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_order_status_history` 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_quote_payment` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
    ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
    ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;
    ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
    ALTER TABLE `log_quote` AUTO_INCREMENT=1;

    #########################################
    # DOWNLOADABLE PURCHASED
    #########################################
    TRUNCATE `downloadable_link_purchased`;
    TRUNCATE `downloadable_link_purchased_item`;

    ALTER TABLE `downloadable_link_purchased` AUTO_INCREMENT=1;
    ALTER TABLE `downloadable_link_purchased_item` AUTO_INCREMENT=1;

    #########################################
    # RESET ID COUNTERS
    #########################################
    TRUNCATE `eav_entity_store`;
    ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;


    ##############################
    # CUSTOMER RELATED TABLES
    ##############################
    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 `tag`;
    TRUNCATE `tag_relation`;
    TRUNCATE `tag_summary`;
    TRUNCATE `tag_properties`;            ## CHECK ME
    TRUNCATE `wishlist`;
    TRUNCATE `log_customer`;

    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 `tag` AUTO_INCREMENT=1;
    ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
    ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
    ALTER TABLE `tag_properties` AUTO_INCREMENT=1;
    ALTER TABLE `wishlist` AUTO_INCREMENT=1;
    ALTER TABLE `log_customer` AUTO_INCREMENT=1;


    ##############################
    # ADDITIONAL LOGS
    ##############################
    TRUNCATE `log_url`;
    TRUNCATE `log_url_info`;
    TRUNCATE `log_visitor`;
    TRUNCATE `log_visitor_info`;
    TRUNCATE `report_event`;
    TRUNCATE `report_viewed_product_index`;
    TRUNCATE `sendfriend_log`;
    ### ??? TRUNCATE `log_summary`

    ALTER TABLE `log_url` AUTO_INCREMENT=1;
    ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
    ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
    ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
    ALTER TABLE `report_event` AUTO_INCREMENT=1;
    ALTER TABLE `report_viewed_product_index` AUTO_INCREMENT=1;
    ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
    ### ??? ALTER TABLE `log_summary` AUTO_INCREMENT=1;

    SET FOREIGN_KEY_CHECKS=1;
于 2015-11-04T08:00:10.520 回答