Magento - 如何将促销操作调用到报价对象

时间:2013-08-14 19:38:02

标签: php magento

我希望能够创建自己的自定义促销操作。关于这个问题的文献很少。

我通过查看app/code/mage/SalesRule/

来拼凑其中一些

但是我认为在这个模块的观察者中会有一个在购物车上调用的方法来重新计算总数。我看到的方法是addProductAttributes

当我对此进行var转储时,我原本预计会在混合中的某处看到价格,但实际情况并非如此。

销售规则如何影响总成本?有人可以指出我正确的方向。

- 更新:app/code/core/Mage/SalesRule/Model/Validator.php似乎是一个关键组件(请参阅public function process(Mage_Sales_Model_Quote_Item_Abstract $item

1 个答案:

答案 0 :(得分:3)

它从Discount收集器Mage_SalesRule_Model_Quote_Discount开始,它创建一个Mage_SalesRule_Model_Validator的实例并循环引用以发送$item(或子项,如果它是可配置的)处理方法(第99行)

$this->_calculator->process($child);  

在那里它循环通过规则

foreach ($this->_getRules() as $rule)  

然后你有两个验证:

if (!$this->_canProcessRule($rule, $address)) {
    continue;
}

if (!$rule->getActions()->validate($item)) {
   continue;
}  

第一个检查条件,第二个检索条件动作模型,然后发送动作进行验证。

然后,取决于

$rule->getSimpleAction()  

决定如何处理该项目。