You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
924 B
37 lines
924 B
<?php
|
|
|
|
use App\Domains\Billing\Actions\Invoicing\UpdateInvoiceStatus;
|
|
use App\Domains\Billing\Enums\Invoicing\InvoiceStatus;
|
|
use App\Domains\Billing\Models\Invoice;
|
|
use App\Livewire\Concerns\WithToast;
|
|
use Livewire\Attributes\Computed;
|
|
use Livewire\Component;
|
|
|
|
new class extends Component
|
|
{
|
|
use WithToast;
|
|
|
|
public string $invoiceId;
|
|
|
|
public function mount(string $id): void {
|
|
$this->invoiceId = $id;
|
|
}
|
|
|
|
#[Computed]
|
|
public function invoice(): Invoice
|
|
{
|
|
return Invoice::with(['items'])->findOrFail($this->invoiceId);
|
|
}
|
|
|
|
#[Computed]
|
|
public function schema(): array
|
|
{
|
|
return $this->invoice->type->schema()->getSchema();
|
|
}
|
|
|
|
public function issueInvoice(UpdateInvoiceStatus $invoiceStatus): void
|
|
{
|
|
$invoiceStatus->execute($this->invoice, InvoiceStatus::ISSUED);
|
|
$this->success(__('domains/billing/messages.invoice_issued'));
|
|
}
|
|
};
|
|
|