2013-05-21 2 views
0

С помощью простого продукта, который я могу сделать это:Как получить товар для настроенного товара в корзине?

$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$item = $quote->getItemById($params['item']); // $params['item'] contains item id 
$product = $item->getProduct(); 
$stockQty = (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getQty(); 

Однако, если деталь сконфигурированный продукт, он пытается получить запас родительского конфигурируемый продукт, который в большинстве случаев имеет запас нуля.

Как я могу получить количество запаса настроенного продукта, желательно, не зацикливая его дочерние продукты настраиваемого родителя?

ответ

3

Вы можете установить переменную, которая определяет состояние запасов в зависимости от состояния запаса детей конфигурируемых продукта:

$inStock = true; 
$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$cart = Mage::getModel('checkout/cart')->getQuote(); 

$item = $quote->getItemById($params['item']); // $params['item'] contains item id 
$_product = $item->getProduct(); 
$configuredProduct = Mage::getModel('catalog/product_type_configurable')->setProduct($_product); 
$children = $configuredProduct->getUsedProductCollection()->addAttributeToSelect("*")->addFilterByRequiredOptions(); 
foreach($children as $simpleProduct) { 
    foreach ($cart->getAllItems() as $item) { 
     if ($item->getProduct()->getId() != $simpleProduct->getId()) continue; 

     $stockQty = (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($simpleProduct)->getQty(); 
     if ($stockQty <= 0) { 
      $inStock = false; 
      break; 
     } 
    } 

} 
+0

это не будет работать на всех, различные вариации/дети могут иметь различные уровни запасов , это не поможет найти правильный продукт. – Andrew

+0

Просто добавьте дополнительное условие IF внутри цикла for, чтобы проверить соответствие матчей ребенка? – Kenny

+0

Причина, по которой я задавал этот вопрос, состояла в том, что я искал решение, которое не проходило через все дочерние элементы, но каким-то образом получило простой продукт непосредственно из элемента элемента или объекта объекта. –

Смежные вопросы