Skip to content

Commit

Permalink
magento#37028: [Sales] Missing relation data when reorder
Browse files Browse the repository at this point in the history
- fix Cyclomatic Complexity
  • Loading branch information
DanK894 committed Jul 21, 2023
1 parent 0021d70 commit c61cfe1
Showing 1 changed file with 39 additions and 13 deletions.
52 changes: 39 additions & 13 deletions app/code/Magento/Sales/Model/AdminOrder/Create.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
use Magento\Sales\Model\Order;
use Magento\Store\Model\StoreManagerInterface;
use Psr\Log\LoggerInterface;
use Magento\Quote\Model\Quote;

/**
* Order create model
Expand Down Expand Up @@ -2004,8 +2005,31 @@ public function createOrder()

$this->_prepareQuoteItems();

$orderData = $this->beforeSubmit($quote);
$order = $this->quoteManagement->submit($quote, $orderData);
$this->afterSubmit($order);

if ($this->getSendConfirmation() && !$order->getEmailSent()) {
$this->emailSender->send($order);
}

$this->_eventManager->dispatch('checkout_submit_all_after', ['order' => $order, 'quote' => $quote]);

$this->removeTransferredItems();

return $order;
}

/**
* Prepare and retrieve order data before submitting a quote for order creation.
*
* @param Quote $quote
* @return array
*/
private function beforeSubmit(Quote $quote)
{
$orderData = [];
if ($this->getSession()->getReordered() || $this->getSession()->getOrder()->getId()) { //
if ($this->getSession()->getReordered() || $this->getSession()->getOrder()->getId()) {
$oldOrder = $this->getSession()->getOrder();
$oldOrder = $oldOrder->getId() ?
$oldOrder : $this->orderRepositoryInterface->get($this->getSession()->getReordered());
Expand All @@ -2022,8 +2046,20 @@ public function createOrder()
];
$quote->setReservedOrderId($orderData['increment_id']);
}
$order = $this->quoteManagement->submit($quote, $orderData);
if ($this->getSession()->getReordered() || $this->getSession()->getOrder()->getId()) { //

return $orderData;
}

/**
* Process old order after submission.
*
* @param Order $order
* @return void
* @throws \Exception
*/
private function afterSubmit(Order $order)
{
if ($this->getSession()->getReordered() || $this->getSession()->getOrder()->getId()) {
$oldOrder = $this->getSession()->getOrder();
$oldOrder = $oldOrder->getId() ?
$oldOrder : $this->orderRepositoryInterface->get($this->getSession()->getReordered());
Expand All @@ -2035,16 +2071,6 @@ public function createOrder()
}
$order->save();
}

if ($this->getSendConfirmation() && !$order->getEmailSent()) {
$this->emailSender->send($order);
}

$this->_eventManager->dispatch('checkout_submit_all_after', ['order' => $order, 'quote' => $quote]);

$this->removeTransferredItems();

return $order;
}

/**
Expand Down

0 comments on commit c61cfe1

Please sign in to comment.