Guest User

Untitled

a guest
Dec 13th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. <?php
  2.  
  3. namespace VendorMassActionCancelControllerAdminhtmlInvoice;
  4.  
  5. use MagentoFrameworkModelResourceModelDbCollectionAbstractCollection;
  6. use MagentoBackendAppActionContext;
  7. use MagentoUiComponentMassActionFilter;
  8. use MagentoSalesModelResourceModelOrderCollectionFactory;
  9. use MagentoSalesApiOrderManagementInterface;
  10.  
  11. class CancelInvoice extends MagentoSalesControllerAdminhtmlOrderAbstractMassAction
  12. {
  13.  
  14. protected $orderManagement;
  15.  
  16. public function __construct(
  17. Context $context,
  18. Filter $filter,
  19. CollectionFactory $collectionFactory,
  20. OrderManagementInterface $orderManagement,
  21. MagentoFrameworkAppRequestInterface $request,
  22. MagentoSalesModelOrderInvoice $invoiceModel,
  23. MagentoFrameworkMessageManagerInterface $messageManager
  24. ) {
  25. parent::__construct($context, $filter);
  26. $this->collectionFactory = $collectionFactory;
  27. $this->orderManagement = $orderManagement;
  28. $this->request = $request;
  29. $this->invoiceModel = $invoiceModel;
  30. $this->messageManager = $messageManager;
  31. }
  32.  
  33. protected function massAction(AbstractCollection $collection)
  34. {
  35. $invoice_not_canceled = array();
  36. $invoice_canceled = array();
  37. $itemsArray = $this->request->getPostValue('selected');
  38. foreach ($itemsArray as $key => $invoiceId) {
  39. $invoice = $this->invoiceModel->load($invoiceId);
  40. $order = $invoice->getOrder();
  41. if(!$invoice->isCanceled()){
  42. $invoice->cancel();
  43. $invoice->save();
  44. $order->save();
  45. $invoice_canceled[] = $invoiceId;
  46. }
  47. else{
  48. $invoice_not_canceled[] = $invoiceId;
  49. }
  50. }
  51. if(!empty($invoice_not_canceled)){
  52. $this->messageManager->addError(__('Following Invoices could not be canceled: '.implode(',', $invoice_not_canceled)));
  53. }
  54. if(!empty($invoice_canceled)){
  55. $this->messageManager->addSuccess(__('Following Invoices canceled: '.implode(',', $invoice_canceled)));
  56. }
  57. return $this->resultRedirectFactory->create()->setPath('sales/invoice/');
  58. }
  59. }
Add Comment
Please, Sign In to add comment