Skip to content

Commit 4cbcaa9

Browse files
committed
Merge remote-tracking branch 'origin/MC-37504' into 2.4-develop-sidecar-pr8
2 parents 91aaeec + f1a873b commit 4cbcaa9

File tree

5 files changed

+360
-0
lines changed

5 files changed

+360
-0
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
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\Catalog\Api\ProductRepositoryInterface;
9+
use Magento\Customer\Api\Data\AddressInterface;
10+
use Magento\Customer\Api\Data\CustomerInterface;
11+
use Magento\Framework\DB\Transaction;
12+
use Magento\OfflinePayments\Model\Checkmo;
13+
use Magento\Sales\Api\CreditmemoItemRepositoryInterface;
14+
use Magento\Sales\Api\CreditmemoRepositoryInterface;
15+
use Magento\Sales\Api\Data\CreditmemoItemInterfaceFactory;
16+
use Magento\Sales\Api\Data\OrderInterface;
17+
use Magento\Sales\Api\Data\OrderInterfaceFactory;
18+
use Magento\Sales\Api\Data\OrderItemInterface;
19+
use Magento\Sales\Api\Data\OrderPaymentInterfaceFactory;
20+
use Magento\Sales\Api\InvoiceManagementInterface;
21+
use Magento\Sales\Api\Data\OrderItemInterfaceFactory;
22+
use Magento\Sales\Api\OrderRepositoryInterface;
23+
use Magento\Sales\Model\Order;
24+
use Magento\Sales\Model\Order\Address;
25+
use Magento\Sales\Model\Order\AddressFactory;
26+
use Magento\Sales\Api\Data\OrderAddressInterfaceFactory;
27+
use Magento\Sales\Model\Order\Creditmemo;
28+
use Magento\Sales\Model\Order\CreditmemoFactory;
29+
use Magento\Sales\Model\Order\ShipmentFactory;
30+
use Magento\Store\Model\StoreManagerInterface;
31+
use Magento\TestFramework\Helper\Bootstrap;
32+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
33+
34+
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/product_simple.php');
35+
36+
$objectManager = Bootstrap::getObjectManager();
37+
/** @var StoreManagerInterface $storeManager */
38+
$storeManager = $objectManager->get(StoreManagerInterface::class);
39+
/** @var ProductRepositoryInterface $productRepository */
40+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
41+
$productRepository->cleanCache();
42+
/** @var OrderRepositoryInterface $orderRepository */
43+
$orderRepository = $objectManager->get(OrderRepositoryInterface::class);
44+
/** @var InvoiceManagementInterface $invoiceService */
45+
$invoiceService = $objectManager->get(InvoiceManagementInterface::class);
46+
/** @var ShipmentFactory $shipmentFactory */
47+
$shipmentFactory = $objectManager->get(ShipmentFactory::class);
48+
/** @var CreditmemoFactory $creditmemoFactory */
49+
$creditmemoFactory = $objectManager->get(CreditmemoFactory::class);
50+
/** @var CreditmemoItemInterfaceFactory $creditmemoItemFactory */
51+
$creditmemoItemFactory = $objectManager->get(CreditmemoItemInterfaceFactory::class);
52+
/** @var CreditmemoRepositoryInterface $creditmemoRepository */
53+
$creditmemoRepository = $objectManager->get(CreditmemoRepositoryInterface::class);
54+
/** @var CreditmemoItemRepositoryInterface $creditmemoItemRepository */
55+
$creditmemoItemRepository = $objectManager->get(CreditmemoItemRepositoryInterface::class);
56+
$addressData = [
57+
AddressInterface::REGION => 'CA',
58+
AddressInterface::REGION_ID => '12',
59+
AddressInterface::POSTCODE => '11111',
60+
AddressInterface::LASTNAME => 'lastname',
61+
AddressInterface::FIRSTNAME => 'firstname',
62+
AddressInterface::STREET => 'street',
63+
AddressInterface::CITY => 'Los Angeles',
64+
CustomerInterface::EMAIL => 'admin@example.com',
65+
AddressInterface::TELEPHONE => '11111111',
66+
AddressInterface::COUNTRY_ID => 'US',
67+
];
68+
$product = $productRepository->get('simple');
69+
/** @var AddressFactory $addressFactory */
70+
$addressFactory = $objectManager->get(AddressFactory::class);
71+
$billingAddress = $addressFactory->create(['data' => $addressData]);
72+
$billingAddress->setAddressType(Address::TYPE_BILLING);
73+
$shippingAddress = clone $billingAddress;
74+
$shippingAddress->setId(null)->setAddressType(Address::TYPE_SHIPPING);
75+
/** @var OrderPaymentInterfaceFactory $paymentFactory */
76+
$paymentFactory = $objectManager->get(OrderPaymentInterfaceFactory::class);
77+
$payment = $paymentFactory->create();
78+
$payment->setMethod(Checkmo::PAYMENT_METHOD_CHECKMO_CODE)
79+
->setAdditionalInformation('last_trans_id', '11122')
80+
->setAdditionalInformation('metadata', ['type' => 'free', 'fraudulent' => false]);
81+
/** @var OrderItemInterface $orderItem */
82+
$orderItem = $objectManager->get(OrderItemInterfaceFactory::class)->create();
83+
$orderItem->setProductId($product->getId())
84+
->setQtyOrdered(2)
85+
->setBasePrice($product->getPrice())
86+
->setPrice($product->getPrice())
87+
->setRowTotal($product->getPrice())
88+
->setProductType('simple')
89+
->setName($product->getName())
90+
->setSku($product->getSku())
91+
->setName('Test item');
92+
/** @var OrderInterface $order */
93+
$order = $objectManager->get(OrderInterfaceFactory::class)->create();
94+
$order->setIncrementId('100001111')
95+
->setState(Order::STATE_PROCESSING)
96+
->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_PROCESSING))
97+
->setSubtotal(100)
98+
->setGrandTotal(100)
99+
->setBaseSubtotal(100)
100+
->setBaseGrandTotal(100)
101+
->setOrderCurrencyCode('USD')
102+
->setBaseCurrencyCode('USD')
103+
->setCustomerIsGuest(true)
104+
->setCustomerEmail('customer@null.com')
105+
->setBillingAddress($billingAddress)
106+
->setShippingAddress($shippingAddress)
107+
->addItem($orderItem)
108+
->setPayment($payment)
109+
->setStoreId($storeManager->getStore('default')->getId());
110+
$orderRepository->save($order);
111+
112+
$invoice = $invoiceService->prepareInvoice($order);
113+
$invoice->register();
114+
$invoice->setIncrementId($order->getIncrementId());
115+
$order = $invoice->getOrder();
116+
$order->setIsInProcess(true);
117+
$transactionSave = $objectManager->create(Transaction::class);
118+
$transactionSave->addObject($invoice)->addObject($order)->save();
119+
120+
$items = [];
121+
foreach ($order->getItems() as $item) {
122+
$items[$item->getId()] = $item->getQtyOrdered();
123+
}
124+
125+
$shipment = $objectManager->get(ShipmentFactory::class)->create($order, $items);
126+
$shipment->register();
127+
$shipment->setIncrementId($order->getIncrementId());
128+
$transactionSave = $objectManager->create(Transaction::class);
129+
$transactionSave->addObject($shipment)->addObject($order)->save();
130+
/** @var CreditmemoFactory $creditmemoFactory */
131+
$creditmemoFactory = $objectManager->get(CreditmemoFactory::class);
132+
$creditmemo = $creditmemoFactory->createByOrder($order, $order->getData());
133+
$creditmemo->setOrder($order);
134+
$creditmemo->setState(Creditmemo::STATE_OPEN);
135+
$creditmemo->setIncrementId($order->getIncrementId());
136+
$creditmemoRepository->save($creditmemo);
137+
138+
$orderItem->setName('Test item')
139+
->setQtyRefunded(2)
140+
->setQtyInvoiced(2)
141+
->setOriginalPrice($product->getPrice());
142+
$creditItem = $creditmemoItemFactory->create();
143+
$creditItem->setCreditmemo($creditmemo)
144+
->setName('Creditmemo item')
145+
->setOrderItemId($orderItem->getId())
146+
->setQty(2)
147+
->setPrice($product->getPrice());
148+
$creditmemoItemRepository->save($creditItem);
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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\CreditmemoRepositoryInterface;
10+
use Magento\Sales\Api\Data\OrderInterface;
11+
use Magento\Sales\Api\Data\OrderInterfaceFactory;
12+
use Magento\Sales\Api\InvoiceRepositoryInterface;
13+
use Magento\Sales\Api\OrderRepositoryInterface;
14+
use Magento\Sales\Api\ShipmentRepositoryInterface;
15+
use Magento\TestFramework\Helper\Bootstrap;
16+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
17+
18+
$objectManager = Bootstrap::getObjectManager();
19+
/** @var OrderRepositoryInterface $orderRepository */
20+
$orderRepository = $objectManager->get(OrderRepositoryInterface::class);
21+
/** @var InvoiceRepositoryInterface $invoiceRepository */
22+
$invoiceRepository = $objectManager->get(InvoiceRepositoryInterface::class);
23+
/** @var ShipmentRepositoryInterface $shipmentRepository */
24+
$shipmentRepository = $objectManager->get(ShipmentRepositoryInterface::class);
25+
/** @var CreditmemoRepositoryInterface $creditmemoRepository */
26+
$creditmemoRepository = $objectManager->get(CreditmemoRepositoryInterface::class);
27+
/** @var OrderInterface $order */
28+
$order = $objectManager->get(OrderInterfaceFactory::class)->create()->loadByIncrementId('100001111');
29+
/** @var Registry $registry */
30+
$registry = $objectManager->get(Registry::class);
31+
$registry->unregister('isSecureArea');
32+
$registry->register('isSecureArea', true);
33+
34+
foreach ($order->getInvoiceCollection() as $invoice) {
35+
$invoiceRepository->delete($invoice);
36+
}
37+
38+
$orderRepository->delete($order);
39+
40+
$registry->unregister('isSecureArea');
41+
$registry->register('isSecureArea', false);
42+
43+
$creditMemoGridAggregator = $objectManager->get(\CreditmemoGridAggregator::class);
44+
$creditMemoGridAggregator->purge('100001111', 'order_increment_id');
45+
46+
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/product_simple_rollback.php');
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
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\Catalog\Api\ProductRepositoryInterface;
9+
use Magento\Customer\Api\Data\AddressInterface;
10+
use Magento\Customer\Api\Data\CustomerInterface;
11+
use Magento\Framework\DB\Transaction;
12+
use Magento\OfflinePayments\Model\Checkmo;
13+
use Magento\Sales\Api\Data\OrderInterface;
14+
use Magento\Sales\Api\Data\OrderInterfaceFactory;
15+
use Magento\Sales\Api\Data\OrderItemInterface;
16+
use Magento\Sales\Api\Data\OrderPaymentInterfaceFactory;
17+
use Magento\Sales\Api\InvoiceManagementInterface;
18+
use Magento\Sales\Api\Data\OrderItemInterfaceFactory;
19+
use Magento\Sales\Api\OrderRepositoryInterface;
20+
use Magento\Sales\Model\Order;
21+
use Magento\Sales\Model\Order\Address;
22+
use Magento\Sales\Model\Order\AddressFactory;
23+
use Magento\Sales\Model\Order\ShipmentFactory;
24+
use Magento\Store\Model\StoreManagerInterface;
25+
use Magento\TestFramework\Helper\Bootstrap;
26+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
27+
28+
Resolver::getInstance()->requireDataFixture('Magento/Sales/_files/default_rollback.php');
29+
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/product_simple.php');
30+
31+
$objectManager = Bootstrap::getObjectManager();
32+
/** @var StoreManagerInterface $storeManager */
33+
$storeManager = $objectManager->get(StoreManagerInterface::class);
34+
/** @var ProductRepositoryInterface $productRepository */
35+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
36+
$productRepository->cleanCache();
37+
/** @var OrderRepositoryInterface $orderRepository */
38+
$orderRepository = $objectManager->get(OrderRepositoryInterface::class);
39+
/** @var InvoiceManagementInterface $invoiceService */
40+
$invoiceService = $objectManager->get(InvoiceManagementInterface::class);
41+
/** @var ShipmentFactory $shipmentFactory */
42+
$shipmentFactory = $objectManager->get(ShipmentFactory::class);
43+
$addressData = [
44+
AddressInterface::REGION => 'CA',
45+
AddressInterface::REGION_ID => '12',
46+
AddressInterface::POSTCODE => '11111',
47+
AddressInterface::LASTNAME => 'lastname',
48+
AddressInterface::FIRSTNAME => 'firstname',
49+
AddressInterface::STREET => 'street',
50+
AddressInterface::CITY => 'Los Angeles',
51+
CustomerInterface::EMAIL => 'admin@example.com',
52+
AddressInterface::TELEPHONE => '11111111',
53+
AddressInterface::COUNTRY_ID => 'US',
54+
];
55+
$product = $productRepository->get('simple');
56+
/** @var AddressFactory $addressFactory */
57+
$addressFactory = $objectManager->get(AddressFactory::class);
58+
$billingAddress = $addressFactory->create(['data' => $addressData]);
59+
$billingAddress->setAddressType(Address::TYPE_BILLING);
60+
$shippingAddress = clone $billingAddress;
61+
$shippingAddress->setId(null)->setAddressType(Address::TYPE_SHIPPING);
62+
/** @var OrderPaymentInterfaceFactory $paymentFactory */
63+
$paymentFactory = $objectManager->get(OrderPaymentInterfaceFactory::class);
64+
$payment = $paymentFactory->create();
65+
$payment->setMethod(Checkmo::PAYMENT_METHOD_CHECKMO_CODE)
66+
->setAdditionalInformation('last_trans_id', '11122')
67+
->setAdditionalInformation('metadata', ['type' => 'free', 'fraudulent' => false]);
68+
/** @var OrderItemInterface $orderItem */
69+
$orderItem = $objectManager->get(OrderItemInterfaceFactory::class)->create();
70+
$orderItem->setProductId($product->getId())
71+
->setQtyOrdered(2)
72+
->setBasePrice($product->getPrice())
73+
->setPrice($product->getPrice())
74+
->setRowTotal($product->getPrice())
75+
->setProductType('simple')
76+
->setName($product->getName())
77+
->setSku($product->getSku())
78+
->setName('Test item');
79+
/** @var OrderInterface $order */
80+
$order = $objectManager->get(OrderInterfaceFactory::class)->create();
81+
$order->setIncrementId('100000333')
82+
->setState(Order::STATE_PROCESSING)
83+
->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_PROCESSING))
84+
->setSubtotal(100)
85+
->setGrandTotal(100)
86+
->setBaseSubtotal(100)
87+
->setBaseGrandTotal(100)
88+
->setOrderCurrencyCode('USD')
89+
->setBaseCurrencyCode('USD')
90+
->setCustomerIsGuest(true)
91+
->setCustomerEmail('customer@null.com')
92+
->setBillingAddress($billingAddress)
93+
->setShippingAddress($shippingAddress)
94+
->addItem($orderItem)
95+
->setPayment($payment)
96+
->setStoreId($storeManager->getStore('default')->getId());
97+
$orderRepository->save($order);
98+
99+
$invoice = $invoiceService->prepareInvoice($order);
100+
$invoice->register();
101+
$invoice->setIncrementId($order->getIncrementId());
102+
$order = $invoice->getOrder();
103+
$order->setIsInProcess(true);
104+
$transactionSave = $objectManager->create(Transaction::class);
105+
$transactionSave->addObject($invoice)->addObject($order)->save();
106+
107+
$items = [];
108+
foreach ($order->getItems() as $item) {
109+
$items[$item->getId()] = $item->getQtyOrdered();
110+
}
111+
112+
$shipment = $objectManager->get(ShipmentFactory::class)->create($order, $items);
113+
$shipment->register();
114+
$shipment->setIncrementId($order->getIncrementId());
115+
$transactionSave = $objectManager->create(Transaction::class);
116+
$transactionSave->addObject($shipment)->addObject($order)->save();
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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\Data\OrderInterfaceFactory;
11+
use Magento\Sales\Api\InvoiceRepositoryInterface;
12+
use Magento\Sales\Api\OrderRepositoryInterface;
13+
use Magento\Sales\Api\ShipmentRepositoryInterface;
14+
use Magento\TestFramework\Helper\Bootstrap;
15+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
16+
17+
$objectManager = Bootstrap::getObjectManager();
18+
/** @var OrderRepositoryInterface $orderRepository */
19+
$orderRepository = $objectManager->get(OrderRepositoryInterface::class);
20+
/** @var InvoiceRepositoryInterface $invoiceRepository */
21+
$invoiceRepository = $objectManager->get(InvoiceRepositoryInterface::class);
22+
/** @var ShipmentRepositoryInterface $shipmentRepository */
23+
$shipmentRepository = $objectManager->get(ShipmentRepositoryInterface::class);
24+
/** @var OrderInterface $order */
25+
$order = $objectManager->get(OrderInterfaceFactory::class)->create()->loadByIncrementId('100000333');
26+
/** @var Registry $registry */
27+
$registry = $objectManager->get(Registry::class);
28+
$registry->unregister('isSecureArea');
29+
$registry->register('isSecureArea', true);
30+
31+
foreach ($order->getInvoiceCollection() as $invoice) {
32+
$invoiceRepository->delete($invoice);
33+
}
34+
35+
$orderRepository->delete($order);
36+
37+
$registry->unregister('isSecureArea');
38+
$registry->register('isSecureArea', false);
39+
40+
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/product_simple_rollback.php');
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
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\TestFramework\Workaround\Override\Fixture\Resolver;
9+
10+
Resolver::getInstance()->requireDataFixture('Magento/Sales/_files/order_rollback.php');

0 commit comments

Comments
 (0)