Files
ltsecurityinc/app/code/Caratlane/NetSuite/Controller/Adminhtml/Order/PushNetSuite.php
T

77 lines
2.5 KiB
PHP
Executable File

<?php
/**
* @author 18th DigiTech Team
* @copyright Copyright (c) 2020 18th DigiTech (https://www.18thdigitech.com)
* @package Caratlane_NetSuite
*/
namespace Caratlane\NetSuite\Controller\Adminhtml\Order;
use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
use Magento\Backend\App\Action\Context;
use Magento\Ui\Component\MassAction\Filter;
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
use Magento\Sales\Api\OrderManagementInterface;
class PushNetSuite extends \Magento\Sales\Controller\Adminhtml\Order\AbstractMassAction
{
/**
* @var OrderManagementInterface
*/
protected $orderManagement;
/**
* @param Context $context
* @param Filter $filter
* @param CollectionFactory $collectionFactory
* @param OrderManagementInterface $orderManagement
* @param \Caratlane\NetSuite\Model\NetSuiteFactory $netsuitefactory
*/
public function __construct(
Context $context,
Filter $filter,
CollectionFactory $collectionFactory,
\Caratlane\NetSuite\Model\NetSuiteFactory $netsuitefactory
) {
parent::__construct($context, $filter);
$this->collectionFactory = $collectionFactory;
$this->netsuitefactory = $netsuitefactory;
}
/**
* Hold selected orders
*
* @param AbstractCollection $collection
* @return \Magento\Backend\Model\View\Result\Redirect
*/
protected function massAction(AbstractCollection $collection)
{
$countOrder = 0;
foreach ($collection->getItems() as $order) {
if (!$order->getEntityId()) {
continue;
}
$order->setNetsuiteMaxAttempt(0);
$order->setPushToNetsuite(0);
$order->setNetsuiteCreatedAt(null);
$order->setNetsuiteId(null);
$order->save();
$countOrder++;
}
$countNonPushOrder = $collection->count() - $countOrder;
if ($countNonPushOrder && $countOrder) {
$this->messageManager->addError(__('%1 order(s) were not pushed to NetSuite.', $countNonPushOrder));
} elseif ($countNonPushOrder) {
$this->messageManager->addError(__('No order(s) were reset to NetSuite.'));
}
if ($countOrder) {
$this->messageManager->addSuccess(__('Reset %1 order(s) for NetSuite orders.', $countOrder));
}
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath($this->getComponentRefererUrl());
return $resultRedirect;
}
}