@@ -2061,7 +2061,7 @@ private function removeTransferredItems(): void
2061
2061
}
2062
2062
2063
2063
/**
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, ...)
2065
2065
*
2066
2066
* @param string $area
2067
2067
* @param \Magento\Quote\Model\Quote\Item[]|\Magento\Wishlist\Model\Item[] $items
@@ -2071,32 +2071,33 @@ private function removeTransferredItems(): void
2071
2071
private function restoreTransferredItem ($ area , $ items , $ product = null ): bool
2072
2072
{
2073
2073
$ transferredItems = $ this ->_session ->getTransferredItems () ?? [];
2074
+ if (!isset ($ transferredItems [$ area ])) {
2075
+ return false ;
2076
+ }
2077
+ $ itemToRestoreId = null ;
2074
2078
switch ($ area ) {
2075
2079
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 );
2085
2083
}
2086
2084
break ;
2087
2085
case 'cart ' :
2088
2086
$ cart = $ this ->getCustomerCart ();
2089
2087
$ 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 ();
2095
2091
}
2096
2092
break ;
2097
2093
default :
2098
2094
break ;
2099
2095
}
2096
+ if ($ itemToRestoreId ) {
2097
+ unset($ transferredItems [$ area ][$ itemToRestoreId ]);
2098
+ $ this ->_session ->setTransferredItems ($ transferredItems );
2099
+ return true ;
2100
+ }
2100
2101
return false ;
2101
2102
}
2102
2103
0 commit comments