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

Jos*_*ano 6 php magento shopping cart magento-rules

我已经发了优惠券[coupon_code = SWIMFREE]如果categoryswimming equipment,hobby并且swimming将折扣50%.

现在我有关于3步结账的问题.这是描述......

  1. 结帐购物车:申请优惠券
  2. 第一步:送货和账单地址
  3. 第二步:选择你的爱好(有另一个sales_flat_quote table, sales_flat_quote_hobby)
  4. 最后一步:结帐 - >概述

我想要的是:当应用优惠券和爱好游泳时,第三步将价格改为每件产品的价格,优惠券仍在那里展示.

如何在Hobby步骤后拦截优惠券?


示例案例一步一步:

在购物车上它已经添加了

  • 游泳衣的正常价格是100美元(游泳设备类别)
  • Kevlar的正常价格是50美元(射击设备类别)
  • 优惠券申请SWIMFREE,总计100美元(由于优惠券条件)

2.关于运输和结算步骤

  • 送货和结算地址 - 下一步

3.关于爱好步骤

  • 检查足球爱好(单选按钮)并确认

4.在概述步骤然后

  • 游泳衣的价格是50美元(游泳设备类别)
  • Kevlar的价格是50美元(射击设备类别)
  • 优惠券申请SWIMFREE,Grand Total现在是150美元(因为业余爱好不是游泳)

我有很多产品,我试图添加新属性,但它与属性无关,因为它在 sales_flat_quote_hobby

我试图改变Sales/Model/Quote/Subtotal.php设置购物车上的所有产品价格,但似乎没用.

Jos*_*ano 6

我自己找到了答案:

这是可能的,以创建一个定制的优惠券条件.

优惠券示例

重写Mage_SalesRule_Model_Rule_Condition_Product

    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);
    }
Run Code Online (Sandbox Code Playgroud)

每个步骤都会调用此函数.然后检查是否返回true,然后将应用优惠券,如果返回false,则不会应用优惠券.

感谢所有参与了的人.我很感激.

  • 请你发表完整的答案.我的意思是如何为后端添加自定义条件? (3认同)