diff --git a/packages/Webkul/Admin/src/DataGrids/InvoicesTransactionsDataGrid.php b/packages/Webkul/Admin/src/DataGrids/InvoicesTransactionsDataGrid.php
new file mode 100644
index 000000000..b6f46819e
--- /dev/null
+++ b/packages/Webkul/Admin/src/DataGrids/InvoicesTransactionsDataGrid.php
@@ -0,0 +1,72 @@
+leftJoin('invoices as inv', 'order_transactions.invoice_id', '=', 'inv.id')
+ ->select('order_transactions.id as id', 'order_transactions.transaction_id as transaction_id', 'order_transactions.invoice_id as invoice_id', 'order_transactions.created_at as created_at')
+ ->where('order_transactions.invoice_id', request('id'));
+
+
+ $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' => '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/DataGrids/OrderInvoicesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php
index 11b545ef7..9de32bacc 100755
--- a/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php
+++ b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php
@@ -29,7 +29,7 @@ class OrderInvoicesDataGrid extends DataGrid
{
$this->addColumn([
'index' => 'id',
- 'label' => trans('admin::app.datagrid.id'),
+ 'label' => trans('admin::app.datagrid.invoice-id'),
'type' => 'number',
'searchable' => false,
'sortable' => true,
@@ -45,6 +45,15 @@ class OrderInvoicesDataGrid extends DataGrid
'filterable' => true,
]);
+ $this->addColumn([
+ 'index' => 'created_at',
+ 'label' => trans('admin::app.datagrid.invoice-date'),
+ 'type' => 'datetime',
+ 'searchable' => true,
+ 'sortable' => true,
+ 'filterable' => true,
+ ]);
+
$this->addColumn([
'index' => 'base_grand_total',
'label' => trans('admin::app.datagrid.grand-total'),
@@ -55,13 +64,26 @@ class OrderInvoicesDataGrid extends DataGrid
]);
$this->addColumn([
- 'index' => 'created_at',
- 'label' => trans('admin::app.datagrid.invoice-date'),
- 'type' => 'datetime',
- 'searchable' => true,
+ 'index' => 'state',
+ 'label' => trans('admin::app.datagrid.status'),
+ 'type' => 'string',
'sortable' => true,
+ 'searchable' => true,
+ 'closure' => true,
'filterable' => true,
+ 'wrapper' => function ($value) {
+ if ($value->state == 'paid') {
+ return '' . trans('admin::app.sales.invoices.status-paid') . '';
+ } elseif ($value->state == 'pending' || $value->state == 'pending_payment') {
+ return '' . trans('admin::app.sales.invoices.status-pending') . '';
+ } elseif ($value->state == 'overdue') {
+ return '' . trans('admin::app.sales.invoices.status-overdue') . '';
+ } else {
+ return $value->state;
+ }
+ },
]);
+
}
public function prepareActions()
diff --git a/packages/Webkul/Admin/src/DataGrids/OrderTransactionsDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderTransactionsDataGrid.php
index 29b587dfb..252778b78 100644
--- a/packages/Webkul/Admin/src/DataGrids/OrderTransactionsDataGrid.php
+++ b/packages/Webkul/Admin/src/DataGrids/OrderTransactionsDataGrid.php
@@ -15,10 +15,11 @@ class OrderTransactionsDataGrid extends DataGrid
{
$queryBuilder = DB::table('order_transactions')
->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');
+ ->select('order_transactions.id as id', 'order_transactions.transaction_id as transaction_id', 'order_transactions.invoice_id as invoice_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('invoice_id', 'order_transactions.invoice_id');
$this->addFilter('order_id', 'ors.increment_id');
$this->addFilter('created_at', 'order_transactions.created_at');
@@ -45,6 +46,15 @@ class OrderTransactionsDataGrid extends DataGrid
'filterable' => true,
]);
+ $this->addColumn([
+ 'index' => 'invoice_id',
+ 'label' => trans('admin::app.datagrid.invoice-id'),
+ 'type' => 'number',
+ 'searchable' => true,
+ 'sortable' => true,
+ 'filterable' => true,
+ ]);
+
$this->addColumn([
'index' => 'order_id',
'label' => trans('admin::app.datagrid.order-id'),
diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php
index d4b875e99..f0fe2c463 100644
--- a/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php
+++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php
@@ -2,9 +2,15 @@
namespace Webkul\Admin\Http\Controllers\Sales;
+use Illuminate\Http\Request;
use Illuminate\Support\Facades\Event;
+
use Webkul\Admin\Http\Controllers\Controller;
+use Webkul\Payment\Facades\Payment;
+
+use Webkul\Sales\Repositories\OrderRepository;
use Webkul\Sales\Repositories\OrderTransactionRepository;
+use Webkul\Sales\Repositories\InvoiceRepository;
class TransactionController extends Controller
{
@@ -15,6 +21,13 @@ class TransactionController extends Controller
*/
protected $_config;
+ /**
+ * OrderRepository object
+ *
+ * @var \Webkul\Sales\Repositories\OrderRepository
+ */
+ protected $orderRepository;
+
/**
* OrderRepository object
*
@@ -22,19 +35,35 @@ class TransactionController extends Controller
*/
protected $orderTransactionRepository;
+ /**
+ * InvoiceRepository object
+ *
+ * @var \Webkul\Sales\Repositories\InvoiceRepository
+ */
+ protected $invoiceRepository;
+
/**
* Create a new controller instance.
*
+ * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository
* @param \Webkul\Sales\Repositories\OrderTransactionRepository $orderTransactionRepository
+ * @param \Webkul\Sales\Repositories\InvoiceRepository $invoiceRepository
* @return void
*/
- public function __construct(OrderTransactionRepository $orderTransactionRepository)
+ public function __construct(
+ OrderRepository $orderRepository,
+ OrderTransactionRepository $orderTransactionRepository,
+ InvoiceRepository $invoiceRepository)
{
$this->middleware('admin');
$this->_config = request('_config');
+ $this->orderRepository = $orderRepository;
+
$this->orderTransactionRepository = $orderTransactionRepository;
+
+ $this->invoiceRepository = $invoiceRepository;
}
/**
@@ -47,6 +76,75 @@ class TransactionController extends Controller
return view($this->_config['view']);
}
+ /**
+ * Display a form to save the tranaction.
+ *
+ * @return \Illuminate\View\View
+ */
+ public function create()
+ {
+ $payment_methods = Payment::getSupportedPaymentMethods();
+ return view($this->_config['view'], compact('payment_methods'));
+ }
+
+ /**
+ * Save the tranaction.
+ *
+ * @return \Illuminate\View\View
+ */
+ public function store(Request $request)
+ {
+ $validate = $this->validate(request(), [
+ 'invoice_id' => 'required',
+ 'payment_method' => 'required',
+ 'amount' => 'required|numeric'
+ ]);
+
+ $invoice = $this->invoiceRepository->find($request->invoice_id);
+
+ if ($invoice) {
+
+ if ($invoice->state == 'paid') {
+ session()->flash('info', trans('admin::app.sales.transactions.response.already-paid'));
+ return redirect(route('admin.sales.transactions.index'));
+ }
+
+ $order = $this->orderRepository->find($invoice->id);
+
+ $data = [
+ "paidAmount" => $request->amount,
+ ];
+
+ $randomId = random_bytes(20);
+ $transactionId = bin2hex($randomId);
+
+ $transactionData['transaction_id'] = $transactionId;
+ $transactionData['type'] = $request->payment_method;
+ $transactionData['payment_method'] = $request->payment_method;
+ $transactionData['invoice_id'] = $request->invoice_id;
+ $transactionData['order_id'] = $invoice->order_id;
+ $transactionData['status'] = 'paid';
+ $transactionData['data'] = json_encode($data);
+
+ $this->orderTransactionRepository->create($transactionData);
+
+ if ($invoice->base_grand_total == $request->amount) {
+ $this->orderRepository->updateOrderStatus($order, 'processing');
+ $update = $this->invoiceRepository->updateState($invoice, "paid");
+ } else {
+ $this->orderRepository->updateOrderStatus($order, 'pending');
+ $update = $this->invoiceRepository->updateState($invoice, "pending");
+ }
+
+ session()->flash('success', trans('admin::app.sales.transactions.response.transaction-saved'));
+ return redirect(route('admin.sales.transactions.index'));
+
+ } else {
+ session()->flash('error', trans('admin::app.sales.transactions.response.invoice-missing'));
+ return redirect()->back();
+ }
+ }
+
/**
* Show the view for the specified resource.
*
diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php
index 01c8c9b31..2bd12a221 100755
--- a/packages/Webkul/Admin/src/Http/routes.php
+++ b/packages/Webkul/Admin/src/Http/routes.php
@@ -264,6 +264,12 @@ Route::group(['middleware' => ['web', 'admin_locale']], function () {
'view' => 'admin::sales.transactions.index',
])->name('admin.sales.transactions.index');
+ Route::get('/transactions/create', 'Webkul\Admin\Http\Controllers\Sales\TransactionController@create')->defaults('_config', [
+ 'view' => 'admin::sales.transactions.create',
+ ])->name('admin.sales.transactions.create');
+
+ Route::post('/transactions/create', 'Webkul\Admin\Http\Controllers\Sales\TransactionController@store')->name('admin.sales.transactions.store');
+
Route::get('/transactions/view/{id}', 'Webkul\Admin\Http\Controllers\Sales\TransactionController@view')->defaults('_config', [
'view' => 'admin::sales.transactions.view',
])->name('admin.sales.transactions.view');
diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php
index d53031e43..dd232ae76 100644
--- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php
@@ -197,6 +197,7 @@ return [
'billed-to' => 'فاتورة إلى',
'shipped-to' => 'تم شحنها إلي',
'order-id' => 'رقم التعريف الخاص بالطلب',
+ 'invoice-id' => 'رقم الفاتورة',
'invoice-date' => 'تاريخ الفاتورة',
'total-qty' => 'إجمالي الكمية',
'inventory-source' => 'مصدر الجرد',
@@ -479,16 +480,24 @@ return [
'transactions' => [
'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
'status' => 'Status',
'created-at' => 'Created At',
- 'transaction-details' => 'Transaction Details'
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
@@ -1495,6 +1504,10 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php
index c9c50d950..414bf9a7f 100755
--- a/packages/Webkul/Admin/src/Resources/lang/de/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php
@@ -196,6 +196,7 @@ return [
'billed-to' => 'Rechnung an',
'shipped-to' => 'Versendet an',
'order-id' => 'Auftragsnummer',
+ 'invoice-id' => 'Rechnungsnummer',
'invoice-date' => 'Rechnungsdatum',
'total-qty' => 'Gesamtmenge',
'inventory-source' => 'Inventar Quelle',
@@ -472,16 +473,24 @@ return [
'transactions' => [
'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
'status' => 'Status',
'created-at' => 'Created At',
- 'transaction-details' => 'Transaction Details'
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
'catalog' =>
@@ -1471,6 +1480,10 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
],
],
];
diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php
index 1a468c912..1677df477 100755
--- a/packages/Webkul/Admin/src/Resources/lang/en/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php
@@ -203,6 +203,7 @@ return [
'billed-to' => 'Billed To',
'shipped-to' => 'Shipped To',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice number',
'invoice-date' => 'Invoice Date',
'total-qty' => 'Total Qty',
'inventory-source' => 'Inventory Source',
@@ -489,16 +490,24 @@ return [
'transactions' => [
'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
'status' => 'Status',
'created-at' => 'Created At',
- 'transaction-details' => 'Transaction Details'
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
@@ -1509,6 +1518,10 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
diff --git a/packages/Webkul/Admin/src/Resources/lang/es/app.php b/packages/Webkul/Admin/src/Resources/lang/es/app.php
index 67673af90..f75a61f5a 100644
--- a/packages/Webkul/Admin/src/Resources/lang/es/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/es/app.php
@@ -203,6 +203,7 @@ return [
'billed-to' => 'Facturado a',
'shipped-to' => 'Enviado a',
'order-id' => 'Pedido #',
+ 'invoice-id' => 'Número de factura',
'invoice-date' => 'Fecha de factura',
'total-qty' => 'Cantidad total',
'inventory-source' => 'Fuente de inventario',
@@ -488,17 +489,25 @@ return [
],
'transactions' => [
- 'title' => 'Transacciones',
- 'id' => 'ID',
- 'transaction-id' => 'Transacción #',
- 'payment-method' => 'Método de Pago',
- 'action' => 'Accción',
- 'view-title' => 'Transacciónn #:transaction_id',
- 'transaction-data' => 'Fecha de Transacción',
- 'order-id' => 'Pedido #',
- 'status' => 'Estado',
- 'created-at' => 'Creado En',
- 'transaction-details' => 'Detalles de la Transacción'
+ 'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
+ 'id' => 'Id',
+ 'transaction-id' => 'Transaction Id',
+ 'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
+ 'action' => 'Action',
+ 'view-title' => 'Transaction #:transaction_id',
+ 'transaction-data' => 'Transaction Data',
+ 'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
+ 'status' => 'Status',
+ 'created-at' => 'Created At',
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
@@ -1502,6 +1511,10 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php
index d676cb226..39ec80012 100644
--- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php
@@ -196,6 +196,7 @@ return [
'billed-to' => 'صورت حساب داده شده برای',
'shipped-to' => 'فرستاده شده به',
'order-id' => 'شناسه سفارش',
+ 'invoice-id' => 'Invoice number',
'invoice-date' => 'تاریخ فاکتور',
'total-qty' => 'کل مقدار',
'inventory-source' => 'منابع موجودی',
@@ -481,17 +482,25 @@ return [
],
'transactions' => [
- 'title' => 'پرداختی ها',
+ 'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
'id' => 'Id',
- 'transaction-id' => 'شناسه پرداخت',
- 'payment-method' => 'پرداخت با',
- 'action' => 'عملیات',
- 'view-title' => 'پرداخت #:transaction_id',
- 'transaction-data' => 'اطلاعات پرداخت',
- 'order-id' => 'شمار سفارش',
- 'status' => 'وضعیت',
- 'created-at' => 'ایجاد شده در',
- 'transaction-details' => 'جزئیات پرداخت'
+ 'transaction-id' => 'Transaction Id',
+ 'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
+ 'action' => 'Action',
+ 'view-title' => 'Transaction #:transaction_id',
+ 'transaction-data' => 'Transaction Data',
+ 'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
+ 'status' => 'Status',
+ 'created-at' => 'Created At',
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
@@ -1481,7 +1490,11 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
- 'all-customer-groups' => 'همه گروه های مشتری'
+ 'all-customer-groups' => 'همه گروه های مشتری',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
diff --git a/packages/Webkul/Admin/src/Resources/lang/it/app.php b/packages/Webkul/Admin/src/Resources/lang/it/app.php
index 6257de629..a1455b3af 100644
--- a/packages/Webkul/Admin/src/Resources/lang/it/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/it/app.php
@@ -196,6 +196,7 @@ return [
'billed-to' => 'Fatturato a',
'shipped-to' => 'Spedito a',
'order-id' => 'Id Ordine',
+ 'invoice-id' => 'numero di fattura',
'invoice-date' => 'Data Fattura',
'total-qty' => 'Qtà Totale',
'inventory-source' => 'Magazzino',
@@ -479,16 +480,24 @@ return [
'transactions' => [
'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
'status' => 'Status',
'created-at' => 'Created At',
- 'transaction-details' => 'Transaction Details'
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
@@ -1492,6 +1501,10 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php
index 433396a41..8e1820d82 100644
--- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php
@@ -196,6 +196,7 @@ return [
'billed-to' => 'Gefactureerd aan',
'shipped-to' => 'Verzonden naar',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Factuurnummer',
'invoice-date' => 'Factuur datum',
'total-qty' => 'Totale hoeveelheid',
'inventory-source' => 'Voorraad bron',
@@ -476,16 +477,24 @@ return [
'transactions' => [
'title' => 'Transacties',
+ 'create-title' => 'Transactie toevoegen',
'id' => 'Id',
'transaction-id' => 'Transactie Id',
'payment-method' => 'Betalingswijze',
+ 'transaction-amount' => 'Transactiebedrag',
'action' => 'Actie',
'view-title' => 'Transactie #:transaction_id',
- 'transaction-data' => 'Transacatie data',
+ 'transaction-data' => 'Transactie Data',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Factuurnummer',
'status' => 'Status',
- 'created-at' => 'Datum aangemaakt',
- 'transaction-details' => 'Transactie Details'
+ 'created-at' => 'Toegevoegd op',
+ 'transaction-details' => 'Transactie details',
+ 'response' => [
+ 'invoice-missing' => 'Dit factuurnummer bestaat niet',
+ 'transaction-saved' => 'De transactie is geregistreerd',
+ 'already-paid' => 'Dit factuur is al voldaan'
+ ]
]
],
@@ -1485,6 +1494,10 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
diff --git a/packages/Webkul/Admin/src/Resources/lang/pl/app.php b/packages/Webkul/Admin/src/Resources/lang/pl/app.php
index 153bf5664..e4cdcf67e 100644
--- a/packages/Webkul/Admin/src/Resources/lang/pl/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/pl/app.php
@@ -194,6 +194,7 @@ return [
'billed-to' => 'Zapłacono za',
'shipped-to' => 'Wysłane do',
'order-id' => 'Identyfikator zamówienia',
+ 'invoice-id' => 'numer faktury',
'invoice-date' => 'Data faktury',
'total-qty' => 'Ilość Całkowita',
'inventory-source' => 'Źródło zapasów',
@@ -478,16 +479,24 @@ return [
'transactions' => [
'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
'status' => 'Status',
'created-at' => 'Created At',
- 'transaction-details' => 'Transaction Details'
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
@@ -1476,6 +1485,10 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
\ No newline at end of file
diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php
index 8d865421e..792047577 100755
--- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php
@@ -195,6 +195,7 @@ return [
'billed-to' => 'Cobrado de',
'shipped-to' => 'Enviado para',
'order-id' => 'Pedido Id',
+ 'invoice-id' => 'Número da fatura',
'invoice-date' => 'Data da Fatura',
'total-qty' => 'Total Qtd',
'inventory-source' => 'Fonte do Estoque',
@@ -476,17 +477,25 @@ return [
],
'transactions' => [
- 'title' => 'Transações',
- 'id' => 'ID',
- 'transaction-id' => 'ID da Transação',
- 'payment-method' => 'Método de pagamento',
- 'action' => 'Ação',
- 'view-title' => 'Transação #:transaction_id',
+ 'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
+ 'id' => 'Id',
+ 'transaction-id' => 'Transaction Id',
+ 'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
+ 'action' => 'Action',
+ 'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
- 'order-id' => 'ID do Pedido',
+ 'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
'status' => 'Status',
- 'created-at' => 'Criado em',
- 'transaction-details' => 'Detalhes da transação'
+ 'created-at' => 'Created At',
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
@@ -1490,6 +1499,10 @@ return [
'cache-small-image' => 'Imagem pequena',
'cache-medium-image' => 'Imagem média',
'cache-large-image' => 'Imagem grande',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
diff --git a/packages/Webkul/Admin/src/Resources/lang/tr/app.php b/packages/Webkul/Admin/src/Resources/lang/tr/app.php
index 0baf071d1..d15a31540 100644
--- a/packages/Webkul/Admin/src/Resources/lang/tr/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/tr/app.php
@@ -193,6 +193,7 @@ return [
'billed-to' => 'Fatura Bilgileri',
'shipped-to' => 'Kargo Bilgileri',
'order-id' => 'Sipariş ID',
+ 'invoice-id' => 'Fatura numarası',
'invoice-date' => 'Fatura Tarihi',
'total-qty' => 'Toplam Miktar',
'inventory-source' => 'Envanter Kaynağı',
@@ -476,16 +477,24 @@ return [
'transactions' => [
'title' => 'Transactions',
+ 'create-title' => 'Add transaction',
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'payment-method' => 'Payment method',
+ 'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
+ 'invoice-id' => 'Invoice Id',
'status' => 'Status',
'created-at' => 'Created At',
- 'transaction-details' => 'Transaction Details'
+ 'transaction-details' => 'Transaction Details',
+ 'response' => [
+ 'invoice-missing' => 'This invoice id does not exist',
+ 'transaction-saved' => 'The transaction has been saved',
+ 'already-paid' => 'This invoice has already been paid'
+ ]
]
],
@@ -1473,6 +1482,10 @@ return [
'cache-small-image' => 'Small Image',
'cache-medium-image' => 'Medium Image',
'cache-large-image' => 'Large Image',
+ 'generate-invoice' => 'Automatically generate the invoice after placing an order',
+ 'set-invoice-status' => 'Set the invoice status after creating the invoice to',
+ 'set-order-status' => 'Set the order status after creating the invoice to',
+ 'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled'
]
]
];
diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php
index 0d27ad1ae..e0e63e2b8 100755
--- a/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php
@@ -34,225 +34,246 @@
-
+
-
-
+
+
+
+
-
-
- {{ __('admin::app.sales.orders.order-info') }}
-
-
-
-
-
- {!! view_render_event('sales.invoice.increment_id.after', ['order' => $order]) !!}
-
-
-
- {{ __('admin::app.sales.orders.order-date') }}
-
-
-
- {{ $order->created_at }}
-
-
-
- {!! view_render_event('sales.invoice.created_at.after', ['order' => $order]) !!}
-
-
-
- {{ __('admin::app.sales.orders.order-status') }}
-
-
-
- {{ $order->status_label }}
-
-
-
- {!! view_render_event('sales.invoice.status_label.after', ['order' => $order]) !!}
-
-
-
- {{ __('admin::app.sales.orders.channel') }}
-
-
-
- {{ $order->channel_name }}
-
-
-
- {!! view_render_event('sales.invoice.channel_name.after', ['order' => $order]) !!}
-
-
-
-
-
- {{ __('admin::app.sales.orders.account-info') }}
-
-
-
-
- {{ __('admin::app.sales.orders.customer-name') }}
- {{ $invoice->order->customer_full_name }}
-
-
- {!! view_render_event('sales.invoice.customer_name.after', ['order' => $order]) !!}
-
-
- {{ __('admin::app.sales.orders.email') }}
- {{ $invoice->order->customer_email }}
-
-
- {!! view_render_event('sales.invoice.customer_email.after', ['order' => $order]) !!}
-
-
-
-
-
-
- @if ($order->billing_address || $order->shipping_address)
-
-
-
- @if ($order->billing_address)
-
-
{{ __('admin::app.sales.orders.billing-address') }}
+
+ {{ __('admin::app.sales.orders.order-info') }}
-
- @include ('admin::sales.address', ['address' => $order->billing_address])
+
+
+
+ {{ __('admin::app.sales.invoices.order-id') }}
+
- {!! view_render_event('sales.invoice.billing_address.after', ['order' => $order]) !!}
+
+ #{{ $order->increment_id }}
+
+
+
+ {!! view_render_event('sales.invoice.increment_id.after', ['order' => $order]) !!}
+
+
+
+ {{ __('admin::app.sales.orders.order-date') }}
+
+
+
+ {{ $order->created_at }}
+
+
+
+ {!! view_render_event('sales.invoice.created_at.after', ['order' => $order]) !!}
+
+
+
+ {{ __('admin::app.sales.orders.order-status') }}
+
+
+
+ {{ $order->status_label }}
+
+
+
+ {!! view_render_event('sales.invoice.status_label.after', ['order' => $order]) !!}
+
+
+
+ {{ __('admin::app.sales.invoices.status') }}
+
+
+
+ {{ $invoice->status_label }}
+
+
+
+
+
+ {{ __('admin::app.sales.orders.channel') }}
+
+
+
+ {{ $order->channel_name }}
+
+
+
+ {!! view_render_event('sales.invoice.channel_name.after', ['order' => $order]) !!}
- @endif
- @if ($order->shipping_address)
-
-
-
{{ __('admin::app.sales.orders.shipping-address') }}
+
+
+ {{ __('admin::app.sales.orders.account-info') }}
-
- @include ('admin::sales.address', ['address' => $order->shipping_address])
+
+
+ {{ __('admin::app.sales.orders.customer-name') }}
+ {{ $invoice->order->customer_full_name }}
+
- {!! view_render_event('sales.invoice.shipping_address.after', ['order' => $order]) !!}
+ {!! view_render_event('sales.invoice.customer_name.after', ['order' => $order]) !!}
+
+
+ {{ __('admin::app.sales.orders.email') }}
+ {{ $invoice->order->customer_email }}
+
+
+ {!! view_render_event('sales.invoice.customer_email.after', ['order' => $order]) !!}
- @endif
-
-
- @endif
-
-
+
+
-
-
-
-
- | {{ __('admin::app.sales.orders.SKU') }} |
- {{ __('admin::app.sales.orders.product-name') }} |
- {{ __('admin::app.sales.orders.price') }} |
- {{ __('admin::app.sales.orders.qty') }} |
- {{ __('admin::app.sales.orders.subtotal') }} |
- {{ __('admin::app.sales.orders.tax-amount') }} |
- @if ($invoice->base_discount_amount > 0)
- {{ __('admin::app.sales.orders.discount-amount') }} |
- @endif
- {{ __('admin::app.sales.orders.grand-total') }} |
-
-
-
+ @if ($order->billing_address || $order->shipping_address)
+
+
- @foreach ($invoice->items as $item)
-
- | {{ $item->getTypeInstance()->getOrderedItem($item)->sku }} |
+ @if ($order->billing_address)
+
+
+ {{ __('admin::app.sales.orders.billing-address') }}
+
-
- {{ $item->name }}
+
+ @include ('admin::sales.address', ['address' => $order->billing_address])
- @if (isset($item->additional['attributes']))
-
+ {!! view_render_event('sales.invoice.billing_address.after', ['order' => $order]) !!}
+
+
+ @endif
- @foreach ($item->additional['attributes'] as $attribute)
- {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
- @endforeach
+ @if ($order->shipping_address)
+
+
+ {{ __('admin::app.sales.orders.shipping-address') }}
+
-
+
+ @include ('admin::sales.address', ['address' => $order->shipping_address])
+
+ {!! view_render_event('sales.invoice.shipping_address.after', ['order' => $order]) !!}
+
+
+ @endif
+
+
+ @endif
+
+
+
+
+
+
+
+
+ | {{ __('admin::app.sales.orders.SKU') }} |
+ {{ __('admin::app.sales.orders.product-name') }} |
+ {{ __('admin::app.sales.orders.price') }} |
+ {{ __('admin::app.sales.orders.qty') }} |
+ {{ __('admin::app.sales.orders.subtotal') }} |
+ {{ __('admin::app.sales.orders.tax-amount') }} |
+ @if ($invoice->base_discount_amount > 0)
+ {{ __('admin::app.sales.orders.discount-amount') }} |
@endif
-
+ {{ __('admin::app.sales.orders.grand-total') }} |
+
+
- {{ core()->formatBasePrice($item->base_price) }} |
+
- {{ $item->qty }} |
+ @foreach ($invoice->items as $item)
+
+ | {{ $item->getTypeInstance()->getOrderedItem($item)->sku }} |
- {{ core()->formatBasePrice($item->base_total) }} |
+
+ {{ $item->name }}
- | {{ core()->formatBasePrice($item->base_tax_amount) }} |
+ @if (isset($item->additional['attributes']))
+
- @if ($invoice->base_discount_amount > 0)
- {{ core()->formatBasePrice($item->base_discount_amount) }} |
- @endif
+ @foreach ($item->additional['attributes'] as $attribute)
+ {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
+ @endforeach
- {{ core()->formatBasePrice($item->base_total + $item->base_tax_amount - $item->base_discount_amount) }} |
+
+ @endif
+
+
+ {{ core()->formatBasePrice($item->base_price) }} |
+
+ {{ $item->qty }} |
+
+ {{ core()->formatBasePrice($item->base_total) }} |
+
+ {{ core()->formatBasePrice($item->base_tax_amount) }} |
+
+ @if ($invoice->base_discount_amount > 0)
+ {{ core()->formatBasePrice($item->base_discount_amount) }} |
+ @endif
+
+ {{ core()->formatBasePrice($item->base_total + $item->base_tax_amount - $item->base_discount_amount) }} |
+
+ @endforeach
+
+
+
+
+
+
+
+ | {{ __('admin::app.sales.orders.subtotal') }} |
+ - |
+ {{ core()->formatBasePrice($invoice->base_sub_total) }} |
+
+
+
+ | {{ __('admin::app.sales.orders.shipping-handling') }} |
+ - |
+ {{ core()->formatBasePrice($invoice->base_shipping_amount) }} |
+
+
+
+ | {{ __('admin::app.sales.orders.tax') }} |
+ - |
+ {{ core()->formatBasePrice($invoice->base_tax_amount) }} |
+
+
+ @if ($invoice->base_discount_amount > 0)
+
+ | {{ __('admin::app.sales.orders.discount') }} |
+ - |
+ {{ core()->formatBasePrice($invoice->base_discount_amount) }} |
- @endforeach
+ @endif
-
-
-
-
-
-
- | {{ __('admin::app.sales.orders.subtotal') }} |
- - |
- {{ core()->formatBasePrice($invoice->base_sub_total) }} |
-
-
-
- | {{ __('admin::app.sales.orders.shipping-handling') }} |
- - |
- {{ core()->formatBasePrice($invoice->base_shipping_amount) }} |
-
-
-
- | {{ __('admin::app.sales.orders.tax') }} |
- - |
- {{ core()->formatBasePrice($invoice->base_tax_amount) }} |
-
-
- @if ($invoice->base_discount_amount > 0)
-
- | {{ __('admin::app.sales.orders.discount') }} |
- - |
- {{ core()->formatBasePrice($invoice->base_discount_amount) }} |
-
- @endif
-
-
- | {{ __('admin::app.sales.orders.grand-total') }} |
- - |
- {{ core()->formatBasePrice($invoice->base_grand_total) }} |
-
-
+
+ | {{ __('admin::app.sales.orders.grand-total') }} |
+ - |
+ {{ core()->formatBasePrice($invoice->base_grand_total) }} |
+
+ |
+
+
-
+
-
+
+
+ @inject('InvoicesTransactionsDatagrid', 'Webkul\Admin\DataGrids\InvoicesTransactionsDatagrid')
+ {!! $InvoicesTransactionsDatagrid->render() !!}
+
+
+
diff --git a/packages/Webkul/Admin/src/Resources/views/sales/transactions/create.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/transactions/create.blade.php
new file mode 100644
index 000000000..d1955a16b
--- /dev/null
+++ b/packages/Webkul/Admin/src/Resources/views/sales/transactions/create.blade.php
@@ -0,0 +1,57 @@
+@extends('admin::layouts.content')
+
+@section('page_title')
+ {{ __('admin::app.sales.transactions.create-title') }}
+@stop
+
+@section('content')
+
+@stop
\ No newline at end of file
diff --git a/packages/Webkul/Admin/src/Resources/views/sales/transactions/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/transactions/index.blade.php
index 214885c00..692c009f0 100644
--- a/packages/Webkul/Admin/src/Resources/views/sales/transactions/index.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/sales/transactions/index.blade.php
@@ -18,6 +18,8 @@
{{ __('admin::app.export.export') }}
+
+ {{ __('admin::app.sales.transactions.create-title') }}
diff --git a/packages/Webkul/Admin/src/Resources/views/sales/transactions/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/transactions/view.blade.php
index 5b12f43c2..f219d817e 100644
--- a/packages/Webkul/Admin/src/Resources/views/sales/transactions/view.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/sales/transactions/view.blade.php
@@ -53,6 +53,20 @@
+ @if($transaction->invoice_id)
+
+ @endif
+
{{ __('admin::app.sales.transactions.payment-method') }}
@@ -63,7 +77,7 @@
- {{--
+
{{ __('admin::app.sales.transactions.status') }}
@@ -71,7 +85,7 @@
{{ $transaction->status }}
-
--}}
+
diff --git a/packages/Webkul/Payment/src/Config/system.php b/packages/Webkul/Payment/src/Config/system.php
index 0febb44a7..8b7eb3918 100755
--- a/packages/Webkul/Payment/src/Config/system.php
+++ b/packages/Webkul/Payment/src/Config/system.php
@@ -20,28 +20,71 @@ return [
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
- 'channel_based' => false,
+ 'channel_based' => true,
'locale_based' => true,
], [
'name' => 'description',
'title' => 'admin::app.admin.system.description',
'type' => 'textarea',
- 'channel_based' => false,
- 'locale_based' => true,
- ], [
- 'name' => 'active',
- 'title' => 'admin::app.admin.system.status',
- 'type' => 'boolean',
- 'validation' => 'required',
- 'channel_based' => false,
+ 'channel_based' => true,
'locale_based' => true,
], [
'name' => 'instructions',
'title' => 'admin::app.admin.system.instructions',
'type' => 'textarea',
- 'channel_based' => false,
+ 'channel_based' => true,
'locale_based' => true,
- ], [
+ ], [
+ 'name' => 'generate_invoice',
+ 'title' => 'admin::app.admin.system.generate-invoice',
+ 'type' => 'boolean',
+ 'default_value' => false,
+ 'channel_based' => true,
+ 'locale_based' => false,
+ ], [
+ 'name' => 'invoice_status',
+ 'title' => 'admin::app.admin.system.set-invoice-status',
+ 'validation' => 'required_if:generate_invoice,1',
+ 'type' => 'select',
+ 'options' => [
+ [
+ 'title' => 'admin::app.sales.invoices.status-pending',
+ 'value' => 'pending'
+ ], [
+ 'title' => 'admin::app.sales.invoices.status-paid',
+ 'value' => 'paid'
+ ],
+ ],
+ 'info' => 'admin::app.admin.system.generate-invoice-applicable',
+ 'channel_based' => true,
+ 'locale_based' => false,
+ ], [
+ 'name' => 'order_status',
+ 'title' => 'admin::app.admin.system.set-order-status',
+ 'type' => 'select',
+ 'options' => [
+ [
+ 'title' => 'admin::app.sales.orders.order-status-pending',
+ 'value' => 'pending'
+ ], [
+ 'title' => 'admin::app.sales.orders.order-status-pending-payment',
+ 'value' => 'pending_payment'
+ ], [
+ 'title' => 'admin::app.sales.orders.order-status-processing',
+ 'value' => 'processing'
+ ]
+ ],
+ 'info' => 'admin::app.admin.system.generate-invoice-applicable',
+ 'channel_based' => true,
+ 'locale_based' => false,
+ ], [
+ 'name' => 'active',
+ 'title' => 'admin::app.admin.system.status',
+ 'type' => 'boolean',
+ 'validation' => 'required',
+ 'channel_based' => true,
+ 'locale_based' => true,
+ ], [
'name' => 'sort',
'title' => 'admin::app.admin.system.sort_order',
'type' => 'select',
@@ -73,28 +116,63 @@ return [
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
- 'channel_based' => false,
+ 'channel_based' => true,
'locale_based' => true,
], [
'name' => 'description',
'title' => 'admin::app.admin.system.description',
'type' => 'textarea',
- 'channel_based' => false,
+ 'channel_based' => true,
+ 'locale_based' => true,
+ ], [
+ 'name' => 'generate_invoice',
+ 'title' => 'Automatically generate the invoice after placing an order',
+ 'type' => 'boolean',
+ 'default_value' => false,
+ 'channel_based' => true,
+ 'locale_based' => false,
+ ], [
+ 'name' => 'invoice_status',
+ 'title' => 'Invoice status after creating the invoice',
+ 'type' => 'select',
+ 'options' => [
+ [
+ 'title' => 'Pending',
+ 'value' => 'pending'
+ ], [
+ 'title' => 'Paid',
+ 'value' => 'paid'
+ ]
+ ],
+ 'info' => 'admin::app.admin.system.generate-invoice-applicable',
+ ], [
+ 'name' => 'order_status',
+ 'title' => 'Order status after creating the invoice',
+ 'type' => 'select',
+ 'options' => [
+ [
+ 'title' => 'Pending',
+ 'value' => 'pending'
+ ], [
+ 'title' => 'Processing',
+ 'value' => 'processing'
+ ]
+ ],
+ 'info' => 'admin::app.admin.system.generate-invoice-applicable',
+ ], [
+ 'name' => 'mailing_address',
+ 'title' => 'admin::app.admin.system.mailing-address',
+ 'type' => 'textarea',
+ 'channel_based' => true,
'locale_based' => true,
], [
'name' => 'active',
'title' => 'admin::app.admin.system.status',
'type' => 'boolean',
'validation' => 'required',
- 'channel_based' => false,
+ 'channel_based' => true,
'locale_based' => true,
- ], [
- 'name' => 'mailing_address',
- 'title' => 'admin::app.admin.system.mailing-address',
- 'type' => 'textarea',
- 'channel_based' => false,
- 'locale_based' => true,
- ], [
+ ],[
'name' => 'sort',
'title' => 'admin::app.admin.system.sort_order',
'type' => 'select',
diff --git a/packages/Webkul/Payment/src/Listeners/GenerateInvoice.php b/packages/Webkul/Payment/src/Listeners/GenerateInvoice.php
new file mode 100644
index 000000000..cd352fa88
--- /dev/null
+++ b/packages/Webkul/Payment/src/Listeners/GenerateInvoice.php
@@ -0,0 +1,78 @@
+orderRepository = $orderRepository;
+ $this->invoiceRepository = $invoiceRepository;
+ }
+
+ /**
+ * Generate a new invoice.
+ *
+ * @param object $order
+ * @return void
+ */
+ public function handle($order)
+ {
+ if ($order->payment->method == 'cashondelivery' && core()->getConfigData('sales.paymentmethods.cashondelivery.generate_invoice')) {
+ $this->invoiceRepository->create($this->prepareInvoiceData($order), core()->getConfigData('sales.paymentmethods.cashondelivery.invoice_status'), core()->getConfigData('sales.paymentmethods.cashondelivery.order_status'));
+ }
+
+ if ($order->payment->method == 'moneytransfer' && core()->getConfigData('sales.paymentmethods.moneytransfer.generate_invoice')) {
+ $this->invoiceRepository->create($this->prepareInvoiceData($order), core()->getConfigData('sales.paymentmethods.moneytransfer.invoice_status'), core()->getConfigData('sales.paymentmethods.moneytransfer.order_status'));
+ }
+ }
+
+ /**
+ * Prepares order's invoice data for creation.
+ *
+ * @return array
+ */
+ protected function prepareInvoiceData($order)
+ {
+ $invoiceData = ['order_id' => $order->id];
+
+ foreach ($order->items as $item) {
+ $invoiceData['invoice']['items'][$item->id] = $item->qty_to_invoice;
+ }
+
+ return $invoiceData;
+ }
+}
\ No newline at end of file
diff --git a/packages/Webkul/Payment/src/Providers/EventServiceProvider.php b/packages/Webkul/Payment/src/Providers/EventServiceProvider.php
new file mode 100644
index 000000000..17db1ca29
--- /dev/null
+++ b/packages/Webkul/Payment/src/Providers/EventServiceProvider.php
@@ -0,0 +1,19 @@
+app->register(EventServiceProvider::class);
}
/**
@@ -44,7 +45,7 @@ class PaymentServiceProvider extends ServiceProvider
return new Payment();
});
}
-
+
/**
* Register package config.
*
diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php
index 4be69dffe..e114be08d 100755
--- a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php
+++ b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php
@@ -80,7 +80,7 @@ class InvoiceRepository extends Repository
}
/**
- * @param array $data
+ * @param array $data
* @param string $invoiceState
* @param string $orderState
* @return \Webkul\Sales\Contracts\Invoice
@@ -95,7 +95,7 @@ class InvoiceRepository extends Repository
$order = $this->orderRepository->find($data['order_id']);
$totalQty = array_sum($data['invoice']['items']);
-
+
if (isset($invoiceState)) {
$state = $invoiceState;
} else {
@@ -268,4 +268,16 @@ class InvoiceRepository extends Repository
return $invoice;
}
+
+ /**
+ * @param \Webkul\Sales\Contracts\Invoice $invoice
+ * @return void
+ */
+ public function updateState($invoice, $status)
+ {
+ $invoice->state = $status;
+ $invoice->save();
+
+ return true;
+ }
}