diff --git a/app/code/Magento/Payment/Model/Resource/Grid/GroupsArray.php b/app/code/Magento/Payment/Model/Resource/Grid/GroupsArray.php new file mode 100644 index 0000000000000..b8cdce504a61a --- /dev/null +++ b/app/code/Magento/Payment/Model/Resource/Grid/GroupsArray.php @@ -0,0 +1,58 @@ +_paymentData = $paymentData; + } + + /** + * Return option array + * + * @return array + */ + public function toOptionArray() + { + return $this->_paymentData->getPaymentMethodList(true, true, true); + } +} diff --git a/app/code/Magento/Payment/Model/Resource/Grid/TypesArray.php b/app/code/Magento/Payment/Model/Resource/Grid/TypesArray.php new file mode 100644 index 0000000000000..f3faf71a1fae3 --- /dev/null +++ b/app/code/Magento/Payment/Model/Resource/Grid/TypesArray.php @@ -0,0 +1,58 @@ +_paymentData = $paymentData; + } + + /** + * Return option array + * + * @return array + */ + public function toOptionArray() + { + return $this->_paymentData->getPaymentMethodList(true); + } +} diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/View/Tab/Transactions.php b/app/code/Magento/Sales/Block/Adminhtml/Order/View/Tab/Transactions.php index 28fca4b12bfc6..fab1714144f07 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Order/View/Tab/Transactions.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Order/View/Tab/Transactions.php @@ -34,34 +34,60 @@ namespace Magento\Sales\Block\Adminhtml\Order\View\Tab; class Transactions - extends \Magento\Sales\Block\Adminhtml\Transactions\Grid + extends \Magento\View\Element\Text\ListText implements \Magento\Backend\Block\Widget\Tab\TabInterface { + /** + * @var \Magento\AuthorizationInterface + */ + protected $_authorization; /** - * Retrieve grid url - * - * @return string + * @param \Magento\View\Element\Context $context + * @param \Magento\AuthorizationInterface $authorization + * @param array $data */ - public function getGridUrl() - { - return $this->getUrl('sales/order/transactions', array('_current' => true)); + public function __construct( + \Magento\View\Element\Context $context, + \Magento\AuthorizationInterface $authorization, + array $data = array() + ) { + $this->_authorization = $authorization; + parent::__construct($context, $data); } +// /** +// * Retrieve grid url +// * +// * @return string +// */ +// public function getGridUrl() +// { +// return $this->getUrl('sales/order/transactions', array('_current' => true)); +// } +// +// /** +// * Retrieve grid row url +// * +// * @return string +// */ +// public function getRowUrl($item) +// { +// return $this->getUrl('sales/transactions/view', array('_current' => true, 'txn_id' => $item->getId())); +// } + /** - * Retrieve grid row url - * - * @return string + * Initialize grid params */ - public function getRowUrl($item) + protected function _construct() { - return $this->getUrl('sales/transactions/view', array('_current' => true, 'txn_id' => $item->getId())); + parent::_construct(); + $this->setId('order_transactions'); + $this->setUseAjax(true); } /** - * Retrieve tab label - * - * @return string + * {@inheritdoc} */ public function getTabLabel() { @@ -69,9 +95,7 @@ public function getTabLabel() } /** - * Retrieve tab title - * - * @return string + * {@inheritdoc} */ public function getTabTitle() { @@ -79,9 +103,7 @@ public function getTabTitle() } /** - * Check whether can show tab - * - * @return bool + * {@inheritdoc} */ public function canShowTab() { @@ -89,9 +111,7 @@ public function canShowTab() } /** - * Check whether tab is hidden - * - * @return bool + * {@inheritdoc} */ public function isHidden() { diff --git a/app/code/Magento/Sales/Block/Adminhtml/Transactions/Grid.php b/app/code/Magento/Sales/Block/Adminhtml/Transactions/Grid.php index de7195575f2f7..ec51e42858bf2 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Transactions/Grid.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Transactions/Grid.php @@ -24,206 +24,14 @@ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +namespace Magento\Sales\Block\Adminhtml\Transactions; + /** - * Adminhtml transactions grid + * Adminhtml sales transactions grid * - * @category Magento - * @package Magento_Sales - * @author Magento Core Team + * @author Magento Core Team */ -namespace Magento\Sales\Block\Adminhtml\Transactions; - -class Grid extends \Magento\Backend\Block\Widget\Grid\Extended +class Grid extends \Magento\Backend\Block\Widget\Grid { - /** - * Core registry - * - * @var \Magento\Core\Model\Registry - */ - protected $_coreRegistry = null; - - /** - * Payment data - * - * @var \Magento\Payment\Helper\Data - */ - protected $_paymentData = null; - - /** - * @var \Magento\Sales\Model\Order\Payment\Transaction - */ - protected $_transaction; - - /** - * @var \Magento\Sales\Model\Resource\Order\Payment\Transaction\CollectionFactory - */ - protected $_collectionFactory; - - /** - * @param \Magento\Backend\Block\Template\Context $context - * @param \Magento\Backend\Helper\Data $backendHelper - * @param \Magento\Sales\Model\Order\Payment\Transaction $transaction - * @param \Magento\Sales\Model\Resource\Order\Payment\Transaction\CollectionFactory $collectionFactory - * @param \Magento\Payment\Helper\Data $paymentData - * @param \Magento\Core\Model\Registry $coreRegistry - * @param array $data - */ - public function __construct( - \Magento\Backend\Block\Template\Context $context, - \Magento\Backend\Helper\Data $backendHelper, - \Magento\Sales\Model\Order\Payment\Transaction $transaction, - \Magento\Sales\Model\Resource\Order\Payment\Transaction\CollectionFactory $collectionFactory, - \Magento\Payment\Helper\Data $paymentData, - \Magento\Core\Model\Registry $coreRegistry, - array $data = array() - ) { - $this->_coreRegistry = $coreRegistry; - $this->_paymentData = $paymentData; - $this->_transaction = $transaction; - $this->_collectionFactory = $collectionFactory; - parent::__construct($context, $backendHelper, $data); - } - - /** - * Set grid params - * - */ - protected function _construct() - { - parent::_construct(); - $this->setId('order_transactions'); - $this->setUseAjax(true); - $this->setDefaultSort('created_at'); - $this->setDefaultDir('DESC'); - $this->setSaveParametersInSession(true); - } - - /** - * Prepare collection for grid - * - * @return \Magento\Backend\Block\Widget\Grid\Extended - */ - protected function _prepareCollection() - { - $collection = $this->getCollection(); - if (!$collection) { - $collection = $this->_collectionFactory->create(); - } - $order = $this->_coreRegistry->registry('current_order'); - if ($order) { - $collection->addOrderIdFilter($order->getId()); - } - $collection->addOrderInformation(array('increment_id')); - $collection->addPaymentInformation(array('method')); - $this->setCollection($collection); - return parent::_prepareCollection(); - } - - /** - * Add columns to grid - * - * @return \Magento\Backend\Block\Widget\Grid\Extended - */ - protected function _prepareColumns() - { - $this->addColumn('transaction_id', array( - 'header' => __('ID'), - 'index' => 'transaction_id', - 'type' => 'number', - 'header_css_class' => 'col-id', - 'column_css_class' => 'col-id' - )); - - $this->addColumn('increment_id', array( - 'header' => __('Order ID'), - 'index' => 'increment_id', - 'type' => 'text', - 'header_css_class' => 'col-order-id', - 'column_css_class' => 'col-order-id' - )); - - $this->addColumn('txn_id', array( - 'header' => __('Transaction ID'), - 'index' => 'txn_id', - 'type' => 'text', - 'header_css_class' => 'col-transaction-id', - 'column_css_class' => 'col-transaction-id' - )); - - $this->addColumn('parent_txn_id', array( - 'header' => __('Parent Transaction ID'), - 'index' => 'parent_txn_id', - 'type' => 'text', - 'header_css_class' => 'col-parent-transaction-id', - 'column_css_class' => 'col-parent-transaction-id' - )); - - $this->addColumn('method', array( - 'header' => __('Payment Method'), - 'index' => 'method', - 'type' => 'options', - 'options' => $this->_paymentData->getPaymentMethodList(true), - 'option_groups' => $this->_paymentData->getPaymentMethodList(true, true, true), - 'header_css_class' => 'col-method', - 'column_css_class' => 'col-method' - )); - - $this->addColumn('txn_type', array( - 'header' => __('Transaction Type'), - 'index' => 'txn_type', - 'type' => 'options', - 'options' => $this->_transaction->getTransactionTypes(), - 'header_css_class' => 'col-transaction-type', - 'column_css_class' => 'col-transaction-type' - )); - - $this->addColumn('is_closed', array( - 'header' => __('Closed'), - 'index' => 'is_closed', - 'width' => 1, - 'type' => 'options', - 'align' => 'center', - 'options' => array( - 1 => __('Yes'), - 0 => __('No'), - ), - 'header_css_class' => 'col-closed', - 'column_css_class' => 'col-closed' - )); - - $this->addColumn('created_at', array( - 'header' => __('Created'), - 'index' => 'created_at', - 'width' => 1, - 'type' => 'datetime', - 'align' => 'center', - 'default' => __('N/A'), - 'html_decorators' => array('nobr'), - 'header_css_class' => 'col-period', - 'column_css_class' => 'col-period' - )); - - return parent::_prepareColumns(); - } - - /** - * Retrieve grid url - * - * @return string - */ - public function getGridUrl() - { - return $this->getUrl('sales/*/grid', array('_current' => true)); - } - - /** - * Retrieve row url - * - * @param $item - * @return string - */ - public function getRowUrl($item) - { - return $this->getUrl('sales/*/view', array('txn_id' => $item->getId())); - } } + diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Transactions.php b/app/code/Magento/Sales/Controller/Adminhtml/Transactions.php index 6b4c60e11e752..8d113a493986c 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Transactions.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Transactions.php @@ -24,15 +24,15 @@ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +namespace Magento\Sales\Controller\Adminhtml; + +use Magento\Backend\App\Action; + /** * Adminhtml sales transactions controller * * @author Magento Core Team */ -namespace Magento\Sales\Controller\Adminhtml; - -use Magento\Backend\App\Action; - class Transactions extends \Magento\Backend\App\Action { /** @@ -42,15 +42,23 @@ class Transactions extends \Magento\Backend\App\Action */ protected $_coreRegistry = null; + /** + * @var \Magento\App\Response\Http\FileFactory + */ + protected $_fileFactory; + /** * @param \Magento\Backend\App\Action\Context $context * @param \Magento\Core\Model\Registry $coreRegistry + * @param \Magento\App\Response\Http\FileFactory $fileFactory */ public function __construct( \Magento\Backend\App\Action\Context $context, - \Magento\Core\Model\Registry $coreRegistry + \Magento\Core\Model\Registry $coreRegistry, + \Magento\App\Response\Http\FileFactory $fileFactory ) { $this->_coreRegistry = $coreRegistry; + $this->_fileFactory = $fileFactory; parent::__construct($context); } @@ -156,4 +164,32 @@ protected function _isAllowed() break; } } + + /** + * Export transaction grid to CSV format + */ + public function exportCsvAction() + { + $this->_view->loadLayout(); + $fileName = 'transactions.csv'; + /** @var \Magento\Backend\Block\Widget\Grid\ExportInterface $exportBlock */ + $exportBlock = $this->_view->getLayout()->getChildBlock('sales.transactions.grid', 'grid.export'); + return $this->_fileFactory->create($fileName, $exportBlock->getCsvFile(), \Magento\App\Filesystem::VAR_DIR); + } + + /** + * Export transaction grid to Excel XML format + */ + public function exportExcelAction() + { + $this->_view->loadLayout(); + $fileName = 'transactions.xml'; + /** @var \Magento\Backend\Block\Widget\Grid\ExportInterface $exportBlock */ + $exportBlock = $this->_view->getLayout()->getChildBlock('sales.transactions.grid', 'grid.export'); + return $this->_fileFactory->create( + $fileName, + $exportBlock->getExcelFile($fileName), + \Magento\App\Filesystem::VAR_DIR + ); + } } diff --git a/app/code/Magento/Sales/Model/Order/TransactionsUpdater.php b/app/code/Magento/Sales/Model/Order/TransactionsUpdater.php new file mode 100644 index 0000000000000..f0116f8927248 --- /dev/null +++ b/app/code/Magento/Sales/Model/Order/TransactionsUpdater.php @@ -0,0 +1,71 @@ +_registryManager = $registryManager; + } + + /** + * Add order filter + * + * @param \Magento\Sales\Model\Resource\Order\Transaction\Grid\Collection $argument + * @return mixed + * @throws \DomainException + */ + public function update($argument) + { +// $order = $this->_coreRegistry->registry('current_order'); +// if ($order) { +// $collection->addOrderIdFilter($order->getId()); +// } + + + $order = $this->_registryManager->registry('current_order'); + + if (!$order) { + throw new \DomainException('Undefined order object'); + } + + $argument->setOrderFilter($order->getId()); + return $argument; + } +} diff --git a/app/code/Magento/Sales/Model/Resource/Order/Payment/Transaction/Collection.php b/app/code/Magento/Sales/Model/Resource/Order/Payment/Transaction/Collection.php index a3e2e348d5ad2..1fa5a513ae321 100644 --- a/app/code/Magento/Sales/Model/Resource/Order/Payment/Transaction/Collection.php +++ b/app/code/Magento/Sales/Model/Resource/Order/Payment/Transaction/Collection.php @@ -201,9 +201,9 @@ public function addStoreFilter($storeIds) * * @return \Magento\Sales\Model\Resource\Order\Payment\Transaction\Collection */ - protected function _beforeLoad() + protected function _renderFilters() { - parent::_beforeLoad(); + parent::_renderFilters(); if ($this->isLoaded()) { return $this; diff --git a/app/code/Magento/Sales/Model/Resource/Order/Shipment/Collection.php b/app/code/Magento/Sales/Model/Resource/Order/Shipment/Collection.php index 78e8d0a2405c7..c580d1ac9c1ae 100644 --- a/app/code/Magento/Sales/Model/Resource/Order/Shipment/Collection.php +++ b/app/code/Magento/Sales/Model/Resource/Order/Shipment/Collection.php @@ -25,15 +25,15 @@ */ +namespace Magento\Sales\Model\Resource\Order\Shipment; + /** - * Flat sales order shipment collection + * Sales order shipment collection * * @category Magento * @package Magento_Sales * @author Magento Core Team */ -namespace Magento\Sales\Model\Resource\Order\Shipment; - class Collection extends \Magento\Sales\Model\Resource\Order\Collection\AbstractCollection { /** diff --git a/app/code/Magento/Sales/Model/Resource/Order/Transaction/Grid/Collection.php b/app/code/Magento/Sales/Model/Resource/Order/Transaction/Grid/Collection.php new file mode 100644 index 0000000000000..8e99543e6b671 --- /dev/null +++ b/app/code/Magento/Sales/Model/Resource/Order/Transaction/Grid/Collection.php @@ -0,0 +1,83 @@ + + */ +namespace Magento\Sales\Model\Resource\Order\Transaction\Grid; + +class Collection extends \Magento\Sales\Model\Resource\Order\Payment\Transaction\Collection +{ + /** + * Event prefix + * + * @var string + */ + protected $_eventPrefix = 'sales_order_transaction_collection'; + + /** + * Event object + * + * @var string + */ + protected $_eventObject = 'order_transaction_collection'; + + /** + * Order field for setOrderFilter + * + * @var string + */ + protected $_orderField = 'order_id'; + + /** + * Model initialization + * + */ + protected function _construct() + { + parent::_construct(); + + $this->addOrderInformation(array('increment_id')); + $this->addPaymentInformation(array('method')); + } + + /** + * Used to emulate after load functionality for each item without loading them + * + * @return \Magento\Sales\Model\Resource\Order\Transaction\Grid\Collection + */ + protected function _afterLoad() + { + $this->walk('afterLoad'); + + return $this; + } +} diff --git a/app/code/Magento/Sales/Model/Resource/Transaction/Grid/TypesArray.php b/app/code/Magento/Sales/Model/Resource/Transaction/Grid/TypesArray.php new file mode 100644 index 0000000000000..b7099da5a60e5 --- /dev/null +++ b/app/code/Magento/Sales/Model/Resource/Transaction/Grid/TypesArray.php @@ -0,0 +1,56 @@ +_transactionFactory = $transactionFactory; + } + + /** + * Return option array + * + * @return array + */ + public function toOptionArray() + { + return $this->_transactionFactory->create()->getTransactionTypes(); + } +} diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions.xml index f575e6b99156f..520ab7d7c0658 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions.xml @@ -24,5 +24,6 @@ */ --> - + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml new file mode 100644 index 0000000000000..e832793d644ab --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml @@ -0,0 +1,121 @@ + + + + + + + sales_transactions_grid + + Magento\Sales\Model\Resource\Order\Transaction\Grid\Collection + Magento\Sales\Model\Order\TransactionsUpdater + + Magento\Sales\Model\Resource\Order\Transaction\Grid\Collection + true + created_at + DESC + 1 + + 1 + + + + + sales_transactions_grid + + Magento\Sales\Model\Grid\Row\UrlGenerator + sales/transactions/view + + getId + + + + + + ID + number + transaction_id + transaction_id + col-id + col-id + + + + + Transaction ID + text + txn_id + txn_id + col-transaction-id + col-transaction-id + + + + + Parent Transaction ID + text + parent_txn_id + parent_txn_id + col-parent-transaction-id + col-parent-transaction-id + + + + + method + Payment Method + options + method + + + col-method + col-method + + + + + Transaction Type + options + txn_type + txn_type + + col-transaction-type + col-transaction-type + + + + + Created + datetime + created_at + created_at + col-period + col-period + + + + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml index cf06334d6cbf9..fb5b6378b2900 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml @@ -42,6 +42,7 @@ + @@ -85,9 +86,10 @@ order_history Magento\Sales\Block\Adminhtml\Order\View\Tab\History + order_transactions - Magento\Sales\Block\Adminhtml\Order\View\Tab\Transactions + sales_order_transactions.grid.container diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_exportcsv.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_exportcsv.xml new file mode 100644 index 0000000000000..a7f8244e2121b --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_exportcsv.xml @@ -0,0 +1,29 @@ + + + + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_exportexcel.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_exportexcel.xml new file mode 100644 index 0000000000000..a7f8244e2121b --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_exportexcel.xml @@ -0,0 +1,29 @@ + + + + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid.xml index f575e6b99156f..be4114526f05d 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid.xml @@ -24,5 +24,7 @@ */ --> - + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid_block.xml new file mode 100644 index 0000000000000..b915e274f1dc9 --- /dev/null +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid_block.xml @@ -0,0 +1,164 @@ + + + + + + + sales_transactions_grid + Magento\Sales\Model\Resource\Order\Transaction\Grid\Collection + true + created_at + DESC + 1 + + 1 + + + + + + + */*/exportCsv + CSV + + + */*/exportExcel + Excel XML + + + + + + + sales_transactions_grid + + Magento\Sales\Model\Grid\Row\UrlGenerator + sales/transactions/view + + getId + + + + + + ID + number + transaction_id + transaction_id + col-id + col-id + + + + + Order ID + text + increment_id + increment_id + col-order-id + col-order-id + + + + + Transaction ID + text + txn_id + txn_id + col-transaction-id + col-transaction-id + + + + + Parent Transaction ID + text + parent_txn_id + parent_txn_id + col-parent-transaction-id + col-parent-transaction-id + + + + + method + Payment Method + options + method + + + col-method + col-method + + + + + Transaction Type + options + txn_type + txn_type + + col-transaction-type + col-transaction-type + + + + + Created + datetime + created_at + created_at + col-period + col-period + + + + + + action + Action + action + getId + 0 + 0 + 1 + + + View + + sales/transactions/view + + transactions_id + + + col-actions + col-actions + + + + + + diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_index.xml index 3afd37cd73ade..c2ea63f53f217 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_index.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_index.xml @@ -24,6 +24,7 @@ */ --> + diff --git a/app/code/Magento/Widget/Block/Adminhtml/Widget/Instance/Edit/Tab/Properties.php b/app/code/Magento/Widget/Block/Adminhtml/Widget/Instance/Edit/Tab/Properties.php index cc8cb9c625f06..0e0fea64d4338 100644 --- a/app/code/Magento/Widget/Block/Adminhtml/Widget/Instance/Edit/Tab/Properties.php +++ b/app/code/Magento/Widget/Block/Adminhtml/Widget/Instance/Edit/Tab/Properties.php @@ -24,6 +24,8 @@ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ +namespace Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tab; + /** * Widget Instance Properties tab block * @@ -31,8 +33,6 @@ * @package Magento_Widget * @author Magento Core Team */ -namespace Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tab; - class Properties extends \Magento\Widget\Block\Adminhtml\Widget\Options implements \Magento\Backend\Block\Widget\Tab\TabInterface @@ -58,7 +58,7 @@ public function getTabTitle() } /** - * Returns status flag about this tab can be showen or not + * Returns status flag about this tab can be shown or not * * @return true */