Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
order_with_bundle_and_invoiced.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 
54 $itemRepository = $objectManager->get(OrderItemRepositoryInterface::class);
55 // Invoiced all existing order items.
56 foreach ($order->getAllItems() as $item) {
57  $item->setQtyInvoiced($item->getQtyOrdered());
58  $itemRepository->save($item);
59 }
60 
61 if (!function_exists('saveOrderItems')) {
69  function saveOrderItems(array $orderItems, Order $order, $parentOrderItem = null)
70  {
71  $objectManager = ObjectManager::getInstance();
72 
73  foreach ($orderItems as $orderItemData) {
75  $orderItem = $objectManager->create(Item::class);
76  if (null !== $parentOrderItem) {
77  $orderItemData['parent_item'] = $parentOrderItem;
78  }
79  $orderItem->setData($orderItemData);
80  $order->addItem($orderItem);
81 
82  if (isset($orderItemData['children'])) {
83  saveOrderItems($orderItemData['children'], $order, $orderItem);
84  }
85  }
86  }
87 }
88 
89 saveOrderItems($orderItems, $order);
91 $orderRepository = $objectManager->get(OrderRepositoryInterface::class);
$orderItem
Definition: order.php:30