2013-01-07 110 views
0

我在“sales_order_place_after”事件中创建了一个事件观察者,当用户在Magento的结帐中下订单时触发事件观察者。该事件触发了我的观察员,他需要获得以下信息,然后将其发送到外部库存管理系统。Magento - 在订单中获取产品Sku和数量

需要

信息:订单

  1. 的SKU,每个产品的数量我已经包含下面我观察模型的一部分。我正在访问订单对象。我可以得到订单中的所有物品,但是如何获得构成订单的每件产品的SKU。例如,使用简单的产品很容易。 但是,对于捆绑或可配置的产品,我不知道如何通过sku和数量访问组成该捆绑产品的儿童。这是我需要捆绑和可配置产品的信息。我需要选择的sku和数量的孩子。对于我的生活,我无法弄清楚用什么方法来访问这些信息。我希望有这样的:$ item-> getBundleChildrenSkuQuantity();

    $order = $observer->getEvent()->getOrder(); 
        $joomecomPacket = array(); 
    
        if ($order->getTotalItemCount() > 0) { 
         $items = $order->getAllItems(); 
    
         foreach ($items as $item) { 
          $productType = $item->getProductType(); 
    
          switch ($productType) { 
           case 'bundle': 
    
           break; 
           case 'configurable': 
    
           default: // simple products 
            if (isset($joomecomPacket[$item['sku']])) { 
             $joomecomPacket[$item['sku']] += $item['qty_ordered']; 
            } else { 
             $joomecomPacket[$item['sku']] = $item['qty_ordered']; 
            } 
           break; 
          } 
         } 
        } 
    

回答

0

试试这个:

$items = $order->getAllVisibleItems(); // gives only parent items 

foreach ($items as $item){ 

$childItem = $item->getChildren(); //do something with $cildItem like $childItem->getSku() etc... 

} 
1

你错过了你的配置情况后休息。默认情况下正在执行可配置产品。

相关问题