Magento:将相同的产品添加到购物车中,价格不同

时间:2014-04-08 15:07:55

标签: magento

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

问题是当我添加20美元的产品并在购物车页面中再次添加30美元的相同产品时,它会显示产品-| qty=2 -| total price=60$

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

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

了解更多详情this是我之前的问题

3 个答案:

答案 0 :(得分:2)

所以这是可行的,但不幸的是,如果没有非常重要的重写,就没有办法做到这一点。我假设您有一些方法来识别除价格之外的两个报价项目之间的差异。如果是这样的话:

sales / quote_item:representProduct()

模块中的重写配置:

<?xml version="1.0"?>
<config>
    <global>
        <models>
            <sales>
                <rewrite>
                    <!--Your full class name should be specified-->
                    <quote_item>Namespace_Module_Model_Sales_Quote_Item</quote_item>
                </rewrite>
            </sales>
        </models>
    </global>
</config>

原始功能:     公共功能代表产品($ product)     {         $ itemProduct = $ this-&gt; getProduct();         if(!$ product || $ itemProduct-&gt; getId()!= $ product-&gt; getId()){             返回false;         }

    /**
     * Check maybe product is planned to be a child of some quote item - in this case we limit search
     * only within same parent item
     */
    $stickWithinParent = $product->getStickWithinParent();
    if ($stickWithinParent) {
        if ($this->getParentItem() !== $stickWithinParent) {
            return false;
        }
    }

    // Check options
    $itemOptions = $this->getOptionsByCode();
    $productOptions = $product->getCustomOptions();

    if (!$this->compareOptions($itemOptions, $productOptions)) {
        return false;
    }
    if (!$this->compareOptions($productOptions, $itemOptions)) {
        return false;
    }
    return true;
}

我们的职能:

public function representProduct($product) {
    $parentResult = parent::representProduct($product);

    //if parent result is already false, we already have a different product, exit.
    if ($parentResult === false) {
        return $parentResult;
    }

    $itemProduct = $this->getProduct();

    /*
     * do our check for 'same product' here.
     * Returns true if attribute is the same thus it is hte same product
     */
    if ($product->getSomeAttribute() == $itemProduct->getSomeAttribute()) {
        return true; //same product
    } else {
        return false; //different product
    }
}

如果此功能返回true,则产品将作为同一项目合并到购物车中,因此您只需按新的数量增加数量。

如果此功能返回false,则产品看起来会有所不同,并会在购物车中显示为不同的商品。

答案 1 :(得分:0)

使用不同的&#34; SKU&#34;添加相同的产品你可以为这些产品提供不同的价格。

答案 2 :(得分:0)

这是班级:

<?php
class WebDirect_CustomPrice_Model_Sales_Quote_Item extends Mage_Sales_Model_Quote_Item
{
    public function representProduct($product) {
        $parentResult = parent::representProduct($product);

        //if parent result is already false, we already have a different product, exit.
        if ($parentResult === false) {
            return $parentResult;
        }

        $itemProduct = $this->getProduct();

        /*
         * do our check for 'same product' here.
        * Returns true if attribute is the same thus it is hte same product
        */
        if ($product->getPrice() == $itemProduct->getPrice()) {
            return true; //same product
        } else {
            return false; //different product
        }
    }




}