|
4 | 4 | * See COPYING.txt for license details.
|
5 | 5 | */
|
6 | 6 |
|
7 |
| -use Magento\Sales\Api\Data\ShipmentItemCreationInterface; |
8 |
| -use Magento\Sales\Api\Data\ShipmentTrackCreationInterface; |
9 |
| -use Magento\Sales\Api\ShipOrderInterface; |
10 | 7 | use Magento\Sales\Model\Order;
|
11 | 8 | use Magento\TestFramework\Helper\Bootstrap;
|
12 | 9 | use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
|
| 10 | +use Magento\Framework\DB\Transaction; |
| 11 | +use Magento\Sales\Model\Order\ShipmentFactory; |
13 | 12 |
|
14 | 13 | Resolver::getInstance()->requireDataFixture('Magento/Sales/_files/order_with_different_types_of_product.php');
|
15 | 14 |
|
16 | 15 | $objectManager = Bootstrap::getObjectManager();
|
17 |
| -/** @var ShipOrderInterface $shipOrder */ |
18 |
| -$shipOrder = $objectManager->create(ShipOrderInterface::class); |
| 16 | +/** @var Transaction $transaction */ |
| 17 | +$transaction = $objectManager->get(Transaction::class); |
19 | 18 | /** @var Order $order */
|
20 | 19 | $order = $objectManager->create(Order::class)->loadByIncrementId('100000001');
|
21 | 20 | //Set the shipping method
|
|
26 | 25 | //Create Shipment with UPS tracking and some items
|
27 | 26 | $shipmentItems = [];
|
28 | 27 | foreach ($order->getItems() as $orderItem) {
|
29 |
| - if (count($shipmentItems) === 2) { |
30 |
| - break; |
31 |
| - } |
32 |
| - /** @var ShipmentItemCreationInterface $shipmentItem */ |
33 |
| - $shipmentItem = $objectManager->create(ShipmentItemCreationInterface::class); |
34 |
| - $shipmentItem->setOrderItemId($orderItem->getItemId()); |
35 |
| - $shipmentItem->setQty($orderItem->getQtyOrdered()); |
36 |
| - $shipmentItems[] = $shipmentItem; |
| 28 | + $shipmentItems[$orderItem->getId()] = $orderItem->getQtyOrdered(); |
37 | 29 | }
|
38 |
| -/** @var ShipmentTrackCreationInterface $track */ |
39 |
| -$track = $objectManager->create(ShipmentTrackCreationInterface::class); |
40 |
| -$track->setCarrierCode('ups'); |
41 |
| -$track->setTitle('United Parcel Service'); |
42 |
| -$track->setTrackNumber('987654321'); |
43 |
| -$shipOrder->execute($order->getId(), $shipmentItems, false, false, null, [$track]); |
| 30 | +$tracking = [ |
| 31 | + 'carrier_code' => 'ups', |
| 32 | + 'title' => 'United Parcel Service', |
| 33 | + 'number' => '987654321' |
| 34 | +]; |
44 | 35 |
|
45 |
| -//Create second Shipment |
46 |
| -$shipmentItems = []; |
47 |
| -foreach ($order->getItems() as $orderItem) { |
48 |
| - if ($orderItem->getQtyShipped() === 0) { |
49 |
| - /** @var ShipmentItemCreationInterface $shipmentItem */ |
50 |
| - $shipmentItem = $objectManager->create(ShipmentItemCreationInterface::class); |
51 |
| - $shipmentItem->setOrderItemId($orderItem->getItemId()); |
52 |
| - $shipmentItem->setQty($orderItem->getQtyOrdered()); |
53 |
| - $shipmentItems[] = $shipmentItem; |
54 |
| - } |
55 |
| -} |
56 |
| -$shipOrder->execute($order->getId(), $shipmentItems); |
| 36 | +$shipment = $objectManager->get(ShipmentFactory::class)->create($order, $shipmentItems, [$tracking]); |
| 37 | +$shipment->register(); |
| 38 | +$transaction->addObject($shipment)->addObject($order)->save(); |
0 commit comments