我已通过programmaticaly允许客户编辑产品的价格。
问题是当我添加400美元的产品并再次添加500美元的相同产品时,在购物车页面中显示产品 - | qty = 2 - |总价= 1000美元所以这不是逻辑,总价格必须是900美元,而且不应该将数量设置为2
我知道问题出在SKU是否有解决方案我不想修改SKU?
对我来说问题是:
它应该是这样的:
这适用于自定义价格:
/**
* @param Varien_Event_Observer $observer
*/
public function applyCustomPrice(Varien_Event_Observer $observer) {
/* @var $item Mage_Sales_Model_Quote_Item */
$item = $observer->getQuoteItem();
if ($item->getParentItem()) {
$item = $item->getParentItem();
}
Mage::app()->getRequest()->getPost();
$customPrice = Mage::app()->getRequest()->getParam('custom_price');
$defaultCp = $item->getProduct()->getData('min_price');
$product = $observer->getEvent()->getProduct();
//$product_id = Mage::registry('current_product')->getId();
$product->addCustomOption('testpricez', '1078');
if($customPrice >= $defaultCp){
$item->setCustomPrice($customPrice);
$item->setOriginalCustomPrice($customPrice);
$item->getProduct()->setIsSuperMode(true);
}
}
我做了很多搜索,但没有结果
如何与观察者一起做这件事?
答案 0 :(得分:0)
所以,你想要退回" sales_quote_save_before"
在config.xml中:
<sales_quote_save_before>
<observers>
<pricebuilder>
<type>singleton</type>
<class>pricebuilder/observer</class>
<method>updateQuoteItems</method>
</pricebuilder>
</observers>
</sales_quote_save_before>
在observer.php里面:
/**
* @param Varien_Event_Observer $observer
*/
public function updateQuoteItems($observer)
{
/** @var $quote Mage_Sales_Model_Quote */
$quote = $observer->getQuote();
/** @var $quoteItem Mage_Sales_Model_Quote_Item */
foreach ($quote->getAllItems() as $quoteItem) {
$this->processQuoteItem($quoteItem);
}
}
/**
* This is an example that sets all quote items to 123.55.
* you would of course implement your logic here for the given quote item.
*
* @param $quoteItem Mage_Sales_Model_Quote_Item
*
* @return $this
*/
private function processQuoteItem($quoteItem)
{
$finalPrice = 123.55;
$quoteItem->setCustomPrice($finalPrice);
$quoteItem->setOriginalCustomPrice($finalPrice);
$quoteItem->getProduct()->setIsSuperMode(true);
return $this;
}