3

有人知道如何在 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%
4

1 回答 1

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. 在观察者模型中实现你的逻辑。您可以通过将应用的规则存储在您的对象中并使用下一个规则应用流程来跟踪应用的规则 - 验证组最大值并更改应用的折扣金额。
于 2012-07-19T09:02:02.430 回答