diff --git a/app/code/Magento/Sales/Block/Adminhtml/Shipment/Grid.php b/app/code/Magento/Sales/Block/Adminhtml/Shipment/Grid.php index b3e6cafccff63..560e186f61bd5 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Shipment/Grid.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Shipment/Grid.php @@ -24,200 +24,13 @@ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +namespace Magento\Sales\Block\Adminhtml\Shipment; + /** - * Adminhtml sales orders grid + * Adminhtml sales shipments grid * * @author Magento Core Team */ -namespace Magento\Sales\Block\Adminhtml\Shipment; - -class Grid extends \Magento\Backend\Block\Widget\Grid\Extended +class Grid extends \Magento\Backend\Block\Widget\Grid { - /** - * @var \Magento\Sales\Model\Resource\Order\Collection\Factory - */ - protected $_collectionFactory; - - /** - * @param \Magento\Backend\Block\Template\Context $context - * @param \Magento\Backend\Helper\Data $backendHelper - * @param \Magento\Sales\Model\Resource\Order\Collection\Factory $collectionFactory - * @param array $data - */ - public function __construct( - \Magento\Backend\Block\Template\Context $context, - \Magento\Backend\Helper\Data $backendHelper, - \Magento\Sales\Model\Resource\Order\Collection\Factory $collectionFactory, - array $data = array() - ) { - $this->_collectionFactory = $collectionFactory; - parent::__construct($context, $backendHelper, $data); - } - - - /** - * Initialization - */ - protected function _construct() - { - parent::_construct(); - $this->setId('sales_shipment_grid'); - $this->setDefaultSort('created_at'); - $this->setDefaultDir('DESC'); - } - - /** - * Retrieve collection class - * - * @return string - */ - protected function _getCollectionClass() - { - return 'Magento\Sales\Model\Resource\Order\Shipment\Grid\Collection'; - } - - /** - * Prepare and set collection of grid - * - * @return \Magento\Backend\Block\Widget\Grid\Extended - */ - protected function _prepareCollection() - { - $collection = $this->_collectionFactory->create($this->_getCollectionClass()); - $this->setCollection($collection); - return parent::_prepareCollection(); - } - - /** - * Prepare and add columns to grid - * - * @return \Magento\Backend\Block\Widget\Grid\Extended - */ - protected function _prepareColumns() - { - $this->addColumn('increment_id', array( - 'header' => __('Shipment'), - 'index' => 'increment_id', - 'type' => 'text', - 'header_css_class' => 'col-shipment-number', - 'column_css_class' => 'col-shipment-number' - )); - - $this->addColumn('created_at', array( - 'header' => __('Ship Date'), - 'index' => 'created_at', - 'type' => 'datetime', - 'header_css_class' => 'col-period', - 'column_css_class' => 'col-period' - )); - - $this->addColumn('order_increment_id', array( - 'header' => __('Order'), - 'index' => 'order_increment_id', - 'type' => 'text', - 'header_css_class' => 'col-order-number', - 'column_css_class' => 'col-order-number' - )); - - $this->addColumn('order_created_at', array( - 'header' => __('Order Date'), - 'index' => 'order_created_at', - 'type' => 'datetime', - 'header_css_class' => 'col-period', - 'column_css_class' => 'col-period' - )); - - $this->addColumn('shipping_name', array( - 'header' => __('Ship-to Name'), - 'index' => 'shipping_name', - 'header_css_class' => 'col-memo', - 'column_css_class' => 'col-memo' - )); - - $this->addColumn('total_qty', array( - 'header' => __('Total Quantity'), - 'index' => 'total_qty', - 'type' => 'number', - 'header_css_class' => 'col-qty', - 'column_css_class' => 'col-qty' - )); - - $this->addColumn('action', - array( - 'header' => __('Action'), - 'type' => 'action', - 'getter' => 'getId', - 'actions' => array( - array( - 'caption' => __('View'), - 'url' => array('base' => 'sales/shipment/view'), - 'field' => 'shipment_id' - ) - ), - 'filter' => false, - 'sortable' => false, - 'is_system' => true, - 'header_css_class' => 'col-actions', - 'column_css_class' => 'col-actions' - )); - - $this->addExportType('*/*/exportCsv', __('CSV')); - $this->addExportType('*/*/exportExcel', __('Excel XML')); - - return parent::_prepareColumns(); - } - - /** - * Get url for row - * - * @param string $row - * @return string - */ - public function getRowUrl($row) - { - if (!$this->_authorization->isAllowed(null)) { - return false; - } - - return $this->getUrl('sales/shipment/view', - array( - 'shipment_id' => $row->getId(), - ) - ); - } - - /** - * Prepare and set options for massaction - * - * @return \Magento\Sales\Block\Adminhtml\Shipment\Grid - */ - protected function _prepareMassaction() - { - $this->setMassactionIdField('entity_id'); - $this->getMassactionBlock()->setFormFieldName('shipment_ids'); - $this->getMassactionBlock()->setUseSelectAll(false); - - $this->getMassactionBlock()->addItem('pdfshipments_order', array( - 'label' => __('PDF Packing Slips'), - 'url' => $this->getUrl('sales/shipment/massPrintShipments'), - )); - - $this->getMassactionBlock()->addItem('print_shipping_label', array( - 'label' => __('Print Shipping Labels'), - 'url' => $this->getUrl('adminhtml/order_shipment/massPrintShippingLabel'), - )); - - return $this; - } - - /** - * Get url of grid - * - * @return string - */ - public function getGridUrl() - { - return $this->getUrl('sales/*/*', array('_current' => true)); - } - } diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Shipment.php b/app/code/Magento/Sales/Controller/Adminhtml/Shipment.php index 2f760b1ebcd41..6f6bd19de7170 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Shipment.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Shipment.php @@ -24,13 +24,13 @@ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +namespace Magento\Sales\Controller\Adminhtml; + /** - * Adminhtml sales orders controller + * Adminhtml sales shipment controller * * @author Magento Core Team */ -namespace Magento\Sales\Controller\Adminhtml; - class Shipment extends \Magento\Sales\Controller\Adminhtml\Shipment\AbstractShipment { /** @@ -38,9 +38,11 @@ class Shipment extends \Magento\Sales\Controller\Adminhtml\Shipment\AbstractShip */ public function exportCsvAction() { - $fileName = 'shipments.csv'; - $grid = $this->_view->getLayout()->createBlock('Magento\Sales\Block\Adminhtml\Shipment\Grid'); - return $this->_fileFactory->create($fileName, $grid->getCsvFile()); + $this->_view->loadLayout(); + $fileName = 'shipments.csv'; + /** @var \Magento\Backend\Block\Widget\Grid\ExportInterface $exportBlock */ + $exportBlock = $this->_view->getLayout()->getChildBlock('sales.shipment.grid', 'grid.export'); + return $this->_fileFactory->create($fileName, $exportBlock->getCsvFile(), \Magento\App\Filesystem::VAR_DIR); } /** @@ -48,8 +50,14 @@ public function exportCsvAction() */ public function exportExcelAction() { - $fileName = 'shipments.xml'; - $grid = $this->_view->getLayout()->createBlock('Magento\Sales\Block\Adminhtml\Shipment\Grid'); - return $this->_fileFactory->create($fileName, $grid->getExcelFile($fileName)); + $this->_view->loadLayout(); + $fileName = 'shipments.xml'; + /** @var \Magento\Backend\Block\Widget\Grid\ExportInterface $exportBlock */ + $exportBlock = $this->_view->getLayout()->getChildBlock('sales.shipment.grid', 'grid.export'); + return $this->_fileFactory->create( + $fileName, + $exportBlock->getExcelFile($fileName), + \Magento\App\Filesystem::VAR_DIR + ); } } diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment.php b/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment.php index 31e9f073de70e..d2216b4c399ba 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment.php @@ -24,13 +24,13 @@ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +namespace Magento\Sales\Controller\Adminhtml\Shipment; + /** * Adminhtml sales orders controller * * @author Magento Core Team */ -namespace Magento\Sales\Controller\Adminhtml\Shipment; - class AbstractShipment extends \Magento\Backend\App\Action { /** @@ -49,6 +49,7 @@ public function __construct( $this->_fileFactory = $fileFactory; parent::__construct($context); } + /** * Init layout, menu and breadcrumb * @@ -63,6 +64,15 @@ protected function _initAction() return $this; } + /** + * Shipments grid + */ + public function gridAction() + { + $this->_view->loadLayout(false); + $this->_view->renderLayout(); + } + /** * Shipments grid */ @@ -70,8 +80,7 @@ public function indexAction() { $this->_title->add(__('Shipments')); - $this->_initAction() - ->_addContent($this->_view->getLayout()->createBlock('Magento\Sales\Block\Adminhtml\Shipment')); + $this->_initAction(); $this->_view->renderLayout(); } diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportcsv.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportcsv.xml new file mode 100644 index 0000000000000..f77ae19aa69a0 --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportcsv.xml @@ -0,0 +1,29 @@ + + + + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportexcel.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportexcel.xml new file mode 100644 index 0000000000000..f77ae19aa69a0 --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportexcel.xml @@ -0,0 +1,29 @@ + + + + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid.xml new file mode 100644 index 0000000000000..f5514b87121cd --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid.xml @@ -0,0 +1,30 @@ + + + + + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid_block.xml new file mode 100644 index 0000000000000..9bcb5d5e930f7 --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid_block.xml @@ -0,0 +1,168 @@ + + + + + + + sales_shipment_grid + Magento\Sales\Model\Resource\Order\Shipment\Grid\Collection + true + created_at + DESC + 1 + + 1 + + + + + entity_id + shipment_ids + 0 + + Magento\Sales\Model\Grid\Massaction\ItemsUpdater + + Print Packing Slips + sales/shipment/massPrintShipments + + + Print Shipping Labels + adminhtml/order_shipment/massPrintShippingLabel + + + + + + + + + */*/exportCsv + CSV + + + */*/exportExcel + Excel XML + + + + + + + sales_shipment_grid + + Magento\Sales\Model\Grid\Row\UrlGenerator + sales/shipment/view + + getId + + + + + + Shipment + text + increment_id + real_shipment_id + col-shipment-number + col-shipment-number + + + + + Ship Date + datetime + created_at + created_at + col-period + col-period + + + + + Order + text + order_increment_id + order_increment_id + col-order-number + col-order-number + + + + + Order Date + datetime + order_created_at + order_created_at + col-period + col-period + + + + + shipping_name + Ship-to Name + billing_name + col-ship-to-name + col-ship-to-name + + + + + total_qty + Total Quantity + number + total_qty + col-qty + col-qty + + + + + + action + Action + action + getId + 0 + 0 + 1 + + + View + + sales/shipment/view + + shipment_id + + + col-actions + col-actions + + + + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_index.xml new file mode 100644 index 0000000000000..1380180f1f97b --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_index.xml @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment.php b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment.php index 3ea830b4f8e44..8460e6a6c5834 100644 --- a/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment.php +++ b/app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment.php @@ -660,7 +660,7 @@ public function massPrintShippingLabelAction() $this->_redirect('sales/order/index'); } else { $this->messageManager->addError(__('There are no shipping labels related to selected shipments.')); - $this->_redirect('adminhtml/order_shipment/index'); + $this->_redirect('sales/shipment/index'); } }