我遇到了无法解决的问题。部分是因为我无法用正确的术语来解释它。我是新手,对这个笨拙的问题感到抱歉。
您可以在下面看到我的目标概述。
我正在使用Magento CE 1.8.1.0
如何覆盖购物车价格规则。
在核心文件app / code / core / Mage / SalesRule / Model / Validator.php中,他们编写了这个文件的默认代码。第331到349行是在这里。
$step = $rule->getDiscountStep();
if ($step) {
$qty = floor($qty/$step)*$step;
}
$_rulePct = $rulePercent/100;
$discountAmount = ($qty * $itemPrice - $item->getDiscountAmount()) * $_rulePct;
$baseDiscountAmount = ($qty * $baseItemPrice - $item->getBaseDiscountAmount()) * $_rulePct;
//get discount for original price
$originalDiscountAmount = ($qty * $itemOriginalPrice - $item->getDiscountAmount()) * $_rulePct;
$baseOriginalDiscountAmount = ($qty * $baseItemOriginalPrice - $item->getDiscountAmount()) * $_rulePct;
if (!$rule->getDiscountQty() || $rule->getDiscountQty()>$qty) {
$discountPercent = min(100, $item->getDiscountPercent()+$rulePercent);
$item->setDiscountPercent($discountPercent);
}
此代码我想像这样编辑
$step = $rule->getDiscountStep();
if ($step) {
$qty = floor($qty/$step)*$step;
}
$_rulePct = $rulePercent/100;
$discountAmount = ($qty * $itemPrice - $item->getDiscountAmount()) * $_rulePct;
$baseDiscountAmount = ($qty * $baseItemPrice - $item->getBaseDiscountAmount()) * $_rulePct;
//get discount for original price
$originalDiscountAmount = ($qty * $itemOriginalPrice - $item->getDiscountAmount()) * $_rulePct;
$maxlimitamount = 1000; // maximum amount entered in admin panel
if($originalDiscountAmount > $maxlimitamount)
{
$originalDiscountAmount = 1000;
}
$baseOriginalDiscountAmount = ($qty * $baseItemOriginalPrice - $item->getDiscountAmount()) * $_rulePct;
if (!$rule->getDiscountQty() || $rule->getDiscountQty()>$qty) {
$discountPercent = min(100, $item->getDiscountPercent()+$rulePercent);
$item->setDiscountPercent($discountPercent);
}
我的自定义模块 config.xml
<global>
<models>
<salesrule_resource>
<rewrite>
<rule_collection>SCPR_Pricerule_Model_Resource_Rule_Collection</rule_collection>
</rewrite>
</salesrule_resource>
</models>
</global>
我如何实现这一目标?
任何想法?
答案 0 :(得分:0)
我认为你不需要编辑任何代码。使用一些数学技巧。
您希望获得10%的折扣,但不能超过1000美元的折扣。
创建2条规则:
编辑 - 因为您只需要一个规则
使用以下方法扩展模块中的app / code / core / Mage / SalesRule / Model / Validator.php: 应用程序/代码/本地/命名空间/模块的/ etc / config.xml中
<global>
<models>
<salesrule>
<rewrite>
<validator>Namespace_Module_Model_Validator</rule_collection>
</rewrite>
</salesrule>
</models>
应用程序/代码/本地/命名空间/模块/型号/ Validator.php
<?php
Namespace_Module_Model_Validator extends Mage_Core_Model_Validator {
... //place your updated method here