Skip to content

Commit c8cf445

Browse files
committed
Check stock status for bundle product
1 parent 4784fc2 commit c8cf445

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

app/code/Magento/QuoteGraphQl/Model/Resolver/CheckAvailability.php

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ class CheckAvailability implements ResolverInterface
4141
*/
4242
private $stockStatusRepository;
4343

44-
4544
/**
4645
* CheckAvailability constructor
4746
*
@@ -68,6 +67,8 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value
6867
}
6968

7069
/**
70+
* Check item status available or unavailable
71+
*
7172
* @param Item $cartItem
7273
* @return bool
7374
*/
@@ -76,31 +77,31 @@ private function checkProductQtyStatus($cartItem):bool
7677
$requestedQty = 0;
7778
$previousQty = 0;
7879

80+
if (!$cartItem->getQuote()->getItems()) {
81+
return false;
82+
}
83+
84+
foreach ($cartItem->getQuote()->getItems() as $item) {
85+
if ($item->getItemId() == $cartItem->getItemId()) {
86+
$requestedQty = $item->getQtyToAdd() ?? $item->getQty();
87+
$previousQty = $item->getPreviousQty() ?? 0;
88+
}
89+
}
90+
7991
if ($cartItem->getProductType() == self::PRODUCT_TYPE_BUNDLE) {
8092
$qtyOptions = $cartItem->getQtyOptions();
81-
$requestedQty = $cartItem->getQtyToAdd() ?? $cartItem->getQty();
82-
$previousQty = $cartItem->getPreviousQty() ?? 0;
83-
$totalReqQty = $previousQty + $requestedQty;
84-
85-
foreach($qtyOptions as $qtyOption) {
93+
$totalRequestedQty = $previousQty + $requestedQty;
94+
foreach ($qtyOptions as $qtyOption) {
8695
$productId = (int) $qtyOption->getProductId();
8796
$requiredItemQty = (float) $qtyOption->getValue();
88-
if ($totalReqQty) {
89-
$requiredItemQty = $requiredItemQty * $totalReqQty;
97+
if ($totalRequestedQty) {
98+
$requiredItemQty = $requiredItemQty * $totalRequestedQty;
9099
}
91-
92100
if ($this->getProductStockStatus($productId, $requiredItemQty)) {
93101
return false;
94102
}
95103
}
96104
} else {
97-
foreach ($cartItem->getQuote()->getItems() as $item) {
98-
99-
if ($item->getItemId() == $cartItem->getItemId()) {
100-
$requestedQty = $item->getQtyToAdd() ?? $item->getQty();
101-
$previousQty = $item->getPreviousQty() ?? 0;
102-
}
103-
}
104105
$requiredItemQty = $requestedQty + $previousQty;
105106
$productId = (int) $cartItem->getProduct()->getId();
106107
if ($this->getProductStockStatus($productId, $requiredItemQty)) {
@@ -111,6 +112,8 @@ private function checkProductQtyStatus($cartItem):bool
111112
}
112113

113114
/**
115+
* Get product qty
116+
*
114117
* @param int $productId
115118
* @param float $requiredQuantity
116119
* @return bool

0 commit comments

Comments
 (0)