@@ -387,8 +387,8 @@ public function processShippingAmount(Address $address)
387
387
$ address ->setCartFixedRules ($ cartRules );
388
388
break ;
389
389
case Rule::BUY_X_GET_Y_ACTION :
390
- $ qty = $ this ->getDiscountQtyAllItemsBuyXGetYAction ($ quote , $ rule );
391
- $ quoteAmount = $ address ->getBaseShippingAmount () / $ quote ->getItemsQty () * $ qty ;
390
+ $ allQtyDiscount = $ this ->getDiscountQtyAllItemsBuyXGetYAction ($ quote , $ rule );
391
+ $ quoteAmount = $ address ->getBaseShippingAmount () / $ quote ->getItemsQty () * $ allQtyDiscount ;
392
392
$ discountAmount = $ this ->priceCurrency ->convert ($ quoteAmount , $ quote ->getStore ());
393
393
$ baseDiscountAmount = $ quoteAmount ;
394
394
break ;
@@ -495,25 +495,25 @@ private function isValidItemForRule(AbstractItem $item, Rule $rule)
495
495
* @param Rule $rule
496
496
* @return float
497
497
*/
498
- private function getDiscountQtyAllItemsBuyXGetYAction ($ quote , $ rule )
498
+ private function getDiscountQtyAllItemsBuyXGetYAction (Quote $ quote , Rule $ rule ): float
499
499
{
500
500
$ discountAllQty = 0 ;
501
501
foreach ($ quote ->getItems () as $ item ) {
502
502
$ qty = $ item ->getQty ();
503
503
504
- $ x = $ rule ->getDiscountStep ();
505
- $ y = $ rule ->getDiscountAmount ();
506
- if (!$ x || $ y > $ x ) {
504
+ $ discountStep = $ rule ->getDiscountStep ();
505
+ $ discountAmount = $ rule ->getDiscountAmount ();
506
+ if (!$ discountStep || $ discountAmount > $ discountStep ) {
507
507
continue ;
508
508
}
509
- $ buyAndDiscountQty = $ x + $ y ;
509
+ $ buyAndDiscountQty = $ discountStep + $ discountAmount ;
510
510
511
511
$ fullRuleQtyPeriod = floor ($ qty / $ buyAndDiscountQty );
512
512
$ freeQty = $ qty - $ fullRuleQtyPeriod * $ buyAndDiscountQty ;
513
513
514
- $ discountQty = $ fullRuleQtyPeriod * $ y ;
515
- if ($ freeQty > $ x ) {
516
- $ discountQty += $ freeQty - $ x ;
514
+ $ discountQty = $ fullRuleQtyPeriod * $ discountAmount ;
515
+ if ($ freeQty > $ discountStep ) {
516
+ $ discountQty += $ freeQty - $ discountStep ;
517
517
}
518
518
519
519
$ discountAllQty += $ discountQty ;
0 commit comments