diff -Nuar a/vendor/magento/module-sales/Model/ShipOrder.php b/vendor/magento/module-sales/Model/ShipOrder.php index 2cc4c9b2411..f6d740e0392 100644 --- a/vendor/magento/module-sales/Model/ShipOrder.php +++ b/vendor/magento/module-sales/Model/ShipOrder.php @@ -19,6 +19,8 @@ use Psr\Log\LoggerInterface; /** * Class ShipOrder + * + * Save shipment and order data * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class ShipOrder implements ShipOrderInterface @@ -111,6 +113,8 @@ class ShipOrder implements ShipOrderInterface } /** + * Process the shipment and save shipment and order data + * * @param int $orderId * @param \Magento\Sales\Api\Data\ShipmentItemCreationInterface[] $items * @param bool $notify @@ -165,10 +169,13 @@ class ShipOrder implements ShipOrderInterface $connection->beginTransaction(); try { $this->orderRegistrar->register($order, $shipment); - $order->setState( - $this->orderStateResolver->getStateForOrder($order, [OrderStateResolverInterface::IN_PROGRESS]) - ); - $order->setStatus($this->config->getStateDefaultStatus($order->getState())); + $shipment = $this->shipmentRepository->save($shipment); + if ($order->getState() === Order::STATE_NEW) { + $order->setState( + $this->orderStateResolver->getStateForOrder($order, [OrderStateResolverInterface::IN_PROGRESS]) + ); + $order->setStatus($this->config->getStateDefaultStatus($order->getState())); + } $this->shipmentRepository->save($shipment); $this->orderRepository->save($order); $connection->commit(); @@ -179,6 +186,7 @@ class ShipOrder implements ShipOrderInterface __('Could not save a shipment, see error log for details') ); } + if ($notify) { if (!$appendComment) { $comment = null;