diff --git a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php
index 6ff33c4ee..0a68c7d80 100755
--- a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php
+++ b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php
@@ -28,7 +28,7 @@ class OrderDataGrid extends DataGrid
$leftJoin->on('order_address_billing.order_id', '=', 'orders.id')
->where('order_address_billing.address_type', 'billing');
})
- ->addSelect('orders.id', 'orders.base_sub_total', 'orders.base_grand_total', 'orders.created_at', 'channel_name', 'status')
+ ->addSelect('orders.id','orders.increment_id', 'orders.base_sub_total', 'orders.base_grand_total', 'orders.created_at', 'channel_name', 'status')
->addSelect(DB::raw('CONCAT(order_address_billing.first_name, " ", order_address_billing.last_name) as billed_to'))
->addSelect(DB::raw('CONCAT(order_address_shipping.first_name, " ", order_address_shipping.last_name) as shipped_to'));
@@ -50,7 +50,14 @@ class OrderDataGrid extends DataGrid
'sortable' => true,
'filterable' => true
]);
-
+ $this->addColumn([
+ 'index' => 'increment_id',
+ 'label' => trans('admin::app.datagrid.order_number'),
+ 'type' => 'string',
+ 'searchable' => true,
+ 'sortable' => true,
+ 'filterable' => true
+ ]);
$this->addColumn([
'index' => 'base_sub_total',
'label' => trans('admin::app.datagrid.sub-total'),
diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php
index 174f91726..250caacd3 100755
--- a/packages/Webkul/Admin/src/Resources/lang/en/app.php
+++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php
@@ -196,7 +196,8 @@ return [
'ends-till' => 'Ends Till',
'per-cust' => 'Per Customer',
'usage-throttle' => 'Usage Times',
- 'for-guest' => 'For Guest'
+ 'for-guest' => 'For Guest',
+ 'order_number' => 'Order Number'
],
'account' => [
@@ -1130,7 +1131,13 @@ return [
'logo-image' => 'Logo Image',
'credit-max' => 'Customer Credit Max',
'credit-max-value' => 'Credit Max Value',
- 'use-credit-max' => 'Use Credit Max'
+ 'use-credit-max' => 'Use Credit Max',
+ 'invoice-settings' => 'Invoice Settings',
+ 'invoiceNumber' => 'Invoice Number Settings',
+ 'invoice number prefix' => 'Invoice Number Prefix',
+ 'invoice number length' => 'Invoice Number Length',
+ 'invoice number suffix' => 'Invoice Number Suffix',
+
]
]
];
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 4fb15debd..a14f756ff 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
@@ -14,7 +14,7 @@
- {{ __('admin::app.sales.orders.view-title', ['order_id' => $order->id]) }}
+ {{ __('admin::app.sales.orders.view-title', ['order_id' => $order->increment_id]) }}
diff --git a/packages/Webkul/Sales/src/Config/system.php b/packages/Webkul/Sales/src/Config/system.php
new file mode 100644
index 000000000..b811a8f6d
--- /dev/null
+++ b/packages/Webkul/Sales/src/Config/system.php
@@ -0,0 +1,39 @@
+ 'sales.invoiceSettings',
+ 'name' => 'admin::app.admin.system.invoice-settings',
+ 'sort' => 3,
+ ],[
+ 'key' => 'sales.invoiceSettings.invoice_number',
+ 'name' => 'admin::app.admin.system.invoiceNumber',
+ 'sort' => 0,
+ 'fields' => [
+ [
+ 'name' => 'invoice_number_prefix',
+ 'title' => 'admin::app.admin.system.invoice number prefix',
+ 'type' => 'text',
+ 'validation' => false,
+ 'channel_based' => true,
+ 'locale_based' => true
+ ],
+ [
+ 'name' => 'invoice_number_length',
+ 'title' => 'admin::app.admin.system.invoice number length',
+ 'type' => 'text',
+ 'validation' => false,
+ 'channel_based' => true,
+ 'locale_based' => true
+ ],
+ [
+ 'name' => 'invoice_number_suffix',
+ 'title' => 'admin::app.admin.system.invoice number suffix',
+ 'type' => 'text',
+ 'validation' => false,
+ 'channel_based' => true,
+ 'locale_based' => true
+ ],
+ ]
+ ]
+];
\ No newline at end of file
diff --git a/packages/Webkul/Sales/src/Providers/SalesServiceProvider.php b/packages/Webkul/Sales/src/Providers/SalesServiceProvider.php
index 19375e276..ea8dddc5d 100755
--- a/packages/Webkul/Sales/src/Providers/SalesServiceProvider.php
+++ b/packages/Webkul/Sales/src/Providers/SalesServiceProvider.php
@@ -20,5 +20,8 @@ class SalesServiceProvider extends ServiceProvider
*/
public function register()
{
+ $this->mergeConfigFrom(
+ dirname(__DIR__) . '/Config/system.php', 'core'
+ );
}
}
\ No newline at end of file
diff --git a/packages/Webkul/Sales/src/Repositories/OrderRepository.php b/packages/Webkul/Sales/src/Repositories/OrderRepository.php
index 96e525555..e3941aa84 100755
--- a/packages/Webkul/Sales/src/Repositories/OrderRepository.php
+++ b/packages/Webkul/Sales/src/Repositories/OrderRepository.php
@@ -9,6 +9,7 @@ use Illuminate\Database\Eloquent\Model;
use Webkul\Core\Eloquent\Repository;
use Webkul\Sales\Contracts\Order;
use Webkul\Sales\Repositories\OrderItemRepository;
+use Webkul\Core\Models\CoreConfig;
/**
* Order Reposotory
@@ -143,14 +144,30 @@ class OrderRepository extends Repository
/**
* @inheritDoc
+ * @return int|string
*/
public function generateIncrementId()
{
- $lastOrder = $this->model->orderBy('id', 'desc')->limit(1)->first();
+ $config = new CoreConfig();
+ $invoiceNumberPrefix = $config->where('code','=',"sales.invoiceSettings.invoice_number.invoice_number_prefix")->first()
+ ? $config->where('code','=',"sales.invoiceSettings.invoice_number.invoice_number_prefix")->first()->value : false;
+ $invoiceNumberLength = $config->where('code','=',"sales.invoiceSettings.invoice_number.invoice_number_length")->first()
+ ? $config->where('code','=',"sales.invoiceSettings.invoice_number.invoice_number_length")->first()->value : false;
+ $invoiceNumberSuffix = $config->where('code','=',"sales.invoiceSettings.invoice_number.invoice_number_suffix")->first()
+ ? $config->where('code','=',"sales.invoiceSettings.invoice_number.invoice_number_suffix")->first()->value: false;
+ $lastOrder = $this->model->orderBy('id', 'desc')->limit(1)->first();
$lastId = $lastOrder ? $lastOrder->id : 0;
- return $lastId + 1;
+ if($invoiceNumberLength && ( $invoiceNumberPrefix || $invoiceNumberSuffix) ){
+
+ $invoiceNumber = $invoiceNumberPrefix . sprintf("%0{$invoiceNumberLength}d", $lastId + 1) . $invoiceNumberSuffix;
+ }
+ else{
+ $invoiceNumber = $lastId + 1;
+ }
+
+ return $invoiceNumber;
}
/**
diff --git a/packages/Webkul/Shop/src/DataGrids/OrderDataGrid.php b/packages/Webkul/Shop/src/DataGrids/OrderDataGrid.php
index 15288f439..faf541cca 100644
--- a/packages/Webkul/Shop/src/DataGrids/OrderDataGrid.php
+++ b/packages/Webkul/Shop/src/DataGrids/OrderDataGrid.php
@@ -20,7 +20,7 @@ class OrderDataGrid extends DataGrid
public function prepareQueryBuilder()
{
$queryBuilder = DB::table('orders as order')
- ->addSelect('order.id', 'order.status', 'order.created_at', 'order.grand_total', 'order.order_currency_code')
+ ->addSelect('order.id','order.increment_id', 'order.status', 'order.created_at', 'order.grand_total', 'order.order_currency_code')
->where('customer_id', auth()->guard('customer')->user()->id);
$this->setQueryBuilder($queryBuilder);
@@ -29,9 +29,9 @@ class OrderDataGrid extends DataGrid
public function addColumns()
{
$this->addColumn([
- 'index' => 'id',
+ 'index' => 'increment_id',
'label' => trans('shop::app.customer.account.order.index.order_id'),
- 'type' => 'number',
+ 'type' => 'text',
'searchable' => false,
'sortable' => true,
'filterable' => true
diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/success.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/success.blade.php
index 41d3d989f..c403360ad 100755
--- a/packages/Webkul/Shop/src/Resources/views/checkout/success.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/checkout/success.blade.php
@@ -9,7 +9,7 @@
{{ __('shop::app.checkout.success.thanks') }}
-
{{ __('shop::app.checkout.success.order-id-info', ['order_id' => $order->id]) }}
+
{{ __('shop::app.checkout.success.order-id-info', ['order_id' => $order->increment_id]) }}
{{ __('shop::app.checkout.success.info') }}