Skip to content

Commit ebb1fae

Browse files
committed
MC-32128: Admin: create shipment for order
1 parent 81bb39b commit ebb1fae

File tree

3 files changed

+458
-0
lines changed

3 files changed

+458
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Sales\Api\Data\OrderAddressInterfaceFactory;
9+
use Magento\Sales\Api\Data\OrderInterfaceFactory;
10+
use Magento\Sales\Api\Data\OrderItemInterfaceFactory;
11+
use Magento\Sales\Api\Data\OrderPaymentInterfaceFactory;
12+
use Magento\Sales\Api\OrderRepositoryInterface;
13+
use Magento\Sales\Model\Order;
14+
use Magento\Sales\Model\Order\Address;
15+
use Magento\Store\Model\StoreManagerInterface;
16+
17+
require __DIR__ . '/../../../Magento/Customer/_files/customer.php';
18+
require __DIR__ . '/../../../Magento/Catalog/_files/products.php';
19+
20+
$addressData = include __DIR__ . '/address_data.php';
21+
22+
/** @var OrderAddressInterfaceFactory $addressFactory */
23+
$addressFactory = $objectManager->get(OrderAddressInterfaceFactory::class);
24+
/** @var OrderPaymentInterfaceFactory $paymentFactory */
25+
$paymentFactory = $objectManager->get(OrderPaymentInterfaceFactory::class);
26+
/** @var OrderInterfaceFactory $orderFactory */
27+
$orderFactory = $objectManager->get(OrderInterfaceFactory::class);
28+
/** @var OrderItemInterfaceFactory $orderItemFactory */
29+
$orderItemFactory = $objectManager->get(OrderItemInterfaceFactory::class);
30+
/** @var StoreManagerInterface $storeManager */
31+
$storeManager = $objectManager->get(StoreManagerInterface::class);
32+
/** @var OrderRepositoryInterface $orderRepository */
33+
$orderRepository = $objectManager->get(OrderRepositoryInterface::class);
34+
35+
$billingAddress = $addressFactory->create(['data' => $addressData]);
36+
$billingAddress->setAddressType(Address::TYPE_BILLING);
37+
$shippingAddress = $addressFactory->create(['data' => $addressData]);
38+
$shippingAddress->setAddressType(Address::TYPE_SHIPPING);
39+
$payment = $paymentFactory->create();
40+
$payment->setMethod('checkmo')->setAdditionalInformation(
41+
[
42+
'last_trans_id' => '11122',
43+
'metadata' => [
44+
'type' => 'free',
45+
'fraudulent' => false,
46+
]
47+
]
48+
);
49+
50+
$defaultStoreId = $storeManager->getStore('default')->getId();
51+
$order = $orderFactory->create();
52+
$order->setIncrementId('100000001')
53+
->setState(Order::STATE_PROCESSING)
54+
->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_PROCESSING))
55+
->setSubtotal(20)
56+
->setGrandTotal(20)
57+
->setBaseSubtotal(20)
58+
->setBaseGrandTotal(20)
59+
->setCustomerIsGuest(false)
60+
->setCustomerId($customer->getId())
61+
->setCustomerEmail($customer->getEmail())
62+
->setBillingAddress($billingAddress)
63+
->setShippingAddress($shippingAddress)
64+
->setStoreId($defaultStoreId)
65+
->setPayment($payment);
66+
67+
$orderItem = $orderItemFactory->create();
68+
$orderItem->setProductId($product->getId())
69+
->setQtyOrdered(5)
70+
->setBasePrice($product->getPrice())
71+
->setPrice($product->getPrice())
72+
->setRowTotal($product->getPrice())
73+
->setProductType($product->getTypeId())
74+
->setName($product->getName())
75+
->setSku($product->getSku());
76+
$order->addItem($orderItem);
77+
78+
$orderItem = $orderItemFactory->create();
79+
$orderItem->setProductId($customDesignProduct->getId())
80+
->setQtyOrdered(5)
81+
->setBasePrice($customDesignProduct->getPrice())
82+
->setPrice($customDesignProduct->getPrice())
83+
->setRowTotal($customDesignProduct->getPrice())
84+
->setProductType($customDesignProduct->getTypeId())
85+
->setName($customDesignProduct->getName())
86+
->setSku($customDesignProduct->getSku());
87+
$order->addItem($orderItem);
88+
$orderRepository->save($order);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Framework\Registry;
9+
use Magento\Sales\Api\Data\OrderInterface;
10+
use Magento\Sales\Api\OrderRepositoryInterface;
11+
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
12+
use Magento\TestFramework\Helper\Bootstrap;
13+
14+
$objectManager = Bootstrap::getObjectManager();
15+
/** @var Registry $registry */
16+
$registry = $objectManager->get(Registry::class);
17+
/** @var OrderRepositoryInterface $orderRepository */
18+
$orderRepository = $objectManager->get(OrderRepositoryInterface::class);
19+
/** @var CollectionFactory $orderCollectionFactory */
20+
$orderCollectionFactory = $objectManager->get(CollectionFactory::class);
21+
22+
$registry->unregister('isSecureArea');
23+
$registry->register('isSecureArea', true);
24+
$order = $orderCollectionFactory->create()
25+
->addFieldToFilter(OrderInterface::INCREMENT_ID, '100000001')
26+
->setPageSize(1)
27+
->getFirstItem();
28+
if ($order->getId()) {
29+
$orderRepository->delete($order);
30+
}
31+
32+
$registry->unregister('isSecureArea');
33+
$registry->register('isSecureArea', false);
34+
35+
require __DIR__ . '/../../../Magento/Customer/_files/customer_rollback.php';
36+
require __DIR__ . '/../../../Magento/Catalog/_files/products_rollback.php';

0 commit comments

Comments
 (0)