2016-05-24 4 views
0

Magentoストアデータベースから失効したデータを削除します。
現在、システムから削除された製品を含む注文が含まれています。
このような注文のデータを取得する方法と必要な場合、その注文をどのように削除することができますか?
Magento削除された商品を含む注文のリストを取得

答えて

0

あなたも、単一の製品/アイテムがこれ以上存在するの注文を削除するには、以下のコードを使用することができます: -

<?php 

ini_set('display_errors', 1); 
require_once 'app/Mage.php'; 
Mage::app(); 
Mage::register('isSecureArea', true); 

$orders = Mage::getModel('sales/order')->getCollection(); 


foreach ($orders as $order) { 
    $item_ids = $order->getAllItems(); 

    foreach ($item_ids as $item) { 
     $product = Mage::getModel('catalog/product')->load($item->getProductId()); 

     $product_id = $product->getData('entity_id'); 

     if (!$product_id) { 
      $order->delete(); 
      remove($order->getId()); 
     } 
    } 
} 

function remove($order_id) { 
    $resource = Mage::getSingleton('core/resource'); 
    $delete = $resource->getConnection('core_read'); 
    $order_table = $resource->getTableName('sales_flat_order_grid'); 
    $invoice_table = $resource->getTableName('sales_flat_invoice_grid'); 
    $shipment_table = $resource->getTableName('sales_flat_shipment_grid'); 
    $creditmemo_table = $resource->getTableName('sales_flat_creditmemo_grid'); 
    $sql = "DELETE FROM " . $order_table . " WHERE entity_id = " . $order_id . ";"; 
    $delete->query($sql); 
    $sql = "DELETE FROM " . $invoice_table . " WHERE order_id = " . $order_id . ";"; 
    $delete->query($sql); 
    $sql = "DELETE FROM " . $shipment_table . " WHERE order_id = " . $order_id . ";"; 
    $delete->query($sql); 
    $sql = "DELETE FROM " . $creditmemo_table . " WHERE order_id = " . $order_id . ";"; 
    $delete->query($sql); 

    return true; 
} 
+0

私はそれをチェックして、あなたが知っているだろう...おかげ.. :) – Chaitanya

関連する問題