Pregunta

Estoy tratando de obtener cantidad de productos simples en el carrito, pero solo devuelve la cantidad configurable.

¿Cómo puedo obtener el producto Simple Cantty en el carrito?

Estoy usando esto:

$session = Mage::getSingleton('checkout/session');
$cart = Mage::helper('checkout/cart')->getCart()->getQuote();

foreach ($cart->getItemsCollection() as $item) {
        if($item->getProduct()->getData('type_id') == 'simple'){
            $theqty = $this->escapeHtml($item->getQty());
        }
    }

¿Fue útil?

Solución

Aquí, esto debería hacer lo que necesita, no necesita acceder al objeto del producto, y es solo el precio que necesita de la línea de productos configurable en la cotización.

$quote = Mage::helper('checkout/cart')->getCart()->getQuote();
$valor = [];

foreach ($quote->getAllItems() as $item) {
        if ('simple' != $item->getProductType()) continue;
        $valor[]= array (
                'id' => $item->getSku(),
                'quantity' => $item->getQty(),
                'price' => $item->getParentItemId() ? $item->getParentItem()->getPrice() : $item->getPrice()
        );
}

$valor_json = json_encode($valor);

Otros consejos

$session = Mage::getSingleton('checkout/session');
$cart = Mage::helper('checkout/cart')->getCart()->getQuote();
$ids = array();

foreach ($cart->getAllItems() as $item) {
        $sku = $item->getProduct()->getSku();
        $preco = $item->getProduct()->getPrice();
        $theqty = $this->escapeHtml($item->getQty());
        if($item->getProduct()->getData('type_id') == 'configurable'){
            $sku = Mage::getModel('catalog/product')->load($item->getProductId());
            $valor .= '{ id: "'.$sku->getSku().'", price:'.$preco.', quantity: '.$theqty .'},';
            $sku = $item->getProduct()->getSku();
        }elseif($item->getProduct()->getData('type_id') == 'simple'){
            if (!(in_array($sku, $ids))) {
                $valor .= '{ id: "'.$sku.'", price:'.$preco.', quantity: '.$theqty .'},';
            }
        }
        array_push($ids, $sku);
    }

You can get product quantity without looping all items:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$product = Mage::getModel('catalog/product')->load($product_id);
$_item = $quote->getItemByProduct($product);
$qty = $_item->getQty();

use $cart->getAllItems() to get the simple items too.

You can get product quantity without looping all items:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$_item = $quote->getItemByProduct($product);
$qty = $_item->getQty();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top