【发布时间】:2016-02-03 19:43:56
【问题描述】:
请访问此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();
}
}
}
【问题讨论】:
-
检查产品是否有货。我正在检查 Simple 产品是否正常工作。仅可配置产品存在问题。我可以看到正在使用主题。也许这就是问题所在。检查 /var/ 文件夹中的日志 system.log 和 exception.log。这可能会有所帮助。
-
任何用于 CART 或 CHECKOUT 的扩展也可能会导致问题。
-
当然,我会检查的.....
-
绝对你是对的,这条消息来自分机,但我需要那个分机。所以它是矛盾的,如何解决这个问题?
-
请发表您的评论作为答案,我会接受。因为这是扩展问题
标签: magento