如何在Magento中分组折扣?

时间:2012-07-19 08:06:24

标签: magento max discount

任何人都知道如何将Magento的折扣分组?如何设置每组的最大总折扣?以及如何设置最大总折扣? 例如:

Discount Group 1:
a. Early Bird Discount = 10%
b. Member of ABC Organization = 8%
c. Member of BCD Organization = 5%
-----Total Maximum discount for this discount group = 15%

Discount Group 2:
a. Buy more than 5 items = 10%
b. Member of DFG Organization = 5%
c. Member of ASD Organization = 5%
-----Total Maximum discount for this discount group = 15%

-----Total Maximum discount for ALL discount group = 25%

1 个答案:

答案 0 :(得分:6)

不可否认,通过Magento的标准功能无法实现您所需的完全相同的功能。但您可以使用折扣组创建自定义,并通过观察事件salesrule_validator_process来验证折扣金额。

一步一步的发展建议:

  1. 使用2个包含此类字段的自定义表创建新模型:
    • 组表:
      • group_id - 主键
      • name - 组名
      • max_discount - 最大折扣金额
      • is_percent - 类型(固定或百分比)
    • 分组到规则表
      • group_id - primary_key
      • rule_id - 销售/规则表主键的外键 2.为它实现管理界面
  2. 为所有组创建最大折扣的配置字段。
  3. 为您收到带有数据的此类事件的事件salesrule_validator_process创建观察者:
    • $observer->getEvent()->getRule() - 当前申请规则的模型
    • $observer->getEvent()->getItem() - 应用此规则的当前报价项
    • $observer->getEvent()->getAddress() - 应用此规则的当前引用地址
    • $observer->getEvent()->getQuote() - 客户的当前报价
    • $observer->getEvent()->getQty() - 用于计算折扣的项目的数量:固定项目折扣,项目价格百分比,项目价格百分比
    • $observer->getEvent()->getResult() - Varien_Object包含作为折扣应用的数据,现在有两个属性。
      • getDiscountAmount() - 当前显示货币的折扣金额
      • getBaseDiscountAmount() - 基本网站货币的折扣金额
  4. 在观察者模型中实现逻辑。您可以通过将应用规则存储在对象中并使用下一个规则应用流程来跟踪应用规则 - 验证组最大值并更改应用的折扣金额。