Invoice::generateNumber(), 'subtotal' => 0, 'tax_amount' => 0, 'total' => 0, ]); foreach ($items as $item) { $item['total'] = $item['quantity'] * $item['unit_price']; $item['is_taxable'] = isset($item['is_taxable']) && $item['is_taxable'] ? true : false; $invoice->items()->create($item); } $invoice->recalculate(); return $invoice; } public function update(Invoice $invoice, array $data, array $items): Invoice { $invoice->update($data); $invoice->items()->delete(); foreach ($items as $item) { $item['total'] = $item['quantity'] * $item['unit_price']; $item['is_taxable'] = isset($item['is_taxable']) && $item['is_taxable'] ? true : false; $invoice->items()->create($item); } $invoice->recalculate(); return $invoice->fresh(); } public function generatePdf(Invoice $invoice): Response { $invoice->load('client', 'items'); $invoiceSettings = InvoiceSettings::instance(); $pdf = Pdf::loadView('invoices.pdf', compact('invoice', 'invoiceSettings')); $pdf->setPaper('A4', 'portrait'); return $pdf->download("invoice-{$invoice->invoice_number}.pdf"); } public function generateLegacyPdf(Invoice $invoice): Response { $invoice->load('client', 'items'); $invoiceSettings = InvoiceSettings::instance(); $pdf = Pdf::loadView('invoices.pdf-legacy', compact('invoice', 'invoiceSettings')); $pdf->setPaper('A4', 'portrait'); return $pdf->download("invoice-{$invoice->invoice_number}-legacy.pdf"); } }