123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Backend\Block\Dashboard\Orders;
- /**
- * Adminhtml dashboard recent orders grid
- *
- * @author Magento Core Team <core@magentocommerce.com>
- * @SuppressWarnings(PHPMD.DepthOfInheritance)
- */
- class Grid extends \Magento\Backend\Block\Dashboard\Grid
- {
- /**
- * @var \Magento\Reports\Model\ResourceModel\Order\CollectionFactory
- */
- protected $_collectionFactory;
- /**
- * @var \Magento\Framework\Module\Manager
- */
- protected $_moduleManager;
- /**
- * @param \Magento\Backend\Block\Template\Context $context
- * @param \Magento\Backend\Helper\Data $backendHelper
- * @param \Magento\Framework\Module\Manager $moduleManager
- * @param \Magento\Reports\Model\ResourceModel\Order\CollectionFactory $collectionFactory
- * @param array $data
- */
- public function __construct(
- \Magento\Backend\Block\Template\Context $context,
- \Magento\Backend\Helper\Data $backendHelper,
- \Magento\Framework\Module\Manager $moduleManager,
- \Magento\Reports\Model\ResourceModel\Order\CollectionFactory $collectionFactory,
- array $data = []
- ) {
- $this->_moduleManager = $moduleManager;
- $this->_collectionFactory = $collectionFactory;
- parent::__construct($context, $backendHelper, $data);
- }
- /**
- * @return void
- */
- protected function _construct()
- {
- parent::_construct();
- $this->setId('lastOrdersGrid');
- }
- /**
- * @return $this
- */
- protected function _prepareCollection()
- {
- if (!$this->_moduleManager->isEnabled('Magento_Reports')) {
- return $this;
- }
- $collection = $this->_collectionFactory->create()->addItemCountExpr()->joinCustomerName(
- 'customer'
- )->orderByCreatedAt();
- if ($this->getParam('store') || $this->getParam('website') || $this->getParam('group')) {
- if ($this->getParam('store')) {
- $collection->addAttributeToFilter('store_id', $this->getParam('store'));
- } elseif ($this->getParam('website')) {
- $storeIds = $this->_storeManager->getWebsite($this->getParam('website'))->getStoreIds();
- $collection->addAttributeToFilter('store_id', ['in' => $storeIds]);
- } elseif ($this->getParam('group')) {
- $storeIds = $this->_storeManager->getGroup($this->getParam('group'))->getStoreIds();
- $collection->addAttributeToFilter('store_id', ['in' => $storeIds]);
- }
- $collection->addRevenueToSelect();
- } else {
- $collection->addRevenueToSelect(true);
- }
- $this->setCollection($collection);
- return parent::_prepareCollection();
- }
- /**
- * Process collection after loading
- *
- * @return $this
- */
- protected function _afterLoadCollection()
- {
- foreach ($this->getCollection() as $item) {
- $item->getCustomer() ?: $item->setCustomer($item->getBillingAddress()->getName());
- }
- return $this;
- }
- /**
- * Prepares page sizes for dashboard grid with las 5 orders
- *
- * @return void
- */
- protected function _preparePage()
- {
- $this->getCollection()->setPageSize($this->getParam($this->getVarNameLimit(), $this->_defaultLimit));
- // Remove count of total orders
- // $this->getCollection()->setCurPage($this->getParam($this->getVarNamePage(), $this->_defaultPage));
- }
- /**
- * @return $this
- */
- protected function _prepareColumns()
- {
- $this->addColumn(
- 'customer',
- ['header' => __('Customer'), 'sortable' => false, 'index' => 'customer', 'default' => __('Guest')]
- );
- $this->addColumn(
- 'items',
- [
- 'header' => __('Items'),
- 'type' => 'number',
- 'sortable' => false,
- 'index' => 'items_count'
- ]
- );
- $baseCurrencyCode = $this->_storeManager->getStore((int)$this->getParam('store'))->getBaseCurrencyCode();
- $this->addColumn(
- 'total',
- [
- 'header' => __('Total'),
- 'sortable' => false,
- 'type' => 'currency',
- 'currency_code' => $baseCurrencyCode,
- 'index' => 'revenue'
- ]
- );
- $this->setFilterVisibility(false);
- $this->setPagerVisibility(false);
- return parent::_prepareColumns();
- }
- /**
- * {@inheritdoc}
- */
- public function getRowUrl($row)
- {
- return $this->getUrl('sales/order/view', ['order_id' => $row->getId()]);
- }
- }
|