invoice = $invoice; $this->client_id = $invoice?->client_id; $this->notes = $invoice?->notes; $this->internal_notes = $invoice?->internal_notes; } public function updateClient(): void { $this->validate([ 'client_id' => 'required|exists:clients,id' ]); $this->invoice->update(['client_id' => $this->client_id]); } public function updateNotes(): void { $this->validate([ 'notes' => 'nullable|string', 'internal_notes' => 'nullable|string' ]); $this->invoice->update([ 'notes' => $this->notes, 'internal_notes' => $this->internal_notes, ]); } public function setStatus($newStatus): void { $updatedValue = match ($newStatus) { 'posted' => InvoiceStatus::POSTED, 'draft' => InvoiceStatus::DRAFT, 'void' => InvoiceStatus::VOID, 'paid' => InvoiceStatus::PAID, default => $this->invoice->status }; $this->invoice->update([ 'status' => $updatedValue, ]); if ($newStatus === 'posted') { $this->invoice->update([ 'invoice_date' => now(), 'due_date' => now()->addDays(30), ]); } } #[Computed] public function clients() { return Client::where('status', 'active')->orderBy('abbreviation')->get(); } }; ?>
Manage Invoice
@if($this->invoice->status === InvoiceStatus::DRAFT) Void Invoice Post Invoice @elseif($this->invoice->status === InvoiceStatus::POSTED) Void Invoice Un-Post Invoice @elseif($this->invoice->status === InvoiceStatus::VOID) Restore Invoice @endif
ID {{ $invoice->id }}
Invoice Number {{ $invoice->invoice_number }}
UUID {{ $invoice->uuid }}
@if($invoice->status !== InvoiceStatus::DRAFT)
Client {{ $invoice->client->name }}
Invoice Date {{ $invoice->invoice_date?->format('m/d/Y') }}
Due Date {{ $invoice->due_date?->format('m/d/Y') }}
Sent Date {{ $invoice->sent_at?->format('m/d/Y') }}
@else @foreach($this->clients as $client) {{ $client->name }} @endforeach @endif
Status {{ $invoice->status->label() }}
Created {{ $invoice->created_at->local()->format('m/d/Y | h:m:s') }}
Last Updated {{ $invoice->updated_at->local()->format('m/d/Y | h:m:s') }}
Save Notes