generate bill number

This commit is contained in:
denisdulici 2020-03-05 17:22:07 +03:00
parent 907d348d8f
commit 8201af741b
6 changed files with 56 additions and 2 deletions

View File

@ -108,7 +108,9 @@ class Bills extends Controller
$categories = Category::type('expense')->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('expense')->enabled()->orderBy('name')->pluck('name', 'id');
return view('purchases.bills.create', compact('vendors', 'currencies', 'currency', 'items', 'taxes', 'categories')); $number = $this->getNextBillNumber();
return view('purchases.bills.create', compact('vendors', 'currencies', 'currency', 'items', 'taxes', 'categories', 'number'));
} }
/** /**

View File

@ -0,0 +1,23 @@
<?php
namespace App\Listeners\Purchase;
use App\Events\Purchase\BillCreated as Event;
use App\Traits\Purchases;
class IncreaseNextBillNumber
{
use Purchases;
/**
* Handle the event.
*
* @param $event
* @return void
*/
public function handle(Event $event)
{
// Update next bill number
$this->increaseNextBillNumber();
}
}

View File

@ -99,5 +99,6 @@ class Bill extends DocumentModel
public function onCloning($src, $child = null) public function onCloning($src, $child = null)
{ {
$this->status = 'draft'; $this->status = 'draft';
$this->bill_number = $this->getNextBillNumber();
} }
} }

View File

@ -25,6 +25,7 @@ class Event extends Provider
], ],
'App\Events\Purchase\BillCreated' => [ 'App\Events\Purchase\BillCreated' => [
'App\Listeners\Purchase\CreateBillCreatedHistory', 'App\Listeners\Purchase\CreateBillCreatedHistory',
'App\Listeners\Purchase\IncreaseNextBillNumber',
], ],
'App\Events\Purchase\BillReceived' => [ 'App\Events\Purchase\BillReceived' => [
'App\Listeners\Purchase\MarkBillReceived', 'App\Listeners\Purchase\MarkBillReceived',

View File

@ -4,6 +4,33 @@ namespace App\Traits;
trait Purchases trait Purchases
{ {
/**
* Generate next bill number
*
* @return string
*/
public function getNextBillNumber()
{
$prefix = setting('bill.number_prefix', 'BIL-');
$next = setting('bill.number_next', '1');
$digit = setting('bill.number_digit', '5');
$number = $prefix . str_pad($next, $digit, '0', STR_PAD_LEFT);
return $number;
}
/**
* Increase the next bill number
*/
public function increaseNextBillNumber()
{
$next = setting('bill.number_next', 1) + 1;
setting(['bill.number_next' => $next]);
setting()->save();
}
/** /**
* Get a collection of bill statuses * Get a collection of bill statuses
* *

View File

@ -25,7 +25,7 @@
{{ Form::dateGroup('due_at', trans('bills.due_date'), 'calendar', ['id' => 'due_at', 'class' => 'form-control datepicker', 'required' => 'required', 'date-format' => 'Y-m-d', 'autocomplete' => 'off'], request()->get('due_at', request()->get('billed_at', Date::now()->toDateString()))) }} {{ Form::dateGroup('due_at', trans('bills.due_date'), 'calendar', ['id' => 'due_at', 'class' => 'form-control datepicker', 'required' => 'required', 'date-format' => 'Y-m-d', 'autocomplete' => 'off'], request()->get('due_at', request()->get('billed_at', Date::now()->toDateString()))) }}
{{ Form::textGroup('bill_number', trans('bills.bill_number'), 'file') }} {{ Form::textGroup('bill_number', trans('bills.bill_number'), 'file', ['required' => 'required'], $number) }}
{{ Form::textGroup('order_number', trans('bills.order_number'), 'shopping-cart',[]) }} {{ Form::textGroup('order_number', trans('bills.order_number'), 'shopping-cart',[]) }}