Files
stemcell/app/code/Stemcell/Sales/Controller/Adminhtml/Order/Reject.php
T
2026-09-15 10:26:34 +08:00

74 lines
2.9 KiB
PHP

<?php
namespace Stemcell\Sales\Controller\Adminhtml\Order;
use Magento\Backend\App\Action;
use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface;
use Magento\Framework\App\Response\Http\FileFactory;
use Magento\Framework\Controller\Result\JsonFactory;
use Magento\Framework\Controller\Result\RawFactory;
use Magento\Framework\Registry;
use Magento\Framework\Translate\InlineInterface;
use Magento\Framework\View\Result\LayoutFactory;
use Magento\Framework\View\Result\PageFactory;
use Magento\Sales\Api\OrderManagementInterface;
use Magento\Sales\Api\OrderRepositoryInterface;
use Magento\Sales\Model\Order;
use Psr\Log\LoggerInterface;
use Stemcell\Sales\Model\OrderStatus;
class Reject extends \Magento\Sales\Controller\Adminhtml\Order implements HttpPostActionInterface
{
const STATUS = 'rejected';
public function __construct(
Action\Context $context,
Registry $coreRegistry,
FileFactory $fileFactory,
InlineInterface $translateInline,
PageFactory $resultPageFactory,
JsonFactory $resultJsonFactory,
LayoutFactory $resultLayoutFactory,
RawFactory $resultRawFactory,
OrderManagementInterface $orderManagement,
OrderRepositoryInterface $orderRepository,
LoggerInterface $logger
)
{
parent::__construct($context, $coreRegistry, $fileFactory, $translateInline, $resultPageFactory, $resultJsonFactory, $resultLayoutFactory, $resultRawFactory, $orderManagement, $orderRepository, $logger);
}
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
if (!$this->isValidPostRequest()) {
$this->messageManager->addErrorMessage(__('订单驳回失败.'));
return $resultRedirect->setPath('sales/*/');
}
$order = $this->_initOrder();
if ($order) {
try {
$this->orderManagement->setState(
$order,
Order::STATE_CANCELED,
false,
'',
null,
false
);
$order->addCommentToStatusHistory($this->getRequest()->getPost('reason'),OrderStatus::rejected->name, true);
$this->orderRepository->save($order);
$this->messageManager->addSuccessMessage(__('订单已驳回.'));
} catch (\Magento\Framework\Exception\LocalizedException $e) {
$this->messageManager->addErrorMessage($e->getMessage());
} catch (\Exception $e) {
$this->messageManager->addErrorMessage(__('订单驳回失败'));
$this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);
}
return $resultRedirect->setPath('sales/order/view', ['order_id' => $order->getId()]);
}
return $resultRedirect->setPath('sales/*/');
}
}