@@ -2061,7 +2061,7 @@ private function removeTransferredItems(): void
20612061 }
20622062
20632063 /**
2064- * Restore items that were transferred from from ordered items to their original sources (cart, wishlist, ...)
2064+ * Restore items that were transferred from ordered items to their original sources (cart, wishlist, ...)
20652065 *
20662066 * @param string $area
20672067 * @param \Magento\Quote\Model\Quote\Item[]|\Magento\Wishlist\Model\Item[] $items
@@ -2071,32 +2071,33 @@ private function removeTransferredItems(): void
20712071 private function restoreTransferredItem ($ area , $ items , $ product = null ): bool
20722072 {
20732073 $ transferredItems = $ this ->_session ->getTransferredItems () ?? [];
2074+ if (!isset ($ transferredItems [$ area ])) {
2075+ return false ;
2076+ }
2077+ $ itemToRestoreId = null ;
20742078 switch ($ area ) {
20752079 case 'wishlist ' :
2076- if (!isset ($ transferredItems ['wishlist ' ])) {
2077- return false ;
2078- }
2079- $ transferredFromWishlist = array_intersect_key ($ items , $ transferredItems ['wishlist ' ]);
2080- if ($ transferredFromWishlist ) {
2081- $ wishlistItemId = array_key_first ($ transferredFromWishlist );
2082- unset($ transferredItems ['wishlist ' ][$ wishlistItemId ]);
2083- $ this ->_session ->setTransferredItems ($ transferredItems );
2084- return true ;
2080+ $ itemToRestore = array_intersect_key ($ items , $ transferredItems ['wishlist ' ]);
2081+ if ($ itemToRestore ) {
2082+ $ itemToRestoreId = array_key_first ($ itemToRestore );
20852083 }
20862084 break ;
20872085 case 'cart ' :
20882086 $ cart = $ this ->getCustomerCart ();
20892087 $ cartItem = $ cart ->getItemByProduct ($ product );
2090- $ transferredFromCart = $ cartItem ? in_array ($ cartItem ->getId (), $ transferredItems ['cart ' ]) : false ;
2091- if ($ transferredFromCart ) {
2092- unset($ transferredItems ['cart ' ][$ cartItem ->getItemId ()]);
2093- $ this ->_session ->setTransferredItems ($ transferredItems );
2094- return true ;
2088+ $ canBeRestored = $ cartItem ? in_array ($ cartItem ->getId (), $ transferredItems ['cart ' ]) : false ;
2089+ if ($ canBeRestored ) {
2090+ $ itemToRestoreId = $ cartItem ->getItemId ();
20952091 }
20962092 break ;
20972093 default :
20982094 break ;
20992095 }
2096+ if ($ itemToRestoreId ) {
2097+ unset($ transferredItems [$ area ][$ itemToRestoreId ]);
2098+ $ this ->_session ->setTransferredItems ($ transferredItems );
2099+ return true ;
2100+ }
21002101 return false ;
21012102 }
21022103
0 commit comments