Skip to content

Commit 092f5a9

Browse files
MC-35123: An invoiced order of a product with a Customizable Option (file) can not be reordered
1 parent 7e81497 commit 092f5a9

File tree

3 files changed

+72
-13
lines changed

3 files changed

+72
-13
lines changed

dev/tests/api-functional/testsuite/Magento/GraphQl/Sales/ReorderTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public function testSimpleProductOutOfStock()
108108
/** @var \Magento\Catalog\Api\ProductRepositoryInterface $repository */
109109
$productRepository = Bootstrap::getObjectManager()
110110
->create(\Magento\Catalog\Api\ProductRepositoryInterface::class);
111-
$productSku = 'simple';
111+
$productSku = 'simple-2';
112112
/** @var \Magento\Catalog\Api\Data\ProductInterface $product */
113113
$product = $productRepository->get($productSku);
114114

dev/tests/integration/testsuite/Magento/Sales/_files/order_with_product_out_of_stock.php

Lines changed: 68 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,82 @@
44
* See COPYING.txt for license details.
55
*/
66

7-
use Magento\Sales\Api\Data\OrderInterfaceFactory;
7+
use Magento\Catalog\Api\ProductRepositoryInterface;
8+
use Magento\Sales\Api\OrderRepositoryInterface;
89
use Magento\Sales\Model\Order;
9-
use Magento\TestFramework\Helper\Bootstrap;
10+
use Magento\Sales\Model\Order\Address as OrderAddress;
11+
use Magento\Sales\Model\Order\Item as OrderItem;
12+
use Magento\Sales\Model\Order\Payment;
13+
use Magento\Store\Model\StoreManagerInterface;
1014
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
15+
use Magento\Catalog\Model\Product;
16+
use Magento\TestFramework\Helper\Bootstrap;
1117

12-
Resolver::getInstance()->requireDataFixture(
13-
'Magento/Sales/_files/customer_order_item_with_product_and_custom_options.php'
14-
);
18+
Resolver::getInstance()->requireDataFixture('Magento/Sales/_files/default_rollback.php');
19+
Resolver::getInstance()->requireDataFixture('Magento/Customer/_files/customer.php');
20+
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/product_simple_without_custom_options.php');
1521

1622
$objectManager = Bootstrap::getObjectManager();
23+
/** @var ProductRepositoryInterface $productRepository */
24+
$productRepository = $objectManager->create(ProductRepositoryInterface::class);
25+
$product = $productRepository->get('simple-2');
26+
$billingAddress = $objectManager->create(
27+
OrderAddress::class,
28+
[
29+
'data' => [
30+
'region' => 'CA',
31+
'region_id' => '12',
32+
'postcode' => '11111',
33+
'lastname' => 'lastname',
34+
'firstname' => 'firstname',
35+
'street' => 'street',
36+
'city' => 'Los Angeles',
37+
'email' => 'admin@example.com',
38+
'telephone' => '11111111',
39+
'country_id' => 'US',
40+
],
41+
],
42+
);
43+
$billingAddress->setAddressType('billing');
44+
$shippingAddress = clone $billingAddress;
45+
$shippingAddress->setId(null)->setAddressType('shipping');
46+
47+
/** @var Payment $payment */
48+
$payment = $objectManager->create(\Magento\Sales\Model\Order\Payment::class);
49+
$payment->setMethod('checkmo');
50+
51+
/** @var OrderItem $orderItem */
52+
$orderItem = $objectManager->create(OrderItem::class);
53+
$orderItem->setProductId($product->getId())
54+
->setQtyOrdered(2)
55+
->setBasePrice($product->getPrice())
56+
->setPrice($product->getPrice())
57+
->setRowTotal($product->getPrice())
58+
->setProductType('simple-2')
59+
->setName($product->getName())
60+
->setSku($product->getSku())
61+
->setProductOptions(['info_buyRequest' => ['qty' => 1]]);
62+
1763
/** @var Order $order */
18-
$order = $objectManager->get(OrderInterfaceFactory::class)->create()->loadByIncrementId('100000001');
19-
$order->setCustomerId(1)->setCustomerIsGuest(false)->save();
64+
$order = $objectManager->create(Order::class);
65+
$order->setIncrementId('100000001')
66+
->setCustomerIsGuest(false)
67+
->setCustomerId(1)
68+
->setCustomerEmail('customer@null.com')
69+
->setBillingAddress($billingAddress)
70+
->setShippingAddress($shippingAddress)
71+
->setStoreId($objectManager->get(StoreManagerInterface::class)->getStore()->getId())
72+
->addItem($orderItem)
73+
->setPayment($payment);
74+
/** @var OrderRepositoryInterface $orderRepository */
75+
$orderRepository = $objectManager->create(OrderRepositoryInterface::class);
76+
$orderRepository->save($order);
2077

2178
// load product and set it out of stock
22-
/** @var \Magento\Catalog\Api\ProductRepositoryInterface $repository */
23-
$productRepository = Bootstrap::getObjectManager()->create(\Magento\Catalog\Api\ProductRepositoryInterface::class);
24-
$productSku = 'simple';
25-
/** @var \Magento\Catalog\Model\Product $product */
79+
/** @var ProductRepositoryInterface $repository */
80+
$productRepository = Bootstrap::getObjectManager()->create(ProductRepositoryInterface::class);
81+
$productSku = 'simple-2';
82+
/** @var Product $product */
2683
$product = $productRepository->get($productSku);
2784
// set product as out of stock
2885
$product->setStockData(

dev/tests/integration/testsuite/Magento/Sales/_files/order_with_product_out_of_stock_rollback.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
77

8+
Resolver::getInstance()->requireDataFixture('Magento/Customer/_files/customer_rollback.php');
89
Resolver::getInstance()->requireDataFixture(
9-
'Magento/Sales/_files/customer_order_item_with_product_and_custom_options_rollback.php'
10+
'Magento/Catalog/_files/product_simple_without_custom_options_rollback.php'
1011
);
12+
Resolver::getInstance()->requireDataFixture('Magento/Sales/_files/default_rollback.php');

0 commit comments

Comments
 (0)