1

This question already has an answer here:

Is there a way I can resrict the maximum amount for percentage discount?

Example 1 :

20% off discount for any SKU. So let say the SKU price is $1,000 - 20% off = $980 [ final Price = $980 , not $800 ]

Example 2 :

Product price = $20, discount(20%) = $4 discount.

  • customer can enjoy only 20 $ as discount

marked as duplicate by Fabian Schmengler, Raphael at Digital Pianism, Amit Bera, Qaisar Satti, Marius Aug 25 '16 at 7:57

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • Good catch @fschmengler , seems you know all 40,000 questions & answers in this community..... – Baby in Magento Aug 24 '16 at 11:29
  • 1
    Credits go to @Pawel below ;) – Fabian Schmengler Aug 24 '16 at 11:29
1

go to Promotions > shopping cart price rules , Under conditions use as below image.

enter image description here

Under Actions

enter image description here

Under General information => Select Websites , customer Groups, you can set coupon codes if you want or give No coupon , you can set Dates limit within that period only this discount will apply , otherwise leave this as blank. Let me know if you find any Problems in this....

  • Thanks. This seems not applicable for my case. – jester Aug 24 '16 at 10:20
  • Let me put it this way.... Discount = 20% off SKU price = $1000 Discount = $200 ^Can I limit it that customers can only enjoy the discount amount up to $20 (I cap it) - so that Customer needs to pay $980 Another example : Discount = 20% off SKU price = $2000 Discount = $400 ^Can I limit it that customers can only enjoy the discount amount up to $20 (I cap it) - so that customer needs to pay $1980 ? Thanks :)) – jester Aug 24 '16 at 10:22
  • @jester means do you want to give 20 $ only discount ? or you want to give 20 % discount only but maximum discount that should apply is 20 $ ? – Baby in Magento Aug 24 '16 at 10:28
  • @jester do you want to give 20 $ for entire cart/subtotal or 20 $ discount for each products ? – Baby in Magento Aug 24 '16 at 10:32
  • Hi Baby. I wanna give 20% discount off but wanna cap it as in....out of the 20% discount - customer can only enjoy maximum $20. Example A : Product price = $20, discount(20%) = $4. Example B : Product price = $120, discount(20%) = $20 (maximum) – jester Aug 24 '16 at 10:40
0

There is already a good answers: Maximum discount percent magento

Summery: no, it's not possible with the Magento Core. You can create your own function.

3 down vote Surprisingly, this is not possible in the Magento 1.x without an extension or code modification.

To add this feature in our module we had to:

1) add a new field max_discount in the table salesrule

2) observe event salesrule_validator_process

        <salesrule_validator_process>
        <observers>
            <amasty_rules_model_observer>
                <type>singleton</type>
                <class>amrules/observer</class>
                <method>handleValidation</method>
            </amasty_rules_model_observer>
        </observers>
        </salesrule_validator_process>
3) keep track of all discounts given to item by rule_id (just remember them in a variable)

protected function _limitMaxDiscount($r, $rule, $itemId, $quote)
{
    if ($rule->getMaxDiscount()==0) {
        return $r[$itemId];
    }
    if (isset($this->_ruleDiscount[$rule->getId()])) {
        $this->_ruleDiscount[$rule->getId()]['base_discount'] += $r[$itemId]['base_discount'];
    } else {
        $this->_ruleDiscount[$rule->getId()]['base_discount'] = $r[$itemId]['base_discount'];
    }
    if ($this->_ruleDiscount[$rule->getId()]['base_discount'] > $rule->getMaxDiscount()) {
        $r[$itemId]['base_discount'] = $r[$itemId]['base_discount'] - ($this->_ruleDiscount[$rule->getId()]['base_discount'] - $rule->getMaxDiscount());
        $r[$itemId]['discount'] = $quote->getStore()->convertPrice(
            $r[$itemId]['base_discount']
        );
    }
    return $r[$itemId];
}
4) when apply next discount to an item, check if it is in the range.
  • If the question is already answered in another question, without further explanation, please close as duplicate instead of copying the other answer. – Fabian Schmengler Aug 24 '16 at 11:27

Not the answer you're looking for? Browse other questions tagged or ask your own question.