@@ -301,40 +301,41 @@ class Create extends \Magento\Framework\DataObject implements \Magento\Checkout\
301301 * @SuppressWarnings(PHPMD.ExcessiveParameterList)
302302 */
303303 public function __construct (
304- \Magento \Framework \ObjectManagerInterface $ objectManager ,
305- \Magento \Framework \Event \ManagerInterface $ eventManager ,
306- \Magento \Framework \Registry $ coreRegistry ,
307- \Magento \Sales \Model \Config $ salesConfig ,
308- \Magento \Backend \Model \Session \Quote $ quoteSession ,
309- \Psr \Log \LoggerInterface $ logger ,
310- \Magento \Framework \DataObject \Copy $ objectCopyService ,
311- \Magento \Framework \Message \ManagerInterface $ messageManager ,
312- Product \Quote \Initializer $ quoteInitializer ,
313- \Magento \Customer \Api \CustomerRepositoryInterface $ customerRepository ,
314- \Magento \Customer \Api \AddressRepositoryInterface $ addressRepository ,
315- \Magento \Customer \Api \Data \AddressInterfaceFactory $ addressFactory ,
316- \Magento \Customer \Model \Metadata \FormFactory $ metadataFormFactory ,
317- \Magento \Customer \Api \GroupRepositoryInterface $ groupRepository ,
318- \Magento \Framework \App \Config \ScopeConfigInterface $ scopeConfig ,
319- \Magento \Sales \Model \AdminOrder \EmailSender $ emailSender ,
304+ \Magento \Framework \ObjectManagerInterface $ objectManager ,
305+ \Magento \Framework \Event \ManagerInterface $ eventManager ,
306+ \Magento \Framework \Registry $ coreRegistry ,
307+ \Magento \Sales \Model \Config $ salesConfig ,
308+ \Magento \Backend \Model \Session \Quote $ quoteSession ,
309+ \Psr \Log \LoggerInterface $ logger ,
310+ \Magento \Framework \DataObject \Copy $ objectCopyService ,
311+ \Magento \Framework \Message \ManagerInterface $ messageManager ,
312+ Product \Quote \Initializer $ quoteInitializer ,
313+ \Magento \Customer \Api \CustomerRepositoryInterface $ customerRepository ,
314+ \Magento \Customer \Api \AddressRepositoryInterface $ addressRepository ,
315+ \Magento \Customer \Api \Data \AddressInterfaceFactory $ addressFactory ,
316+ \Magento \Customer \Model \Metadata \FormFactory $ metadataFormFactory ,
317+ \Magento \Customer \Api \GroupRepositoryInterface $ groupRepository ,
318+ \Magento \Framework \App \Config \ScopeConfigInterface $ scopeConfig ,
319+ \Magento \Sales \Model \AdminOrder \EmailSender $ emailSender ,
320320 \Magento \CatalogInventory \Api \StockRegistryInterface $ stockRegistry ,
321- \Magento \Quote \Model \Quote \Item \Updater $ quoteItemUpdater ,
322- \Magento \Framework \DataObject \Factory $ objectFactory ,
323- \Magento \Quote \Api \CartRepositoryInterface $ quoteRepository ,
324- \Magento \Customer \Api \AccountManagementInterface $ accountManagement ,
325- \Magento \Customer \Api \Data \CustomerInterfaceFactory $ customerFactory ,
326- \Magento \Customer \Model \Customer \Mapper $ customerMapper ,
327- \Magento \Quote \Api \CartManagementInterface $ quoteManagement ,
328- \Magento \Framework \Api \DataObjectHelper $ dataObjectHelper ,
329- \Magento \Sales \Api \OrderManagementInterface $ orderManagement ,
330- \Magento \Quote \Model \QuoteFactory $ quoteFactory ,
331- array $ data = [],
332- \Magento \Framework \Serialize \Serializer \Json $ serializer = null ,
333- ExtensibleDataObjectConverter $ dataObjectConverter = null ,
334- StoreManagerInterface $ storeManager = null ,
335- CustomAttributeListInterface $ customAttributeList = null ,
336- OrderRepositoryInterface $ orderRepositoryInterface = null
337- ) {
321+ \Magento \Quote \Model \Quote \Item \Updater $ quoteItemUpdater ,
322+ \Magento \Framework \DataObject \Factory $ objectFactory ,
323+ \Magento \Quote \Api \CartRepositoryInterface $ quoteRepository ,
324+ \Magento \Customer \Api \AccountManagementInterface $ accountManagement ,
325+ \Magento \Customer \Api \Data \CustomerInterfaceFactory $ customerFactory ,
326+ \Magento \Customer \Model \Customer \Mapper $ customerMapper ,
327+ \Magento \Quote \Api \CartManagementInterface $ quoteManagement ,
328+ \Magento \Framework \Api \DataObjectHelper $ dataObjectHelper ,
329+ \Magento \Sales \Api \OrderManagementInterface $ orderManagement ,
330+ \Magento \Quote \Model \QuoteFactory $ quoteFactory ,
331+ array $ data = [],
332+ \Magento \Framework \Serialize \Serializer \Json $ serializer = null ,
333+ ExtensibleDataObjectConverter $ dataObjectConverter = null ,
334+ StoreManagerInterface $ storeManager = null ,
335+ CustomAttributeListInterface $ customAttributeList = null ,
336+ OrderRepositoryInterface $ orderRepositoryInterface = null
337+ )
338+ {
338339 $ this ->_objectManager = $ objectManager ;
339340 $ this ->_eventManager = $ eventManager ;
340341 $ this ->_coreRegistry = $ coreRegistry ;
@@ -888,7 +889,12 @@ public function moveQuoteItem($item, $moveTo, $qty)
888889 }
889890
890891 $ cartItems = $ cart ->getAllVisibleItems ();
891- $ canBeRestored = (bool )$ this ->restoreTransferredItem ('cart ' , $ cartItems , $ product );
892+ $ cartItemsToRestore = [];
893+ foreach ($ cartItems as $ value ) {
894+ $ cartItemsToRestore [$ value ->getData ('item_id ' )] = $ value ->getData ('item_id ' );
895+ }
896+ $ canBeRestored = $ this ->restoreTransferredItem ('cart ' , $ cartItemsToRestore );
897+
892898 if (!$ canBeRestored ) {
893899 $ cartItem = $ cart ->addProduct ($ product , $ info );
894900 if (is_string ($ cartItem )) {
@@ -939,7 +945,7 @@ public function moveQuoteItem($item, $moveTo, $qty)
939945 $ this ->getSession ()->getStoreId ()
940946 );
941947 $ wishlistItems = $ wishlist ->getItemCollection ()->getItems ();
942- $ canBeRestored = ( bool ) $ this ->restoreTransferredItem ('wishlist ' , $ wishlistItems, null );
948+ $ canBeRestored = $ this ->restoreTransferredItem ('wishlist ' , $ wishlistItems );
943949 if (!$ canBeRestored ) {
944950 $ wishlist ->addNewItem ($ item ->getProduct (), $ info );
945951 }
@@ -990,7 +996,7 @@ public function applySidebarData($data)
990996 $ this ->moveQuoteItem ($ item , 'order ' , $ qty );
991997 $ transferredItems = $ this ->_session ->getTransferredItems () ?? [];
992998 $ transferredItems ['cart ' ][$ itemId ] = $ itemId ;
993- $ this ->_session ->setTransferredItems ($ transferredItems ) ;
999+ $ this ->_session ->setTransferredItems ($ transferredItems );
9941000 }
9951001 }
9961002 }
@@ -1006,7 +1012,7 @@ public function applySidebarData($data)
10061012 $ this ->addProduct ($ item ->getProduct (), $ item ->getBuyRequest ()->toArray ());
10071013 $ transferredItems = $ this ->_session ->getTransferredItems () ?? [];
10081014 $ transferredItems ['wishlist ' ][$ itemId ] = $ itemId ;
1009- $ this ->_session ->setTransferredItems ($ transferredItems ) ;
1015+ $ this ->_session ->setTransferredItems ($ transferredItems );
10101016 }
10111017 }
10121018 }
@@ -2108,34 +2114,17 @@ private function removeTransferredItems(): void
21082114 *
21092115 * @param string $area
21102116 * @param \Magento\Quote\Model\Quote\Item[]|\Magento\Wishlist\Model\Item[] $items
2111- * @param \Magento\Catalog\Model\Product|null $product Product
21122117 * @return bool
21132118 */
2114- private function restoreTransferredItem ($ area , $ items , $ product = null ): bool
2119+ private function restoreTransferredItem (string $ area , array $ items ): bool
21152120 {
21162121 $ transferredItems = $ this ->_session ->getTransferredItems () ?? [];
21172122 if (!isset ($ transferredItems [$ area ])) {
21182123 return false ;
21192124 }
2120- $ itemToRestoreId = null ;
2121- switch ($ area ) {
2122- case 'wishlist ' :
2123- $ itemToRestore = array_intersect_key ($ items , $ transferredItems ['wishlist ' ]);
2124- if ($ itemToRestore ) {
2125- $ itemToRestoreId = array_key_first ($ itemToRestore );
2126- }
2127- break ;
2128- case 'cart ' :
2129- $ cart = $ this ->getCustomerCart ();
2130- $ cartItem = $ cart ->getItemByProduct ($ product );
2131- $ canBeRestored = $ cartItem ? in_array ($ cartItem ->getId (), $ transferredItems ['cart ' ]) : false ;
2132- if ($ canBeRestored ) {
2133- $ itemToRestoreId = $ cartItem ->getItemId ();
2134- }
2135- break ;
2136- default :
2137- break ;
2138- }
2125+ $ itemToRestore = array_intersect_key ($ items , $ transferredItems [$ area ]);
2126+ $ itemToRestoreId = array_key_first ($ itemToRestore );
2127+
21392128 if ($ itemToRestoreId ) {
21402129 unset($ transferredItems [$ area ][$ itemToRestoreId ]);
21412130 $ this ->_session ->setTransferredItems ($ transferredItems );
0 commit comments