可配置产品未在购物车中更新

时间:2016-01-20 09:51:07

标签: magento

请访问此link

将此可配置产品添加到购物车,转到购物车页面并尝试更新数量,例如超过1。

但是在购物车页面中,如果我们尝试编辑数量,不会更新多个。但是在后端可以获得所需的数量。

Error : Number of quantity not available.

我们安装了一个扩展程序此错误来自扩展程序。如果我们删除扩展名,它将正常工作。但我们需要扩展用于某种目的。这是扩展程序的 observer.php

<?php
Class Webkul_Mpassignproduct_Model_Observer
{
    /*after update cart*/   
    public function cartUpdate($observer) {
        $db = Mage::getSingleton('core/resource')->getConnection('core_read');
        $cart = $observer->getCart()->getQuote()->getAllItems();
        $cart_data =  Mage::getSingleton('checkout/session')->getQuote()->getAllVisibleItems();
        $info = $observer->getInfo();
        foreach($cart_data as $item) {
            $current_qty=$info[$item->getId()]['qty'];
            $productid= $item->getProductId();
            $mpassignproductId=0;
            foreach($item->getOptions() as $option) {
                $temp=unserialize($option['value']);
                if($temp['mpassignproduct_id'])
                    $mpassignproductId=$temp['mpassignproduct_id'];
            }
            if($mpassignproductId) {
                $productdetail=Mage::getModel('mpassignproduct/mpassignproduct')->load($mpassignproductId);
                $price=$productdetail->getPrice();
                $avlqty=$productdetail->getQty();
                $seller=$productdetail->getSellerId();

                $diff=$avlqty-$current_qty;
                if($diff>0) {
                    $item->setCustomPrice($price);
                    $item->setOriginalCustomPrice($price);
                    $item->getProduct()->setIsSuperMode(true);
                } else if($diff<=0) {
                    if($current_qty > $avlqty) {
                        $item->setCustomPrice($price);
                        $item->setOriginalCustomPrice($price);
                        $item->setQty($avlqty);
                        Mage::getSingleton('core/session')->addNotice('Number of quantity not available.');
                    }
                }
            } else {
                $adminAvlQty=Mage::getModel('mpassignproduct/mpassignproduct')->getAssignProDetails($productid);
                if($current_qty >  $adminAvlQty['sellerqty']) {
                    $item->setQty($adminAvlQty['sellerqty']);
                    Mage::getSingleton('core/session')->addNotice('Number of quantity not available.');
                }
            }
        }
    }

    /*after product added to cart*/ 
    public function productCart(Varien_Event_Observer $obs) {
        $cart_data =  Mage::getSingleton('checkout/session')->getQuote()->getAllVisibleItems();

        $item = $obs->getQuoteItem();
        $item = ( $item->getParentItem() ? $item->getParentItem() : $item );
        $db = Mage::getSingleton('core/resource')->getConnection('core_read');
        $productid=$item->getProductId();           
        foreach ($cart_data as $cart) { 
            if($cart->getProductId()==$productid){
                $quantity=$cart->getQty();
            }
        }
        $productid= $item->getProductId();
        $mpassignproductId=0;
        foreach($item->getOptions() as $option) {
            $temp=unserialize($option['value']);
            if($temp['mpassignproduct_id'])
                $mpassignproductId=$temp['mpassignproduct_id'];

        }
        if($mpassignproductId) {
            $productdetail=Mage::getModel('mpassignproduct/mpassignproduct')->load($mpassignproductId);
            $price=$productdetail->getPrice();
            $avlqty=$productdetail->getQty();
            $seller=$productdetail->getSellerId();

            $diff=$avlqty-$quantity;
            if($diff>0) {
                $item->setCustomPrice($price);
                $item->setOriginalCustomPrice($price);
                $item->getProduct()->setIsSuperMode(true);
            } else if($diff<=0) {
                if($quantity > $avlqty) {
                    $item->setCustomPrice($price);
                    $item->setOriginalCustomPrice($price);
                    $item->setQty($avlqty);
                    Mage::getSingleton('core/session')->addNotice('Number of quantity not available.');
                }
            }
        } else {
            $adminAvlQty=Mage::getModel('mpassignproduct/mpassignproduct')->getAssignProDetails($productid);
            if($quantity >  $adminAvlQty['sellerqty']) {
                $item->setQty($adminAvlQty['sellerqty']);
                Mage::getSingleton('core/session')->addNotice('Number of quantity not available.');
            }
        }
    }

    public function productUpdateCart(Varien_Event_Observer $observer) { 
        $item=$observer->getItem();
        $proprice=$item->getProduct()->getPrice();
        $item->setCustomPrice($proprice);
        $item->setOriginalCustomPrice($proprice);
        $item->save();  
    }

    public function afterPlaceOrder1($observer) { 
        $lastOrderId=$observer->getOrder()->getId();
        $order = Mage::getModel('sales/order')->load($lastOrderId);
        $ordered_items = $order->getAllItems();
        foreach ($ordered_items as $item) {
            $options=$item->getProductOptions();
            $productId=$item->getProductId();
            $mpassignproductId=$options['info_buyRequest']['mpassignproduct_id'];
            if($mpassignproductId) {
                $collect=Mage::getModel('marketplace/saleslist')->getCollection()
                    ->addFieldToFilter('mageproid',array('eq'=>$productId))
                    ->addFieldToFilter('mageorderid',array('eq'=>$lastOrderId));
                foreach($collect as $val) {
                    $slqty=$val['magequantity'];
                    $saleslistId=$val['autoid'];
                }
                $mpassignModel=Mage::getModel('mpassignproduct/mpassignproduct')->load($mpassignproductId);

                if($saleslistId) {
                    $saleslistModel=Mage::getModel('marketplace/saleslist')->load($saleslistId);
                    $saleslistModel->setMageproownerid($mpassignModel->getSellerId());
                    $saleslistModel->setMpassignproductId($mpassignproductId);
                    $saleslistModel->save();

                    $asqt=$mpassignModel->getQty();
                    $nasqt = $asqt-$slqty;
                    $mpassignModel->setQty($nasqt);
                    $mpassignModel->save();
                } 
            }
        }
    }
    /*Pending................................on product delete from seller*/
    public function deleteProductCheck($observer) {
        $productid=$observer->getId();
        $collection=Mage::getModel('mpassignproduct/mpassignproduct')
                        ->getCollection()
                        ->addFieldToFilter('product_id',array('eq'=>$productid))
                        ->addFieldToFilter('qty',array('gt'=>0));
        $collection->setOrder("price","ASC");
        if(count($collection)>0) {
            foreach($collection as $assignproduct) {
                $collectionpro=Mage::getModel('marketplace/product')->getCollection()
                        ->addFieldToFilter('mageproductid',array('eq'=>$productid));
                foreach($collectionpro as $row) {
                    $row->setUserid($assignproduct->getSellerId());
                    $row->save();
                    // set qty to product
                    $data=Mage::getModel('mpassignproduct/mpassignproduct')->getAssignProDetails($productid);

                    $_product=Mage::getModel('catalog/product')->load($productid);
                    $_product->setPrice($assignproduct->getPrice());
                    $_product->save();

                    $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productid);
                    $stockItem->setProductId($productid)->setStockId(1);
                    $savedStock = $stockItem->save();
                    $stockItem->load($savedStock->getId())->setQty($data['assignqty'])->save();
                    $stockItem->setData('is_in_stock', 1); 
                    $savedStock = $stockItem->save();
                }
                Mage::getSingleton('customer/session')->setIsAssing($assignproduct->getMpassignproductId());
                $assignproduct->delete();
                break;
            }
        } else {
            Mage::getSingleton('customer/session')->setIsAssing(0);
        }
    }

    //when admin will the delete the product
    public function DeleteProduct($observer) { 
        $collection = Mage::getModel('mpassignproduct/mpassignproduct')->getCollection()
                                ->addFieldToFilter('product_id ',$observer->getProduct()->getId());
        foreach($collection as $data){          
            Mage::getModel('mpassignproduct/mpassignproduct')->load($data['mpassignproduct_id'])->delete();         
        }       
    }
}

1 个答案:

答案 0 :(得分:1)

  

检查产品是否有货。我正在检查Simple产品是否正常工作。仅可配置产品存在问题。我可以看到正在使用一个主题。也许这会导致问题。检查/ var / folders中的日志system.log和exception.log。这可能会有所帮助。

     

用于CART或CHECKOUT的任何扩展也可能导致问题。