Skip to content

Commit 3b33889

Browse files
committed
cleanup code
1 parent ed1a21e commit 3b33889

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

app/code/Magento/SalesRule/Model/Rule/Action/Discount/BuyXGetY.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,25 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\SalesRule\Model\Rule\Action\Discount;
79

10+
use Magento\Quote\Model\Quote\Item\AbstractItem;
11+
use Magento\SalesRule\Model\Rule;
12+
813
class BuyXGetY extends AbstractDiscount
914
{
1015
/**
11-
* @param \Magento\SalesRule\Model\Rule $rule
12-
* @param \Magento\Quote\Model\Quote\Item\AbstractItem $item
16+
* Calculate discount data for BuyXGetY action.
17+
*
18+
* @param Rule $rule
19+
* @param AbstractItem $item
1320
* @param float $qty
14-
* @return \Magento\SalesRule\Model\Rule\Action\Discount\Data
21+
* @return Data
1522
*/
16-
public function calculate($rule, $item, $qty)
23+
public function calculate($rule, $item, $qty): Data
1724
{
18-
/** @var \Magento\SalesRule\Model\Rule\Action\Discount\Data $discountData */
1925
$discountData = $this->discountFactory->create();
2026

2127
$itemPrice = $this->validator->getItemPrice($item);

app/code/Magento/SalesRule/Model/Validator.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,8 @@ public function processShippingAmount(Address $address)
387387
$address->setCartFixedRules($cartRules);
388388
break;
389389
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;
392392
$discountAmount = $this->priceCurrency->convert($quoteAmount, $quote->getStore());
393393
$baseDiscountAmount = $quoteAmount;
394394
break;
@@ -495,25 +495,25 @@ private function isValidItemForRule(AbstractItem $item, Rule $rule)
495495
* @param Rule $rule
496496
* @return float
497497
*/
498-
private function getDiscountQtyAllItemsBuyXGetYAction($quote, $rule)
498+
private function getDiscountQtyAllItemsBuyXGetYAction(Quote $quote, Rule $rule): float
499499
{
500500
$discountAllQty = 0;
501501
foreach ($quote->getItems() as $item) {
502502
$qty = $item->getQty();
503503

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) {
507507
continue;
508508
}
509-
$buyAndDiscountQty = $x + $y;
509+
$buyAndDiscountQty = $discountStep + $discountAmount;
510510

511511
$fullRuleQtyPeriod = floor($qty / $buyAndDiscountQty);
512512
$freeQty = $qty - $fullRuleQtyPeriod * $buyAndDiscountQty;
513513

514-
$discountQty = $fullRuleQtyPeriod * $y;
515-
if ($freeQty > $x) {
516-
$discountQty += $freeQty - $x;
514+
$discountQty = $fullRuleQtyPeriod * $discountAmount;
515+
if ($freeQty > $discountStep) {
516+
$discountQty += $freeQty - $discountStep;
517517
}
518518

519519
$discountAllQty += $discountQty;

0 commit comments

Comments
 (0)