【问题标题】:delete magento order删除magento订单
【发布时间】:2013-03-11 13:45:41
【问题描述】:

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

     <?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";
}
?> 

【问题讨论】:

    标签: magento


    【解决方案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)."'");        
          }
    

    【讨论】:

    • 此代码的放置位置。我只是把它放在我的代码上面。它仍然显示在网格中
    • @muralikalpana 嗨使用这条线 $order_in_grid->getFirstItem()->delete();它将通过magento模型正确地从fird中删除订单
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      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;
      

      【讨论】:

        猜你喜欢
        • 2012-09-16
        • 2013-02-26
        • 2012-10-20
        • 2014-09-23
        • 1970-01-01
        • 2013-12-23
        • 1970-01-01
        • 1970-01-01
        • 2011-04-01
        相关资源
        最近更新 更多