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');
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)
{
$this->status = 'draft';
$this->bill_number = $this->getNextBillNumber();
}
}

View File

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

View File

@ -4,6 +4,33 @@ namespace App\Traits;
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
*