@@ -412,17 +412,24 @@ public function submit(QuoteEntity $quote, $orderData = [])
412412 */
413413 protected function resolveItems (QuoteEntity $ quote )
414414 {
415- $ quoteItems = [];
416- foreach ($ quote ->getAllItems () as $ quoteItem ) {
417- /** @var \Magento\Quote\Model\ResourceModel\Quote\Item $quoteItem */
418- $ quoteItems [$ quoteItem ->getId ()] = $ quoteItem ;
419- }
420415 $ 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 ]);
426433 }
427434 return array_values ($ orderItems );
428435 }
0 commit comments