Skip to content

Commit

Permalink
generate bill number
Browse files Browse the repository at this point in the history
  • Loading branch information
denisdulici committed Mar 5, 2020
1 parent 907d348 commit 8201af7
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 2 deletions.
4 changes: 3 additions & 1 deletion app/Http/Controllers/Purchases/Bills.php
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,9 @@ public function create()

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

/**
Expand Down
23 changes: 23 additions & 0 deletions app/Listeners/Purchase/IncreaseNextBillNumber.php
Original file line number Diff line number Diff line change
@@ -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();
}
}
1 change: 1 addition & 0 deletions app/Models/Purchase/Bill.php
Original file line number Diff line number Diff line change
Expand Up @@ -99,5 +99,6 @@ public function scopeNumber($query, $number)
public function onCloning($src, $child = null)
{
$this->status = 'draft';
$this->bill_number = $this->getNextBillNumber();
}
}
1 change: 1 addition & 0 deletions app/Providers/Event.php
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
27 changes: 27 additions & 0 deletions app/Traits/Purchases.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,33 @@

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
*
Expand Down
2 changes: 1 addition & 1 deletion resources/views/purchases/bills/create.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -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::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',[]) }}

Expand Down

0 comments on commit 8201af7

Please sign in to comment.