我订了优惠券[coupon_code = SWIMFREE]
如果category
为swimming equipment
且hobby
为swimming
,则折扣率为50%。
现在我有关于3步结账的问题。这是描述......
sales_flat_quote table
,
sales_flat_quote_hobby
)我想要的是:当应用优惠券和爱好游泳时,第三步将价格改为每件产品的价格,优惠券仍在那里展示。
如何在Hobby步骤后截取优惠券?
一步一步的案例
1。在购物车上已添加
2。关于运输和结算步骤
第3。关于爱好步骤
4。在概述步骤
我有很多产品,我尝试添加新属性,但它与属性无关,因为它位于sales_flat_quote_hobby
我试图更改Sales/Model/Quote/Subtotal.php
以设置购物车上的所有商品价格,但它似乎毫无用处。
答案 0 :(得分: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);
}
每次加载都会调用此函数。然后检查是否返回true,然后将应用优惠券,如果返回false则不会应用优惠券。
感谢所有参与者。我很感激。
答案 1 :(得分:2)
您应该实现自定义收集器以收集总计。它可以基于Mage_SalesRule_Model_Quote_Discount
如何创建自定义收藏家:请参阅stackoverflow answer,或者您可以查看this article。
答案 2 :(得分:2)
是的,那是我的想法。
您实施新的销售条件,可获得50%的折扣。
每个产品都会调用销售规则。然后你需要检查,属性是游泳和业余爱好设置。如果是这种情况,您可以从%-salesrule
复制其余部分您可以在Mage_SalesRule_Model_Validator::process()
可以在此处找到自我实现条件的示例:https://github.com/magento-hackathon/DiscountForATweet/blob/master/app/code/community/Hackathon/DiscountForATweet/Model/Condition/Tweet.php