diff --git a/src/Controllers/BelegController.php b/src/Controllers/BelegController.php index 471cbfb..809d885 100644 --- a/src/Controllers/BelegController.php +++ b/src/Controllers/BelegController.php @@ -230,9 +230,28 @@ class BelegController $beleg = Beleg::find((int)$params['id']); if (!$beleg) { http_response_code(404); return; } - // Beleg ohne physische Datei → PDF der verknüpften Rechnung ausliefern + // Beleg ohne physische Datei → PDF der verknüpften Rechnung inline ausliefern if (empty($beleg['storage_path']) && !empty($beleg['invoice_id'])) { - header('Location: /invoices/' . (int)$beleg['invoice_id'] . '/pdf'); + $invoice = \Steuerkram\Models\Invoice::find((int)$beleg['invoice_id']); + if (!$invoice) { http_response_code(404); return; } + + if (!empty($invoice['storno_of_id'])) { + $original = \Steuerkram\Models\Invoice::find((int)$invoice['storno_of_id']); + if ($original) { + $invoice['original_rechnungs_nr'] = $original['rechnungs_nr']; + $invoice['original_rechnungs_datum'] = $original['rechnungs_datum']; + } + } + + $lines = \Steuerkram\Models\Invoice::lines((int)$invoice['id']); + $settings = \Steuerkram\Models\Setting::get(); + $svc = new \Steuerkram\Services\PdfInvoiceService(); + $pdf = $svc->renderToString($invoice, $lines, $settings); + + header('Content-Type: application/pdf'); + header('Content-Disposition: inline; filename="' . $beleg['filename'] . '"'); + header('Content-Length: ' . strlen($pdf)); + echo $pdf; exit; }