@@ -412,17 +412,24 @@ public function submit(QuoteEntity $quote, $orderData = [])
412
412
*/
413
413
protected function resolveItems (QuoteEntity $ quote )
414
414
{
415
- $ quoteItems = [];
416
- foreach ($ quote ->getAllItems () as $ quoteItem ) {
417
- /** @var \Magento\Quote\Model\ResourceModel\Quote\Item $quoteItem */
418
- $ quoteItems [$ quoteItem ->getId ()] = $ quoteItem ;
419
- }
420
415
$ orderItems = [];
421
- foreach ($ quoteItems as $ quoteItem ) {
422
- $ parentItem = (isset ($ orderItems [$ quoteItem ->getParentItemId ()])) ?
423
- $ orderItems [$ quoteItem ->getParentItemId ()] : null ;
424
- $ orderItems [$ quoteItem ->getId ()] =
425
- $ this ->quoteItemToOrderItem ->convert ($ quoteItem , ['parent_item ' => $ parentItem ]);
416
+ foreach ($ quote ->getAllItems () as $ quoteItem ) {
417
+ $ itemId = $ quoteItem ->getId ();
418
+
419
+ if (!empty ($ orderItems [$ itemId ])) {
420
+ continue ;
421
+ }
422
+
423
+ $ parentItemId = $ quoteItem ->getParentItemId ();
424
+ /** @var \Magento\Quote\Model\ResourceModel\Quote\Item $parentItem */
425
+ if ($ parentItemId && !isset ($ orderItems [$ parentItemId ])) {
426
+ $ orderItems [$ parentItemId ] = $ this ->quoteItemToOrderItem ->convert (
427
+ $ quoteItem ->getParentItem (),
428
+ ['parent_item ' => null ]
429
+ );
430
+ }
431
+ $ parentItem = isset ($ orderItems [$ parentItemId ]) ? $ orderItems [$ parentItemId ] : null ;
432
+ $ orderItems [$ itemId ] = $ this ->quoteItemToOrderItem ->convert ($ quoteItem , ['parent_item ' => $ parentItem ]);
426
433
}
427
434
return array_values ($ orderItems );
428
435
}
0 commit comments