Magento - Получите артикулы продукта и количество по заказу

Я создал наблюдатель событий для события «sales_order_place_after», которое срабатывает, когда пользователь размещает заказ в кассе Magento. Это событие запускает моего наблюдателя, которому необходимо получить следующую информацию, которая затем отправляется во внешнюю систему управления запасами.

Необходимая информация: Артикул и количество каждого продукта в заказе

Я включил часть моей модели наблюдателя ниже. Я получаю доступ к объекту заказа. Я могу получить все товары в заказе, но как мне получить артикул для каждого продукта, составляющего заказ? Например, с простым продуктом это сделать очень просто. Однако в случае связанного или настраиваемого продукта я не знаю, как получить доступ к дочерним элементам, составляющим этот связанный продукт, с указанием их артикулов и количества. Это информация, которая мне нужна как для связанных, так и для настраиваемых продуктов. Мне нужен артикул и количество выбранных детей. Да хоть убей, я не могу понять, какой метод вызвать для доступа к этой информации. Хотелось бы, чтобы было что-то вроде: $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;
            }
        }
    }

person Zelf    schedule 07.01.2013    source источник


Ответы (2)


Вам не хватает перерыва после настраиваемого случая. Вариант по умолчанию выполняется для настраиваемых продуктов.

person kirkmadera    schedule 01.10.2013

Попробуй это:

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

foreach ($items as $item){

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

}
person boruch    schedule 07.01.2013