Skip to content

Commit

Permalink
ENGCOM-4520: Root exception not logged on QuoteManagement::submitQuote
Browse files Browse the repository at this point in the history
  • Loading branch information
sidolov committed Mar 26, 2019
2 parents bcf3358 + 62f3955 commit dd4c0a3
Showing 1 changed file with 38 additions and 13 deletions.
51 changes: 38 additions & 13 deletions app/code/Magento/Quote/Model/QuoteManagement.php
Expand Up @@ -532,19 +532,7 @@ protected function submitQuote(QuoteEntity $quote, $orderData = [])
);
$this->quoteRepository->save($quote);
} catch (\Exception $e) {
if (!empty($this->addressesToSync)) {
foreach ($this->addressesToSync as $addressId) {
$this->addressRepository->deleteById($addressId);
}
}
$this->eventManager->dispatch(
'sales_model_service_quote_submit_failure',
[
'order' => $order,
'quote' => $quote,
'exception' => $e
]
);
$this->rollbackAddresses($quote, $order, $e);
throw $e;
}
return $order;
Expand Down Expand Up @@ -611,4 +599,41 @@ protected function _prepareCustomerQuote($quote)
$shipping->setIsDefaultBilling(true);
}
}

/**
* Remove related to order and quote addresses and submit exception to further processing.
*
* @param Quote $quote
* @param \Magento\Sales\Api\Data\OrderInterface $order
* @param \Exception $e
* @throws \Exception
*/
private function rollbackAddresses(
QuoteEntity $quote,
\Magento\Sales\Api\Data\OrderInterface $order,
\Exception $e
): void {
try {
if (!empty($this->addressesToSync)) {
foreach ($this->addressesToSync as $addressId) {
$this->addressRepository->deleteById($addressId);
}
}
$this->eventManager->dispatch(
'sales_model_service_quote_submit_failure',
[
'order' => $order,
'quote' => $quote,
'exception' => $e,
]
);
} catch (\Exception $consecutiveException) {
$message = sprintf(
"An exception occurred on 'sales_model_service_quote_submit_failure' event: %s",
$consecutiveException->getMessage()
);

throw new \Exception($message, 0, $e);
}
}
}

0 comments on commit dd4c0a3

Please sign in to comment.