# How magento split the discount amount on each ordered item in case of shopping cart rule having fixed amount of discount on whole cart

I'm struggling to figure out how Magento do that, split the discount amount on each ordered item in case of shopping cart rule having a fixed amount of discount on the whole cart

For example, In the cart, I have 3 items and there is coupon code "test5" after applied this coupon will get a discount of \$5.00. In admin on order details page, Magento distribute discount amount.

So I want to know the logic of how Magento distributes the discount amount on each ordered item.

• I noticed something else, the tax seems incorrect when summed. Oct 31, 2018 at 14:53
• Very good explanation. But first tell me how to convert flat \$5 discount to 4.86. because for per item calculation it's used with discount_rate? Sep 7, 2019 at 12:11

Thanks Vinícius Perotto for your reply. Your answer is correct But I have also found the formula for split the discount amount on each ordered item in case of shopping cart rule having fixed amount of discount on whole cart, after review the file "app\code\core\Mage\SalesRule\Model\Validator.php", in process() method.

I thought should share with all So the formula is below that.

\$discountRate = Item price X Qty / SUM of all the items ordered

\$finalDiscountAmt = Discount total X \$discountRate

For example : (3.47 X 1) / 161.91 = 0.021

4.86 X 0.021 = \$0.10

To calculate the discount amount for each item, Magento uses the following equation:

This is done in the app\code\core\Mage\SalesRule\Model\Validator.php file, process() method.

SUM of all the products ordered: \$ 161.91

Discount total: \$ 4.86

Calculates the items:

(ORIGINAL PRICE / 161.91) * 4.86 = x

1. (3.47 / 161.91) * 4.86 = \$ 0.10
2. (1.87 / 161.91) * 4.86 = \$ 0.06
3. (156.57 / 161.91) * 4.86 = \$ 4.70

Why? No such answer in Magento. But it does distribute the discount equally using the "original price" field.