Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
order_item_with_configurable_for_reorder.php
Go to the documentation of this file.
1 <?php
9 
10 require __DIR__ . '/../../../Magento/ConfigurableProduct/_files/product_configurable.php';
11 
13 
14 $addressData = include __DIR__ . '/../../../Magento/Sales/_files/address_data.php';
15 
16 $billingAddress = $objectManager->create(\Magento\Sales\Model\Order\Address::class, ['data' => $addressData]);
17 $billingAddress->setAddressType('billing');
18 
20 $shippingAddress->setId(null)->setAddressType('shipping');
21 
22 $payment = $objectManager->create(\Magento\Sales\Model\Order\Payment::class);
23 $payment->setMethod('checkmo');
24 
26 $productRepository = $objectManager->get(ProductRepositoryInterface::class);
30 
31 
34 $attribute = $eavConfig->getAttribute('catalog_product', 'test_configurable');
35 
37 $options = $objectManager->create(\Magento\Eav\Model\ResourceModel\Entity\Attribute\Option\Collection::class);
38 $option = $options->setAttributeFilter($attribute->getId())
39  ->getFirstItem();
40 
42  'qty' => 1,
43  'super_attribute' => [
44  $attribute->getId() => $option->getId(),
45  ],
46 ];
48 $order = $objectManager->create(\Magento\Sales\Model\Order::class);
49 $order->setIncrementId('100000001');
50 $order->loadByIncrementId('100000001');
51 if ($order->getId()) {
52  $order->delete();
53 }
55 $orderItem = $objectManager->create(\Magento\Sales\Model\Order\Item::class);
57 $orderItem->setProductId($product->getId());
58 $orderItem->setQtyOrdered(1);
59 $orderItem->setBasePrice($product->getPrice());
60 $orderItem->setPrice($product->getPrice());
61 $orderItem->setRowTotal($product->getPrice());
62 $orderItem->setProductType($product->getTypeId());
63 $orderItem->setProductOptions(['info_buyRequest' => $requestInfo]);
64 $orderItemSimple->setProductId($simpleProduct->getId());
65 $orderItemSimple->setParentItem($orderItem);
66 $orderItemSimple->setStoreId(0);
67 $orderItemSimple->setProductType($simpleProduct->getTypeId());
68 $orderItemSimple->setProductOptions(['info_buyRequest' => $requestInfo]);
69 $orderItemSimple->setSku($simpleProduct->getSku());
70 
72 $order = $objectManager->create(\Magento\Sales\Model\Order::class);
73 $order->setIncrementId('100001001');
74 $order->setState(\Magento\Sales\Model\Order::STATE_NEW);
75 $order->setStatus($order->getConfig()->getStateDefaultStatus(\Magento\Sales\Model\Order::STATE_NEW));
76 $order->setCustomerIsGuest(true);
77 $order->setCustomerEmail('[email protected]');
78 $order->setCustomerFirstname('firstname');
79 $order->setCustomerLastname('lastname');
80 $order->setBillingAddress($billingAddress);
81 $order->setShippingAddress($shippingAddress);
82 $order->setAddresses([$billingAddress, $shippingAddress]);
83 $order->setPayment($payment);
84 $order->addItem($orderItem);
85 $order->addItem($orderItemSimple);
86 $order->setStoreId($objectManager->get(\Magento\Store\Model\StoreManagerInterface::class)->getStore()->getId());
87 $order->setSubtotal(100);
88 $order->setBaseSubtotal(100);
89 $order->setBaseGrandTotal(100);
90 $order->save();
91 // Change attribute value for simple of configurable
92 $simpleProduct->setData('test_configurable', 100);
93 $simpleProduct->save();
94 $simpleProduct->isAvailable();
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60