diff --git a/app/Entities/Invoices/Invoice.php b/app/Entities/Invoices/Invoice.php index 927ce5d..2f35e70 100755 --- a/app/Entities/Invoices/Invoice.php +++ b/app/Entities/Invoices/Invoice.php @@ -20,4 +20,21 @@ class Invoice extends Model { return $this->belongsTo(Project::class); } + + public function generateNewNumber() + { + $prefix = date('ym'); + + + $lastInvoice = $this->orderBy('number', 'desc')->first(); + + + if (!is_null($lastInvoice)) { + $lastInvoiceNo = $lastInvoice->number; + if (substr($lastInvoiceNo, 0, 4) == $prefix) { + return ++$lastInvoiceNo; + } + } + return $prefix.'001'; + } } diff --git a/app/Services/InvoiceDraft/InvoiceDraft.php b/app/Services/InvoiceDraft/InvoiceDraft.php index c2c4772..e79f65f 100644 --- a/app/Services/InvoiceDraft/InvoiceDraft.php +++ b/app/Services/InvoiceDraft/InvoiceDraft.php @@ -62,7 +62,7 @@ class InvoiceDraft public function store() { $invoice = new Invoice(); - $invoice->number = $this->getNewInvoiceNo(); + $invoice->number = $invoice->generateNewNumber(); $invoice->items = $this->getItemsArray(); $invoice->project_id = $this->projectId; $invoice->amount = $this->getTotal(); @@ -75,22 +75,6 @@ class InvoiceDraft return $invoice; } - public function getNewInvoiceNo() - { - $prefix = date('ym'); - - $lastInvoice = Invoice::orderBy('number', 'desc')->first(); - - if (!is_null($lastInvoice)) { - $lastInvoiceNo = $lastInvoice->number; - if (substr($lastInvoiceNo, 0, 3) == $prefix) { - return ++$lastInvoiceNo; - } - } - - return $prefix.'001'; - } - protected function getItemsArray() { $items = []; diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php index d83cd47..03ed0f3 100644 --- a/database/factories/ModelFactory.php +++ b/database/factories/ModelFactory.php @@ -139,12 +139,12 @@ $factory->define(Event::class, function (Faker\Generator $faker) { }); $factory->define(Invoice::class, function (Faker\Generator $faker) { - + $invoice = new Invoice; return [ 'project_id' => function () { return factory(Project::class)->create()->id; }, - 'number' => date('ym').'001', + 'number' => $invoice->generateNewNumber(), 'items' => [], 'amount' => 100000, 'notes' => $faker->paragraph, diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index fcd4d0f..b4f9941 100755 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -9,7 +9,6 @@