我有一个观察者,当数量不止一个时我会添加一个新的报价项目。下面是我用来创建这个引用项的代码:
$quote_item = Mage::getModel('sales/quote_item');
$_product = Mage::getModel('catalog/product')->load($oldQuoteItem->getProduct()->getId());
$quote_item->setProduct($_product);
$quote_item->setQuote($quote);
$quote_item->setOriginalCustomPrice($oldQuoteItem->getProduct()->getPrice());
$quote_item->save();
对于简单的产品来说它很好用,但是当我用可配置的产品复制报价项时,它只会采用父产品,而不是属于它的简单产品,因此我得到了一个产品没有库存的错误。
有任何想法,如何将精确产品复制到新报价项目?
答案 0 :(得分:2)
我对所有产品类型都取得了以下成功。
$quote = Mage::getSingleton('checkout/session')->getQuote();
$oldQuoteItem = $quote->getItemById(ITEM_ID);
$product = Mage::getModel('catalog/product')
->setStoreId(Mage::app()->getStore()->getId())
->load($oldQuoteItem->getProductId());
$cart = Mage::getSingleton('checkout/cart');
$cart->addProduct($product, $oldQuoteItem->getBuyRequest());
$cart->save();
您应该可以修改商品价格。
请记住,如果您想为多个产品执行此操作,则必须在每个$ cart-> addProduct()
之后的最后一次保存购物车