diff --git a/vendor/magento/module-sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php b/vendor/magento/module-sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php index 53a74ac89554f..faab23f735238 100644 --- a/vendor/magento/module-sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php +++ b/vendor/magento/module-sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php @@ -1,7 +1,7 @@ * @since 100.0.2 */ class Cart extends \Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\AbstractSidebar @@ -59,16 +58,6 @@ public function getItemCollection() $collection = $this->getData('item_collection'); if ($collection === null) { $collection = $this->getCreateOrderModel()->getCustomerCart()->getAllVisibleItems(); - $transferredItems = $this->getCreateOrderModel()->getSession()->getTransferredItems() ?? []; - $transferredItems = $transferredItems[$this->getDataId()] ?? []; - if (!empty($transferredItems)) { - foreach ($collection as $key => $item) { - if (in_array($item->getId(), $transferredItems)) { - unset($collection[$key]); - } - } - } - $this->setData('item_collection', $collection); } return $collection; diff --git a/vendor/magento/module-sales/Model/AdminOrder/Create.php b/vendor/magento/module-sales/Model/AdminOrder/Create.php index 4b1868e6852d9..868622d1032ab 100644 --- a/vendor/magento/module-sales/Model/AdminOrder/Create.php +++ b/vendor/magento/module-sales/Model/AdminOrder/Create.php @@ -11,6 +11,7 @@ use Magento\Customer\Model\Metadata\Form as CustomerForm; use Magento\Framework\Api\ExtensibleDataObjectConverter; use Magento\Framework\App\ObjectManager; +use Magento\Framework\Exception\LocalizedException; use Magento\Quote\Model\Quote\Address; use Magento\Quote\Model\Quote\Address\CustomAttributeListInterface; use Magento\Quote\Model\Quote\Item; @@ -20,6 +21,7 @@ use Magento\Store\Model\StoreManagerInterface; use Psr\Log\LoggerInterface; use Magento\Quote\Model\Quote; +use Magento\Framework\App\Request\Http as HttpRequest; /** * Order create model @@ -264,6 +266,11 @@ class Create extends \Magento\Framework\DataObject implements \Magento\Checkout\ */ private $orderRepositoryInterface; + /** + * @var HttpRequest + */ + private $request; + /** * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param \Magento\Framework\Event\ManagerInterface $eventManager @@ -298,6 +305,7 @@ class Create extends \Magento\Framework\DataObject implements \Magento\Checkout\ * @param StoreManagerInterface $storeManager * @param CustomAttributeListInterface|null $customAttributeList * @param OrderRepositoryInterface|null $orderRepositoryInterface + * @param HttpRequest|null $request * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( @@ -333,7 +341,8 @@ public function __construct( ExtensibleDataObjectConverter $dataObjectConverter = null, StoreManagerInterface $storeManager = null, CustomAttributeListInterface $customAttributeList = null, - OrderRepositoryInterface $orderRepositoryInterface = null + OrderRepositoryInterface $orderRepositoryInterface = null, + HttpRequest $request = null ) { $this->_objectManager = $objectManager; $this->_eventManager = $eventManager; @@ -372,6 +381,8 @@ public function __construct( ->get(CustomAttributeListInterface::class); $this->orderRepositoryInterface = $orderRepositoryInterface ?: ObjectManager::getInstance() ->get(OrderRepositoryInterface::class); + $this->request = $request ?: ObjectManager::getInstance() + ->get(HttpRequest::class); } /** @@ -895,8 +906,8 @@ public function moveQuoteItem($item, $moveTo, $qty) } $canBeRestored = $this->restoreTransferredItem('cart', $cartItemsToRestore); + $cartItem = $cart->addProduct($product, $info); if (!$canBeRestored) { - $cartItem = $cart->addProduct($product, $info); if (is_string($cartItem)) { throw new \Magento\Framework\Exception\LocalizedException(__($cartItem)); } @@ -904,6 +915,7 @@ public function moveQuoteItem($item, $moveTo, $qty) } $this->_needCollectCart = true; $removeItem = true; + $this->removeCartTransferredItemsAndUpdateQty($cartItem, $item->getId()); } break; case 'wishlist': @@ -2310,4 +2322,30 @@ private function formattedOptions(\Magento\Catalog\Model\Product $product, $buyR } return $this; } + + /** + * Remove cart from transferred items + * + * @param int|null|Item $cartItem + * @param int $itemId + * @return void + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * @see AC-14442 + */ + private function removeCartTransferredItemsAndUpdateQty(int|null|Item $cartItem, int $itemId) + { + $removeCartTransferredItems = $this->getSession()->getTransferredItems() ?? []; + if (isset($removeCartTransferredItems['cart'])) { + $removeTransferredItemKey = array_search($cartItem->getId(), $removeCartTransferredItems['cart']); + if ($removeTransferredItemKey !== false && $removeCartTransferredItems['cart'][$removeTransferredItemKey]) { + $cartItem->clearMessage(); + $cartItem->setHasError(false); + if ($cartItem->getHasError()) { + throw new LocalizedException(__($cartItem->getMessage())); + } + unset($removeCartTransferredItems['cart'][$removeTransferredItemKey]); + } + $this->getSession()->setTransferredItems($removeCartTransferredItems); + } + } } diff --git a/vendor/magento/module-sales/i18n/en_US.csv b/vendor/magento/module-sales/i18n/en_US.csv index 6b22ae7565665..faf70f007853a 100644 --- a/vendor/magento/module-sales/i18n/en_US.csv +++ b/vendor/magento/module-sales/i18n/en_US.csv @@ -528,6 +528,7 @@ Subtotal:,Subtotal: Refresh,Refresh Item,Item "Add To Order","Add To Order" +"Add to the new order", "Add to the new order" "Configure and Add to Order","Configure and Add to Order" "No items","No items" "Append Comments","Append Comments" diff --git a/vendor/magento/module-sales/view/adminhtml/templates/order/create/sidebar/items.phtml b/vendor/magento/module-sales/view/adminhtml/templates/order/create/sidebar/items.phtml index 517d9c2f53ca6..5d54db61d828b 100644 --- a/vendor/magento/module-sales/view/adminhtml/templates/order/create/sidebar/items.phtml +++ b/vendor/magento/module-sales/view/adminhtml/templates/order/create/sidebar/items.phtml @@ -65,9 +65,9 @@ $sideBarPermissionCheck = $block->getData('sideBarPermissionCheck'); - - escapeHtml(__('Add To Order')) ?> + escapeHtml(__('Add to the new order')) ?> @@ -146,7 +146,7 @@ $sideBarPermissionCheck = $block->getData('sideBarPermissionCheck'); name="sidebar[escapeHtmlAttr($block->getSidebarStorageAction()) ?>][getIdentifierId($_item) ?>]" value="canDisplayItemQty() ? (float) $_item->getQty() : 1 ?>" - title="escapeHtml(__('Add To Order')) ?>"/> + title="escapeHtml(__('Add to the new order')) ?>"/>