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') }}