首页 文章

Magento:购物车中的产品价格不同

提问于
浏览
1

我已通过programmaticaly允许客户编辑产品的价格 .

问题是当我添加400美元的产品并再次添加500美元的相同产品时,在购物车页面中显示产品 - | qty = 2 - |总价= 1000美元

所以这不是逻辑,总价格必须是900美元,它不应该将数量设置为2

我知道问题出在SKU是否有解决方案我不想修改SKU?

给我的问题是:

enter image description here

它应该是这样的:

enter image description here

这是为定制价格工作:

/**

 * @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);
        }


    }

我做了很多搜索,但没有结果

如何与观察者一起做这个?

1 回答

  • 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;
    }
    

相关问题