Переопределить правила цены корзины в Magento

У меня есть эта проблема, которую я не могу решить. Отчасти потому, что я не могу объяснить это правильными условиями. Я новичок в этом, так жаль этот неуклюжий вопрос.

Ниже вы можете увидеть обзор моей цели.

Я использую 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 правила:

  1. Дайте 10% скидку, если общая сумма корзины меньше 10 000 $
  2. Дайте скидку 1000 $, если общая сумма корзины больше 10 000 $

EDIT – поскольку вы хотите только одно правило

  1. Переместите это поле ограничения в раздел конфигурации Magento. Подробнее см. http://inchoo.net/ecommerce/magento/create-configuration-for-your-magento-extension/ . Это намного проще, если вы отделите его от формы правил.
  2. Расширьте приложение / код / ​​ядро ​​/ 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