【发布时间】:2014-10-18 12:59:33
【问题描述】:
我遇到了无法解决的问题。部分原因是我无法用正确的术语来解释它。我是新手,很抱歉这个笨拙的问题。
您可以在下面看到我的目标概览。
我正在使用 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>
我如何做到这一点?
有什么想法吗?
【问题讨论】:
-
你不能默认使用条件选项卡吗?
-
@SamuelComan 是的,这就是为什么我只想覆盖“产品价格折扣的百分比”请检查我编辑的问题。
-
没那么容易。您必须考虑 4 件事 - 将字段添加到表单中,将数据保存到数据库中,从数据库中获取数据并在需要时使用(在本例中为验证器)。我将在下面编辑我的答案。