У меня есть эта проблема, которую я не могу решить. Отчасти потому, что я не могу объяснить это правильными условиями. Я новичок в этом, так жаль этот неуклюжий вопрос.
Ниже вы можете увидеть обзор моей цели.
Я использую 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>
Как мне это достичь?
Есть идеи ?
Я не думаю, что вам нужно редактировать любой код для этого. Используйте некоторые математические трюки.
Вы хотите предоставить скидку 10%, но без скидки больше 1000 $.
Создайте 2 правила:
EDIT – поскольку вы хотите только одно правило
Расширьте приложение / код / ядро / Mage / SalesRule / Model / Validator.php в своем модуле, используя: app / code / local / Namespace / Module / 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