Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace VendorMassActionCancelControllerAdminhtmlInvoice;
- use MagentoFrameworkModelResourceModelDbCollectionAbstractCollection;
- use MagentoBackendAppActionContext;
- use MagentoUiComponentMassActionFilter;
- use MagentoSalesModelResourceModelOrderCollectionFactory;
- use MagentoSalesApiOrderManagementInterface;
- class CancelInvoice extends MagentoSalesControllerAdminhtmlOrderAbstractMassAction
- {
- protected $orderManagement;
- public function __construct(
- Context $context,
- Filter $filter,
- CollectionFactory $collectionFactory,
- OrderManagementInterface $orderManagement,
- MagentoFrameworkAppRequestInterface $request,
- MagentoSalesModelOrderInvoice $invoiceModel,
- MagentoFrameworkMessageManagerInterface $messageManager
- ) {
- parent::__construct($context, $filter);
- $this->collectionFactory = $collectionFactory;
- $this->orderManagement = $orderManagement;
- $this->request = $request;
- $this->invoiceModel = $invoiceModel;
- $this->messageManager = $messageManager;
- }
- protected function massAction(AbstractCollection $collection)
- {
- $invoice_not_canceled = array();
- $invoice_canceled = array();
- $itemsArray = $this->request->getPostValue('selected');
- foreach ($itemsArray as $key => $invoiceId) {
- $invoice = $this->invoiceModel->load($invoiceId);
- $order = $invoice->getOrder();
- if(!$invoice->isCanceled()){
- $invoice->cancel();
- $invoice->save();
- $order->save();
- $invoice_canceled[] = $invoiceId;
- }
- else{
- $invoice_not_canceled[] = $invoiceId;
- }
- }
- if(!empty($invoice_not_canceled)){
- $this->messageManager->addError(__('Following Invoices could not be canceled: '.implode(',', $invoice_not_canceled)));
- }
- if(!empty($invoice_canceled)){
- $this->messageManager->addSuccess(__('Following Invoices canceled: '.implode(',', $invoice_canceled)));
- }
- return $this->resultRedirectFactory->create()->setPath('sales/invoice/');
- }
- }
Add Comment
Please, Sign In to add comment