Hello Guys!

If you have seen that when you create a cart rule with action as “Whole cart Fixed Amount” and apply that rule on order then magento divided that fixed amount between each item. So Magento cacluate it we will understand it today.

There is one model Magento\SalesRule\Model\Rule\Action\Discount\CartFixed

Here you can see function calculate

This function call for each item.

Here you can see below code at line 100

$ratio = $baseItemPrice * $qty / $ruleTotals['base_items_price'];

` `

`So Magento is calculating the ratio of discount for each item`

` `

`So Item Based amount multiply by cart qty divided by cart sub total for all items.`

` `

`So Fix example`

` `

`We have 2 items `

` `

`101 with qty 1 price is $100 each `

`102 with qty 2 price is $50 each`

`and We are appply a coupon for 30$`

`So here cart total amount will be $200`

` `

`and we applied discount 30$`

`so now we need to divide this 30$ for each item.`

` `

`So for 101 the ratio will be 100*1/200 = 0.5`

`FOr 102 the ration will be 50*2/200 = 0.5`

` `

`Now Look at below code`

` `

$maximumItemDiscount = $this->deltaPriceRound->round( $rule->getDiscountAmount() * $ratio, $discountType );

` `

check $rule->getDiscountAmount() * $ratio

` `

`Here it calculate the discount so `

`for 101 it will be 30*0.5 = 15`

`for 102 it will be 30*0.5 = 15`

So hope you understand how magento assign discount for each item in case of Fixed Amount cart rule

` `