Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
invoice_list_different_stores.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
8 require 'default_rollback.php';
9 require __DIR__ . '/../../../Magento/Catalog/_files/product_simple.php';
12 require __DIR__ . '/../../../Magento/Store/_files/second_store.php';
13 
14 $addressData = include __DIR__ . '/address_data.php';
15 
17  ->create(\Magento\Store\Model\Store::class);
18 $secondStoreId = $store->load('fixture_second_store')->getId();
19 
21  [
22  'increment_id' => '100000002',
24  'status' => 'processing',
25  'grand_total' => 120.00,
26  'subtotal' => 120.00,
27  'base_grand_total' => 120.00,
28  'store_id' => 0,
29  'website_id' => 1,
30  ],
31  [
32  'increment_id' => '100000003',
34  'status' => 'processing',
35  'grand_total' => 140.00,
36  'base_grand_total' => 140.00,
37  'subtotal' => 140.00,
38  'store_id' => 1,
39  'website_id' => 0,
40  ],
41  [
42  'increment_id' => '100000004',
44  'status' => 'closed',
45  'grand_total' => 140.00,
46  'base_grand_total' => 140.00,
47  'subtotal' => 140.00,
48  'store_id' => $secondStoreId,
49  'website_id' => 1,
50  ],
51 ];
52 
54 $billingAddress = $objectManager->create(\Magento\Sales\Model\Order\Address::class, ['data' => $addressData]);
55 $billingAddress->setAddressType('billing');
56 
59 $shippingAddress->setId(null)->setAddressType('shipping');
60 
62 $payment = $objectManager->create(\Magento\Sales\Model\Order\Payment::class);
63 $payment->setMethod('checkmo');
64 $payment->setAdditionalInformation('last_trans_id', '11122');
65 $payment->setAdditionalInformation('metadata', [
66  'type' => 'free',
67  'fraudulent' => false,
68 ]);
69 
71 $orderItem = $objectManager->create(\Magento\Sales\Model\Order\Item::class);
72 $orderItem->setProductId($product->getId())->setQtyOrdered(2);
73 $orderItem->setBasePrice($product->getPrice());
74 $orderItem->setPrice($product->getPrice());
75 $orderItem->setRowTotal($product->getPrice());
76 $orderItem->setProductType('simple');
77 
80  \Magento\Sales\Api\InvoiceManagementInterface::class
81 );
82 
84 $orderRepository = $objectManager->create(\Magento\Sales\Api\OrderRepositoryInterface::class);
85 
86 foreach ($orders as $orderFixture) {
88  $order = $objectManager->create(\Magento\Sales\Model\Order::class);
89  $order->setData($orderFixture);
90  $order->setIncrementId(
91  $orderFixture['increment_id']
92  )->setStoreId(
93  $orderFixture['store_id']
94  )->setState(
95  $orderFixture['state']
96  )->setStatus(
97  $orderFixture['status']
98  )->setSubtotal(
99  $orderFixture['subtotal']
100  )->setGrandTotal(
101  $orderFixture['grand_total']
102  )->setBaseSubtotal(
103  $orderFixture['subtotal']
104  )->setBaseGrandTotal(
105  $orderFixture['base_grand_total']
106  )->setCustomerIsGuest(
107  true
108  )->setCustomerEmail(
110  )->setBillingAddress(
111  clone $billingAddress
112  )->setShippingAddress(
113  clone $shippingAddress
114  )->addItem(
115  clone $orderItem
116  )->setPayment(
117  clone $payment
118  );
119 
120  $orderRepository->save($order);
121 
123  $invoice = $orderService->prepareInvoice($order, $order->getItems());
124  $invoice->register();
125  $invoice->setSendEmail(1);
126  $invoice->setStoreId($orderFixture['store_id']);
127  $order = $invoice->getOrder();
128  $order->setIsInProcess(true);
130  ->create(\Magento\Framework\DB\Transaction::class);
131  $transactionSave->addObject($invoice)->addObject($order)->save();
132 }
$objectManager
Definition: bootstrap.php:17
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
$transactionSave
Definition: invoice.php:20
$order
Definition: order.php:55
$invoice