prepare("SELECT id FROM invoices WHERE storno_of = :id LIMIT 1"); $stmt->execute([':id' => $id]); $existing_storno = $stmt->fetchColumn(); } catch (\PDOException $e) { $existing_storno = false; } if ($existing_storno) { header('Location: ' . url_for('invoices.php?msg=' . urlencode('Für diese Rechnung existiert bereits eine Stornorechnung.'))); exit; } $error = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { try { $storno_id = create_storno_invoice($id); archive_invoice_pdf($storno_id); // Journalbuchung stornieren falls vorhanden $original_entry = get_journal_entry_for_invoice($id); if ($original_entry) { create_storno_journal_entry($id, $storno_id); } $stmt = $pdo->prepare("SELECT invoice_number FROM invoices WHERE id = :id"); $stmt->execute([':id' => $storno_id]); $storno_number = $stmt->fetchColumn(); header('Location: ' . url_for('invoices.php?msg=' . urlencode('Stornorechnung ' . $storno_number . ' erstellt.'))); exit; } catch (\Exception $e) { $error = $e->getMessage(); } } ?> Storno – <?= htmlspecialchars($inv['invoice_number']) ?>

PIRP

← Zurück zu Rechnungen

Stornorechnung erstellen

Rechnungsnummer
Kunde
Datum
Betrag
Status
Achtung: Es wird eine neue Rechnung mit negativen Beträgen (Stornorechnung) erstellt. Die bestehende Journalbuchung wird automatisch storniert (Gegenbuchung). Die Rechnung ist noch nicht bezahlt – es wird keine Journalbuchung storniert.
Abbrechen