Magento - 订购时获取产品Sku和数量

时间:2013-01-07 21:49:45

标签: magento magento-1.7

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

所需信息:

  1. 订单上每件商品的尺寸和数量
  2. 我在下面列出了部分观察员模型。我正在访问订单对象。我可以获得订单中的所有商品,但是如何获得构成订单的每个产品的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;
                }
            }
        }
    

2 个答案:

答案 0 :(得分:1)

在您的可配置案例之后,您错过了休息时间。默认情况是针对可配置产品执行。

答案 1 :(得分:0)

试试这个:

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

foreach ($items as $item){

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

}