31 lines
1.8 KiB
SQL
31 lines
1.8 KiB
SQL
-- Journal-Auto-Buchung: Datenbank-Migration
|
|
-- Erweitert invoices, expenses und journal_entries für automatische Journaleinträge
|
|
-- Zufluss-/Abflussprinzip (§ 11 EStG)
|
|
|
|
-- 1. Rechnungen: Zahlungsdatum hinzufügen
|
|
ALTER TABLE invoices ADD COLUMN IF NOT EXISTS payment_date DATE;
|
|
|
|
-- Bestehende bezahlte Rechnungen: invoice_date als Fallback
|
|
UPDATE invoices SET payment_date = invoice_date WHERE paid = TRUE AND payment_date IS NULL;
|
|
|
|
-- 2. Ausgaben: MwSt-Felder und Kategorien-Verknüpfung
|
|
ALTER TABLE expenses ADD COLUMN IF NOT EXISTS vat_rate NUMERIC(5,2) DEFAULT 0;
|
|
ALTER TABLE expenses ADD COLUMN IF NOT EXISTS total_net NUMERIC(12,2);
|
|
ALTER TABLE expenses ADD COLUMN IF NOT EXISTS total_vat NUMERIC(12,2) DEFAULT 0;
|
|
ALTER TABLE expenses ADD COLUMN IF NOT EXISTS expense_category_id INTEGER REFERENCES journal_expense_categories(id) ON DELETE SET NULL;
|
|
ALTER TABLE expenses ADD COLUMN IF NOT EXISTS payment_date DATE;
|
|
|
|
-- Bestehende Ausgaben: amount als Netto (kein MwSt-Split bekannt), Zahlungsdatum = Ausgabedatum
|
|
UPDATE expenses SET total_net = amount, total_vat = 0 WHERE total_net IS NULL;
|
|
UPDATE expenses SET payment_date = expense_date WHERE paid = TRUE AND payment_date IS NULL;
|
|
|
|
-- 3. Journal-Einträge: Ausgaben-Verknüpfung und Quell-Typ
|
|
ALTER TABLE journal_entries ADD COLUMN IF NOT EXISTS expense_id INTEGER REFERENCES expenses(id) ON DELETE SET NULL;
|
|
ALTER TABLE journal_entries ADD COLUMN IF NOT EXISTS source_type VARCHAR(20) DEFAULT 'manual';
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_journal_entries_expense ON journal_entries(expense_id);
|
|
CREATE INDEX IF NOT EXISTS idx_journal_entries_source ON journal_entries(source_type);
|
|
|
|
-- Bestehende Rechnungs-Buchungen als source_type markieren
|
|
UPDATE journal_entries SET source_type = 'invoice_payment' WHERE invoice_id IS NOT NULL AND source_type = 'manual';
|