Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
order_item_with_bundle_and_options.php
Go to the documentation of this file.
1 <?php
7 require __DIR__ . '/product_with_multiple_options.php';
8 
10 
11 $addressData = include __DIR__ . '/../../../Magento/Sales/_files/address_data.php';
12 
13 $billingAddress = $objectManager->create(\Magento\Sales\Model\Order\Address::class, ['data' => $addressData]);
14 $billingAddress->setAddressType('billing');
15 
17 $shippingAddress->setId(null)->setAddressType('shipping');
18 
19 $payment = $objectManager->create(\Magento\Sales\Model\Order\Payment::class);
20 $payment->setMethod('checkmo');
21 
23 $product = $objectManager->create(\Magento\Catalog\Model\Product::class);
24 $product->load(3);
25 
27 $typeInstance = $product->getTypeInstance();
28 $typeInstance->setStoreFilter($product->getStoreId(), $product);
29 $optionCollection = $typeInstance->getOptionsCollection($product);
30 
33 foreach ($optionCollection as $option) {
35  $selectionsCollection = $typeInstance->getSelectionsCollection([$option->getId()], $product);
36  if ($option->isMultiSelection()) {
37  $bundleOptions[$option->getId()] = array_column($selectionsCollection->toArray(), 'selection_id');
38  } else {
39  $bundleOptions[$option->getId()] = $selectionsCollection->getFirstItem()->getSelectionId();
40  }
41  $bundleOptionsQty[$option->getId()] = 1;
42 }
43 
45  'product' => $product->getId(),
46  'bundle_option' => $bundleOptions,
47  'bundle_option_qty' => $bundleOptionsQty,
48  'qty' => 1,
49 ];
50 
52 $orderItem = $objectManager->create(\Magento\Sales\Model\Order\Item::class);
53 $orderItem->setProductId($product->getId());
54 $orderItem->setQtyOrdered(1);
55 $orderItem->setBasePrice($product->getPrice());
56 $orderItem->setPrice($product->getPrice());
57 $orderItem->setRowTotal($product->getPrice());
58 $orderItem->setProductType($product->getTypeId());
59 $orderItem->setProductOptions(['info_buyRequest' => $requestInfo]);
60 
62 $order = $objectManager->create(\Magento\Sales\Model\Order::class);
63 $order->setIncrementId('100000001');
64 $order->setState(\Magento\Sales\Model\Order::STATE_NEW);
65 $order->setStatus($order->getConfig()->getStateDefaultStatus(\Magento\Sales\Model\Order::STATE_NEW));
66 $order->setCustomerIsGuest(true);
67 $order->setCustomerEmail('[email protected]');
68 $order->setCustomerFirstname('firstname');
69 $order->setCustomerLastname('lastname');
70 $order->setBillingAddress($billingAddress);
71 $order->setShippingAddress($shippingAddress);
72 $order->setAddresses([$billingAddress, $shippingAddress]);
73 $order->setPayment($payment);
74 $order->addItem($orderItem);
75 $order->setStoreId($objectManager->get(\Magento\Store\Model\StoreManagerInterface::class)->getStore()->getId());
76 $order->setSubtotal(100);
77 $order->setBaseSubtotal(100);
78 $order->setBaseGrandTotal(100);
79 $order->save();
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
foreach($optionCollection as $option) $requestInfo