diff --git a/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php b/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php new file mode 100644 index 000000000000..3a5875fd1a0f --- /dev/null +++ b/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php @@ -0,0 +1,93 @@ +request = $request; + $this->urlBuilder = $urlBuilder; + $this->confirmationMessage = $confirmationMessage; + $this->idFieldName = $idFieldName; + $this->deleteRoutePath = $deleteRoutePath; + $this->sortOrder = $sortOrder; + } + + /** + * {@inheritdoc} + */ + public function getButtonData() + { + $data = []; + $id = $this->request->getParam($this->idFieldName); + if (null !== $id) { + $url = $this->urlBuilder->getUrl($this->deleteRoutePath); + $data = [ + 'label' => __('Delete'), + 'class' => 'delete', + 'on_click' => + "deleteConfirm('{$this->confirmationMessage}', '{$url}', {data:{{$this->idFieldName}:{$id}}})", + 'sort_order' => $this->sortOrder, + ]; + } + return $data; + } +} diff --git a/app/code/Magento/Inventory/Controller/Adminhtml/Stock/Delete.php b/app/code/Magento/Inventory/Controller/Adminhtml/Stock/Delete.php new file mode 100644 index 000000000000..1f916618f0e4 --- /dev/null +++ b/app/code/Magento/Inventory/Controller/Adminhtml/Stock/Delete.php @@ -0,0 +1,71 @@ +stockRepository = $stockRepository; + } + + /** + * @inheritdoc + */ + public function execute() + { + $resultRedirect = $this->resultRedirectFactory->create(); + + $stockId = $this->getRequest()->getPost(StockInterface::STOCK_ID); + if ($stockId === null) { + $this->messageManager->addErrorMessage(__('Wrong request.')); + return $resultRedirect->setPath('*/*'); + } + + try { + $this->stockRepository->deleteById($stockId); + $this->messageManager->addSuccessMessage(__('The Stock has been deleted.')); + $resultRedirect->setPath('*/*'); + } catch (NoSuchEntityException $e) { + $this->messageManager->addErrorMessage(__('Stock with id "%1" does not exist.', $stockId)); + $resultRedirect->setPath('*/*'); + } catch (CouldNotDeleteException $e) { + $this->messageManager->addErrorMessage($e->getMessage()); + $resultRedirect->setPath('*/*/edit', [ + StockInterface::STOCK_ID => $stockId, + '_current' => true, + ]); + } + return $resultRedirect; + } +} diff --git a/app/code/Magento/Inventory/Controller/Adminhtml/Stock/MassDelete.php b/app/code/Magento/Inventory/Controller/Adminhtml/Stock/MassDelete.php new file mode 100644 index 000000000000..6fd7dd45f7b0 --- /dev/null +++ b/app/code/Magento/Inventory/Controller/Adminhtml/Stock/MassDelete.php @@ -0,0 +1,73 @@ +stockRepository = $stockRepository; + $this->massActionFilter = $massActionFilter; + } + + /** + * @inheritdoc + */ + public function execute() + { + if ($this->getRequest()->isPost() !== true) { + $this->messageManager->addErrorMessage(__('Wrong request.')); + return $this->resultRedirectFactory->create()->setPath('*/*'); + } + + $deletedItemsCount = 0; + foreach ($this->massActionFilter->getIds() as $id) { + try { + $this->stockRepository->deleteById($id); + $deletedItemsCount++; + } catch (CouldNotDeleteException $e) { + $errorMessage = __('[ID: %1] ', $id) . $e->getMessage(); + $this->messageManager->addErrorMessage($errorMessage); + } + } + $this->messageManager->addSuccessMessage(__('You deleted %1 Stock(s).', $deletedItemsCount)); + + return $this->resultRedirectFactory->create()->setPath('*/*'); + } +} diff --git a/app/code/Magento/Inventory/Ui/Component/MassAction/Filter.php b/app/code/Magento/Inventory/Ui/Component/MassAction/Filter.php new file mode 100644 index 000000000000..c3d6133bb71e --- /dev/null +++ b/app/code/Magento/Inventory/Ui/Component/MassAction/Filter.php @@ -0,0 +1,48 @@ +filter = $filter; + } + + /** + * Get ids from search filter + * + * @return array + */ + public function getIds() + { + $this->filter->applySelectionOnTargetProvider(); + $component = $this->filter->getComponent(); + $dataProvider = $component->getContext()->getDataProvider(); + $searchResult = $dataProvider->getSearchResult(); + + return array_map(function (DocumentInterface $item) { + return $item->getId(); + }, $searchResult->getItems()); + } +} diff --git a/app/code/Magento/Inventory/etc/adminhtml/di.xml b/app/code/Magento/Inventory/etc/adminhtml/di.xml index 1d929d98399f..44ee631ed0bf 100644 --- a/app/code/Magento/Inventory/etc/adminhtml/di.xml +++ b/app/code/Magento/Inventory/etc/adminhtml/di.xml @@ -17,6 +17,14 @@ inventory_stock_form.inventory_stock_form + + + Are you sure you want to delete this stock? + Magento\InventoryApi\Api\Data\StockInterface::STOCK_ID + */*/delete + 30 + + diff --git a/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_form.xml b/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_form.xml index 8fd88706bcdd..50e3b47b127a 100644 --- a/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_form.xml +++ b/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_form.xml @@ -29,6 +29,7 @@ reset +