2016-05-24 16 views

Antwort

0

Sie den Code unten verwenden können, um die Aufträge zu entfernen, für die noch ein einziges Produkt/Artikel nicht mehr existiert: -

<?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

Ich werde es überprüfen und lassen Sie Dank wissen .. .. :) – Chaitanya

Verwandte Themen