diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 8c8b6844..29c72492 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Illuminate\Validation\Rule; use Illuminate\Routing\ResponseFactory; use Illuminate\Support\MessageBag; use Illuminate\Support\Facades\DB; @@ -26,7 +27,10 @@ class InvoiceController extends Controller } $lines = InvoiceDetails::where('invoice_id', $invoice['id'])->orderBy('order', 'asc')->get(); + $status = InvoiceStatuses::where('invoice_id', $invoice['id'])->orderBy('created_at', 'asc')->get(); + $invoice->lines = $lines; + $invoice->status = $status; return response()->json($invoice, 200); } @@ -121,6 +125,12 @@ class InvoiceController extends Controller $invoice->lines = $invoice_details; + // Post status as pending + $status = new InvoiceStatuses; + $status->status = 'pending'; + $status->comment = ''; + $status->invoice_id = $invoice->id; + $status->save(); if($invoice_details) { return $this->show($id); @@ -134,9 +144,29 @@ class InvoiceController extends Controller } - public function updateStatus(Request $request, $id) + public function postStatus(Request $request, $id) { + // validate $id is integer + + $validatedData = $request->validate([ + 'status' => ['required', Rule::in('request_change', 'approve')], + 'comment' => Rule::requiredIf($request->status === 'request_change') + ]); + + // Save to database + + $status = new InvoiceStatuses; + $status->status = $validatedData['status']; + $status->comment = $validatedData['comment']; + $status->invoice_id = Invoice::where('booking_id', $id)->first()['id']; + $status->save(); + + // Response + + return response()->json($status, 201); + + } public function getPO($id) diff --git a/resources/assets/js/components/NewInvoice.vue b/resources/assets/js/components/NewInvoice.vue index 0d1f6979..f93ff154 100644 --- a/resources/assets/js/components/NewInvoice.vue +++ b/resources/assets/js/components/NewInvoice.vue @@ -1,12 +1,20 @@ /* eslint-disable camelcase */ - - Purchase Order (Pending Approval) - - - Purchase Order - + + + Purchase Order (Pending Approval) + + + Purchase Order (Approved) + + + Purchase Order (Please Change) + + + Purchase Order + + @@ -289,6 +297,43 @@ + + + Admin Panel + + Action + + Approve + Request Change + + + Action Required + + + + Comment + + + Comment required if you are requesting change from customer. + + + Submit + +