From 63410cfbc9ef402aa620588a30e8d9c5ff0761e5 Mon Sep 17 00:00:00 2001 From: Edmond Teh Date: Sat, 26 Sep 2020 02:45:54 +0800 Subject: [PATCH] fix problem with ei and edo duplicate --- app/Http/Controllers/InvoiceController.php | 27 +++++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 97b09fc8..a4c07886 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -312,13 +312,28 @@ class InvoiceController extends Controller $booking = Booking::find($id); - $monthlycount = Invoice::where('ei', 'like', 'EI-'.Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('Ym').'%')->count() + 1; - $generatednumber = Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('Ym').'-'.sprintf("%05d", $monthlycount); - + // Generate EI and EDO only if not exist $invoice = Invoice::where('booking_id', $id)->first(); - $invoice->ei = 'EI-'.$generatednumber; - $invoice->edo = 'EDO-'.$generatednumber; - $invoice->save(); + var_dump($invoice->ei); + + if (!$invoice->ei && !$invoice->edo) { + + + + $monthlycount = Invoice::where('ei', 'like', 'EI-'.Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('Ym').'%')->count() + 1; + $generatednumber = Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('Ym').'-'.sprintf("%05d", $monthlycount); + $invoice->ei = 'EI-'.$generatednumber; + $invoice->edo = 'EDO-'.$generatednumber; + + // Skip to next count if already exist + while (Invoice::where('ei', $invoice->ei)->exists() || Invoice::where('edo', $invoice->edo)->exists()) { + $monthlycount = $monthlycount + 1; + $generatednumber = Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('Ym').'-'.sprintf("%05d", $monthlycount); + $invoice->ei = 'EI-'.$generatednumber; + $invoice->edo = 'EDO-'.$generatednumber; + } + $invoice->save(); + } if(!$status) { return response()->json(['message' => 'Unable to Update Status'], 500);