magento 具有自定义条件的购物车规则?

crcmnpdw  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(135)

我已经做了一张优惠券[coupon_code = SWIMFREE]如果categoryswimming equipmenthobbyswimming,将打五折。
现在我遇到了关于3步结账的问题。
1.结账购物车:应用于优惠券
1.第一步:送货和账单地址
1.第二步:选择您的爱好(有另一个sales_flat_quote tablesales_flat_quote_hobby
1.最后一步:结账-〉概览
"我想要的是“当优惠券被申请并且爱好是游泳时,第三步骤改变价格以给每个产品定价,并且优惠券仍然被显示在那里。

如何在爱好步骤后拦截优惠券?
逐步示例案例:
1.已在购物车上添加

  • 游泳衣的正常价格是100$(游泳装备类)
  • 凯夫拉纤维的正常价格是50美元(射击器材类)
  • 优惠券已应用SWIMFREE,总计为100$(因为优惠券条件)
    2.在发运和开单步骤
  • 送货和账单地址-下一个
    3.在爱好步骤上
  • 选中(单选按钮)并确认足球爱好
    4.在概览步骤中,然后
  • 游泳衣的价格是50$(游泳装备类)
  • 凯夫拉纤维的价格是50美元(射击器材类)
  • 应用了SWIMFREE,总计现在是150$(因为爱好不是游泳)

我有很多产品,我尝试过添加新属性,但它与属性无关,因为它在sales_flat_quote_hobby
我试过改变Sales/Model/Quote/Subtotal.php来设置购物车上的所有产品价格,但似乎没用。

qxgroojn

qxgroojn1#

已经自己找到了答案:

    • 可以****创建自定义优惠券条件**。

重写 Mage 销售规则模型规则条件产品

public function validate(Varien_Object $object){
        if ($this->getAttribute() == 'quote_item_with_hobby') {

            $quote = Mage::getSingleton('checkout/cart')->getQuote();
            $hobby= $quote->getHobbyByItemId($object->getId());

            if ($hobby){
                if ($this->getOperator() == '=='){
                    if (strtolower($this->getValue()) == $hobby->getHobby()) return true;
                    else return false;
                }
                else if ($this->getOperator() == '!='){
                    if (strtolower($this->getValue()) == $hobby->getHobby()) return false;
                    else return true;
                }

            }
            return true;
        }

        return parent::validate($object);
    }

此函数将在每个加载的步骤中调用。然后检查如果返回true,则将应用优惠券,如果返回false,则将不应用优惠券。
"感谢所有参与者,我很感激"

svdrlsy4

svdrlsy42#

您应该实作自订收集器来收集总计。它可以Mage_SalesRule_Model_Quote_Discount为基础。
如何创建自定义收集器:请参阅stackoverflow answer,或者您也可以选中this article

bhmjp9jg

bhmjp9jg3#

是的,这是我的主意。
您实施了一个新的销售规则条件,该条件提供50%折扣。
每个产品都调用salesrule。然后,您需要检查属性是否为swimming,是否设置了hobby。如果是,您可以从%-salesrule中复制其余的属性。
您可以在Mage_SalesRule_Model_Validator::process()中找到代码进行查看
自实现条件的示例可在此处找到:https://github.com/magento-hackathon/DiscountForATweet/blob/master/app/code/community/Hackathon/DiscountForATweet/Model/Condition/Tweet.php

相关问题