@@ -104,6 +104,13 @@ public function execute(string $maskedCartId, array $cartItems): AddProductsToCa
104
104
105
105
foreach ($ cartItems as $ cartItemPosition => $ cartItem ) {
106
106
$ this ->addItemToCart ($ cart , $ cartItem , $ cartItemPosition );
107
+ // reset cart items and addresses to clean cache
108
+ $ cart ->setTotalsCollectedFlag (false );
109
+ $ cart ->getItemsCollection ()->clear ();
110
+ $ cart ->getAddressesCollection ()->clear ();
111
+ foreach ($ cart ->getAddressesCollection () as $ item ) {
112
+ $ item ->setQuote ($ cart );
113
+ }
107
114
}
108
115
109
116
if ($ cart ->getData ('has_error ' )) {
@@ -118,8 +125,6 @@ public function execute(string $maskedCartId, array $cartItems): AddProductsToCa
118
125
if (count ($ this ->errors ) !== 0 ) {
119
126
/* Revert changes introduced by add to cart processes in case of an error */
120
127
$ cart ->getItemsCollection ()->clear ();
121
- } else {
122
- $ this ->cartRepository ->save ($ cart );
123
128
}
124
129
125
130
return $ this ->prepareErrorOutput ($ cart );
@@ -155,6 +160,7 @@ private function addItemToCart(CartInterface $cart, Data\CartItem $cartItem, int
155
160
156
161
try {
157
162
$ result = $ cart ->addProduct ($ product , $ this ->requestBuilder ->build ($ cartItem ));
163
+ $ this ->cartRepository ->save ($ cart );
158
164
} catch (\Throwable $ e ) {
159
165
$ this ->addError (
160
166
__ ($ e ->getMessage ())->render (),
0 commit comments