diff --git a/packages/Webkul/Admin/src/Config/menu.php b/packages/Webkul/Admin/src/Config/menu.php index dab25131c..41d97c10f 100755 --- a/packages/Webkul/Admin/src/Config/menu.php +++ b/packages/Webkul/Admin/src/Config/menu.php @@ -37,6 +37,12 @@ return [ 'route' => 'admin.sales.refunds.index', 'sort' => 4, 'icon-class' => '', + ], [ + 'key' => 'sales.transactions', + 'name' => 'admin::app.layouts.transactions', + 'route' => 'admin.sales.transactions.index', + 'sort' => 5, + 'icon-class' => '', ], [ 'key' => 'catalog', 'name' => 'admin::app.layouts.catalog', diff --git a/packages/Webkul/Admin/src/DataGrids/OrderTransactionsDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderTransactionsDataGrid.php new file mode 100644 index 000000000..29b587dfb --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/OrderTransactionsDataGrid.php @@ -0,0 +1,76 @@ +leftJoin('orders as ors', 'order_transactions.order_id', '=', 'ors.id') + ->select('order_transactions.id as id', 'order_transactions.transaction_id as transaction_id', 'ors.increment_id as order_id', 'order_transactions.created_at as created_at'); + + $this->addFilter('id', 'order_transactions.id'); + $this->addFilter('transaction_id', 'order_transactions.transaction_id'); + $this->addFilter('order_id', 'ors.increment_id'); + $this->addFilter('created_at', 'order_transactions.created_at'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true, + ]); + + $this->addColumn([ + 'index' => 'transaction_id', + 'label' => trans('admin::app.datagrid.transaction-id'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true, + ]); + + $this->addColumn([ + 'index' => 'order_id', + 'label' => trans('admin::app.datagrid.order-id'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + ]); + + $this->addColumn([ + 'index' => 'created_at', + 'label' => trans('admin::app.datagrid.transaction-date'), + 'type' => 'datetime', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + ]); + } + + public function prepareActions() + { + $this->addAction([ + 'title' => trans('admin::app.datagrid.view'), + 'method' => 'GET', + 'route' => 'admin.sales.transactions.view', + 'icon' => 'icon eye-icon', + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php new file mode 100644 index 000000000..d4b875e99 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php @@ -0,0 +1,92 @@ +middleware('admin'); + + $this->_config = request('_config'); + + $this->orderTransactionRepository = $orderTransactionRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the view for the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function view($id) + { + $transaction = $this->orderTransactionRepository->findOrFail($id); + + $transData = json_decode(json_encode(json_decode($transaction['data'])), true); + + $transactionDeatilsData = $this->convertIntoSingleDimArray($transData); + + return view($this->_config['view'], compact('transaction', 'transactionDeatilsData')); + } + + /** + * Convert Transaction Details Data into single Dim Array. + * + * @param array $data + * @return array + */ + public function convertIntoSingleDimArray($transData) { + static $detailsData = []; + + foreach ($transData as $key => $data) { + if (is_array($data)) { + $this->convertIntoSingleDimArray($data); + } else { + $skipAttributes = ['sku', 'name', 'category', 'quantity']; + + if (gettype($key) == 'integer' || in_array($key, $skipAttributes)) { + continue; + } + + $detailsData[$key] = $data; + } + } + + return $detailsData; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index c9e92f3e6..20a9033fe 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -250,6 +250,15 @@ Route::group(['middleware' => ['web']], function () { Route::get('/refunds/view/{id}', 'Webkul\Admin\Http\Controllers\Sales\RefundController@view')->defaults('_config', [ 'view' => 'admin::sales.refunds.view', ])->name('admin.sales.refunds.view'); + + // Sales Transactions Routes + Route::get('/transactions', 'Webkul\Admin\Http\Controllers\Sales\TransactionController@index')->defaults('_config', [ + 'view' => 'admin::sales.transactions.index', + ])->name('admin.sales.transactions.index'); + + Route::get('/transactions/view/{id}', 'Webkul\Admin\Http\Controllers\Sales\TransactionController@view')->defaults('_config', [ + 'view' => 'admin::sales.transactions.view', + ])->name('admin.sales.transactions.view'); }); // Catalog Routes diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 1ae5dcec3..18ec99a3e 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -82,7 +82,8 @@ return [ 'email-templates' => 'Email Templates', 'events' => 'Events', 'discount' => 'Discount', - 'cms' => 'CMS' + 'cms' => 'CMS', + 'transactions' => 'Transactions' ], 'acl' => [ @@ -249,7 +250,9 @@ return [ 'ltr' => 'LTR', 'update-status' => 'Update Status', 'subject' => 'Subject', - 'date' => 'Date' + 'date' => 'Date', + 'transaction-id' => 'Transaction Id', + 'transaction-date' => 'Transaction Date', ], 'account' => [ @@ -401,7 +404,8 @@ return [ 'submit-comment' => 'Submit Comment', 'notify-customer' => 'Notify Customer', 'customer-notified' => ':date | Customer Notified', - 'customer-not-notified' => ':date | Customer Not Notified' + 'customer-not-notified' => ':date | Customer Not Notified', + 'transactions' => 'Transactions' ], 'invoices' => [ @@ -478,6 +482,20 @@ return [ 'view-title' => 'Refund #:refund_id', 'invalid-refund-amount-error' => 'Refund amount should be non zero.' + ], + + 'transactions' => [ + 'title' => 'Transactions', + 'id' => 'Id', + 'transaction-id' => 'Transaction Id', + 'payment-method' => 'Payment method', + 'action' => 'Action', + 'view-title' => 'Transaction #:transaction_id', + 'transaction-data' => 'Transaction Data', + 'order-id' => 'Order Id', + 'status' => 'Status', + 'created-at' => 'Created At', + 'transaction-details' => 'Transaction Details' ] ], diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php index 6ac4b515e..a200fbbc6 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php @@ -509,6 +509,7 @@
| {{ __('admin::app.sales.transactions.transaction-id') }} | +{{ __('admin::app.sales.invoices.order-id') }} | +{{ __('admin::app.sales.transactions.payment-method') }} | +{{ __('admin::app.sales.transactions.action') }} | +|||
|---|---|---|---|---|---|---|
| #{{ $transaction->transaction_id }} | +{{ $transaction->order_id }} | ++ {{ core()->getConfigData('sales.paymentmethods.' . $transaction->payment_method . '.title') }} + | ++ + + + | +|||
| {{ __('admin::app.common.no-result-found') }} | +||||||