2012-05-10 8 views
2

イムは、毎晩の終わりに実行されるはずのスクリプトで作業しています。その日にいくつの特定の製品(SKUによって好ましい)が販売されたかを調べ、それらを集計することになっています。このプロセスのもう一つの部分がありますが、今は正しい値をエコーアウトするだけで満足しています。私はこれをどうやってやるべきかと混同しています。ここに私がこれまで持っているものがあります:Magento Sales/OrdersモデルからアイテムSKUを引き出しますか?

require_once('../app/Mage.php'); 
ini_set("error_reporting",E_ALL); 
ini_set("display_errors",true); 
umask(0); 

Mage::app('admin'); 

// Some sort of SKU counter variable 
$sku_counter = 0; 

// Create order collection object 
$collection = Mage::getModel('sales/order')->getCollection(); 

// Apply date filter. This would be 1 day in production but using this range as a test. 
$collection->addFieldToFilter(
'created_at', 
array('from' => '2012-05-01', 'to' => '2012-05-09') 
); 

// Iterate it for displaying results 
foreach ($collection as $order) { 

    // This is where I fall apart. I know I need to either get all items or only get 
    // items with the specific SKU. After that I need to get the quantity sold of that SKU 
    // and add it to my $sku_counter. 

    echo 'There were " . $sku_counter . "sales of SKU XX-XXXX yesterday."; 

} 

何か助けていただきありがとうございます!

答えて

2

これを試してみてください:

require_once('../app/Mage.php'); 
ini_set("error_reporting",E_ALL); 
ini_set("display_errors",true); 
umask(0); 

Mage::app('admin'); 

// Some sort of SKU counter variable 
$sku_counter = array(); 

// Create order collection object 
$collection = Mage::getModel('sales/order')->getCollection(); 

// Apply date filter. This would be 1 day in production but using this range as a test. 
$collection->addFieldToFilter(
'created_at', 
array('from' => '2012-05-01', 'to' => '2012-05-09') 
); 

// Iterate it for displaying results 
foreach ($collection as $order) { 
    foreach ($order->getAllItems() as $item) { 
     if (!isset($sku_counter[$item->getSku()])) { 
      $sku_counter[$item->getSku()] = 0; 
     } 
     $sku_counter[$item->getSku()] += (float) $item->getQtyOrdered(); 
    } 
} 
+0

感謝を。それはショットを与え、報告を返すだろう! – jkphl

関連する問題