Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
order_with_bundle.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
14 
15 $objectManager = ObjectManager::getInstance();
16 
17 require 'order.php';
21  [
22  OrderItemInterface::PRODUCT_ID => 2,
23  OrderItemInterface::BASE_PRICE => 100,
24  OrderItemInterface::ORDER_ID => $order->getId(),
25  OrderItemInterface::QTY_ORDERED => 2,
26  OrderItemInterface::QTY_INVOICED => 2,
27  OrderItemInterface::PRICE => 100,
28  OrderItemInterface::ROW_TOTAL => 102,
29  OrderItemInterface::PRODUCT_TYPE => 'bundle',
30  'product_options' => [
31  'product_calculations' => 0,
32  ],
33  'children' => [
34  [
35  OrderItemInterface::PRODUCT_ID => 13,
36  OrderItemInterface::ORDER_ID => $order->getId(),
37  OrderItemInterface::QTY_ORDERED => 10,
38  OrderItemInterface::QTY_INVOICED => 10,
39  OrderItemInterface::BASE_PRICE => 90,
40  OrderItemInterface::PRICE => 90,
41  OrderItemInterface::ROW_TOTAL => 92,
42  OrderItemInterface::PRODUCT_TYPE => 'simple',
43  'product_options' => [
44  'bundle_selection_attributes' => [
45  'qty' => 2,
46  ],
47  ],
48  ],
49  ],
50  ],
51 ];
52 
53 if (!function_exists('saveOrderItems')) {
61  function saveOrderItems(array $orderItems, Order $order, $parentOrderItem = null)
62  {
63  $objectManager = ObjectManager::getInstance();
64 
65  foreach ($orderItems as $orderItemData) {
67  $orderItem = $objectManager->create(Item::class);
68  if (null !== $parentOrderItem) {
69  $orderItemData['parent_item'] = $parentOrderItem;
70  }
71  $orderItem->setData($orderItemData);
72  $order->addItem($orderItem);
73 
74  if (isset($orderItemData['children'])) {
75  saveOrderItems($orderItemData['children'], $order, $orderItem);
76  }
77  }
78  }
79 }
80 
81 saveOrderItems($orderItems, $order);
83 $orderRepository = $objectManager->get(OrderRepositoryInterface::class);
$orderItem
Definition: order.php:30
$objectManager
$orderRepository