Skip to content

Commit 76bf5ab

Browse files
committed
Merge remote-tracking branch 'magento-l3/ACP2E-2620' into Tier4-Kings-PR-03-05-2024
2 parents 44ee94a + 6da1231 commit 76bf5ab

File tree

2 files changed

+45
-2
lines changed
  • app/code/Magento/Sales/Model/AdminOrder
  • dev/tests/integration/testsuite/Magento/Sales/Model/AdminOrder

2 files changed

+45
-2
lines changed

app/code/Magento/Sales/Model/AdminOrder/Create.php

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Magento\Customer\Model\Metadata\Form as CustomerForm;
1212
use Magento\Framework\Api\ExtensibleDataObjectConverter;
1313
use Magento\Framework\App\ObjectManager;
14+
use Magento\Framework\Exception\LocalizedException;
1415
use Magento\Quote\Model\Quote\Address;
1516
use Magento\Quote\Model\Quote\Address\CustomAttributeListInterface;
1617
use Magento\Quote\Model\Quote\Item;
@@ -20,6 +21,7 @@
2021
use Magento\Store\Model\StoreManagerInterface;
2122
use Psr\Log\LoggerInterface;
2223
use Magento\Quote\Model\Quote;
24+
use Magento\Framework\App\Request\Http as HttpRequest;
2325

2426
/**
2527
* Order create model
@@ -264,6 +266,11 @@ class Create extends \Magento\Framework\DataObject implements \Magento\Checkout\
264266
*/
265267
private $orderRepositoryInterface;
266268

269+
/**
270+
* @var HttpRequest
271+
*/
272+
private $request;
273+
267274
/**
268275
* @param \Magento\Framework\ObjectManagerInterface $objectManager
269276
* @param \Magento\Framework\Event\ManagerInterface $eventManager
@@ -298,6 +305,7 @@ class Create extends \Magento\Framework\DataObject implements \Magento\Checkout\
298305
* @param StoreManagerInterface $storeManager
299306
* @param CustomAttributeListInterface|null $customAttributeList
300307
* @param OrderRepositoryInterface|null $orderRepositoryInterface
308+
* @param HttpRequest|null $request
301309
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
302310
*/
303311
public function __construct(
@@ -333,7 +341,8 @@ public function __construct(
333341
ExtensibleDataObjectConverter $dataObjectConverter = null,
334342
StoreManagerInterface $storeManager = null,
335343
CustomAttributeListInterface $customAttributeList = null,
336-
OrderRepositoryInterface $orderRepositoryInterface = null
344+
OrderRepositoryInterface $orderRepositoryInterface = null,
345+
HttpRequest $request = null
337346
) {
338347
$this->_objectManager = $objectManager;
339348
$this->_eventManager = $eventManager;
@@ -372,6 +381,8 @@ public function __construct(
372381
->get(CustomAttributeListInterface::class);
373382
$this->orderRepositoryInterface = $orderRepositoryInterface ?: ObjectManager::getInstance()
374383
->get(OrderRepositoryInterface::class);
384+
$this->request = $request ?: ObjectManager::getInstance()
385+
->get(HttpRequest::class);
375386
}
376387

377388
/**
@@ -895,15 +906,16 @@ public function moveQuoteItem($item, $moveTo, $qty)
895906
}
896907
$canBeRestored = $this->restoreTransferredItem('cart', $cartItemsToRestore);
897908

909+
$cartItem = $cart->addProduct($product, $info);
898910
if (!$canBeRestored) {
899-
$cartItem = $cart->addProduct($product, $info);
900911
if (is_string($cartItem)) {
901912
throw new \Magento\Framework\Exception\LocalizedException(__($cartItem));
902913
}
903914
$cartItem->setPrice($item->getProduct()->getPrice());
904915
}
905916
$this->_needCollectCart = true;
906917
$removeItem = true;
918+
$this->removeCartTransferredItemsAndUpdateQty($cartItem, $item->getId());
907919
}
908920
break;
909921
case 'wishlist':
@@ -2310,4 +2322,33 @@ private function formattedOptions(\Magento\Catalog\Model\Product $product, $buyR
23102322
}
23112323
return $this;
23122324
}
2325+
2326+
/**
2327+
* Remove cart from transferred items and update the qty.
2328+
*
2329+
* @param int|null|Item $cartItem
2330+
* @param int $itemId
2331+
* @return void
2332+
*/
2333+
private function removeCartTransferredItemsAndUpdateQty(int|null|Item $cartItem, int $itemId)
2334+
{
2335+
$removeCartTransferredItems = $this->getSession()->getTransferredItems() ?? [];
2336+
if (isset($removeCartTransferredItems['cart'])) {
2337+
$removeTransferredItemKey = array_search($cartItem->getId(), $removeCartTransferredItems['cart']);
2338+
if ($removeCartTransferredItems['cart'][$removeTransferredItemKey]) {
2339+
$cartItem->clearMessage();
2340+
$cartItem->setHasError(false);
2341+
if (isset($this->request->get('item')[$itemId]['qty'])) {
2342+
$qty = $this->request->get('item')[$itemId]['qty'];
2343+
$cartItem->setQty($qty);
2344+
}
2345+
2346+
if ($cartItem->getHasError()) {
2347+
throw new LocalizedException(__($cartItem->getMessage()));
2348+
}
2349+
unset($removeCartTransferredItems['cart'][$removeTransferredItemKey]);
2350+
}
2351+
$this->getSession()->setTransferredItems($removeCartTransferredItems);
2352+
}
2353+
}
23132354
}

dev/tests/integration/testsuite/Magento/Sales/Model/AdminOrder/CreateTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,7 @@ public function testMoveQuoteItemToCart()
699699
/** @var SessionQuote $session */
700700
$session = $this->objectManager->create(SessionQuote::class);
701701
$session->setCustomerId($fixtureCustomerId);
702+
$session->setTransferredItems(['cart' => [124]]);
702703
/** @var $quoteFixture Quote */
703704
$quoteFixture = $this->objectManager->create(Quote::class);
704705
$quoteFixture->load('test01', 'reserved_order_id');
@@ -710,6 +711,7 @@ public function testMoveQuoteItemToCart()
710711
$this->model->moveQuoteItem($item, 'cart', 3);
711712
self::assertEquals(4, $item->getQty(), 'Number of Qty isn\'t correct for Quote item.');
712713
self::assertEquals(3, $item->getQtyToAdd(), 'Number of added qty isn\'t correct for Quote item.');
714+
self::assertEquals($session->getTransferredItems(), ['cart' => []]);
713715
}
714716

715717
/**

0 commit comments

Comments
 (0)