Added support for Streamdeck Pedal and updated UI to better fit the Packed UI style
This commit is contained in:
72
pirp/tools/migrate_full_update.sql
Normal file
72
pirp/tools/migrate_full_update.sql
Normal file
@@ -0,0 +1,72 @@
|
||||
-- PIRP Vollständige Migration (pirp -> pirp-dev)
|
||||
-- Erstellt am: 2026-02-07
|
||||
--
|
||||
-- Führt alle neuen Migrationen in der richtigen Reihenfolge aus:
|
||||
-- 1. invoice_id für journal_entries (Rechnungsverknüpfung)
|
||||
-- 2. Zahlungsdaten und MwSt-Felder
|
||||
-- 3. Unique Constraints
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- ============================================================
|
||||
-- 1. Journal-Rechnungen-Verknüpfung (migrate_journal_invoice_link.sql)
|
||||
-- ============================================================
|
||||
ALTER TABLE journal_entries ADD COLUMN IF NOT EXISTS invoice_id INTEGER REFERENCES invoices(id) ON DELETE SET NULL;
|
||||
CREATE INDEX IF NOT EXISTS idx_journal_entries_invoice ON journal_entries(invoice_id);
|
||||
|
||||
-- ============================================================
|
||||
-- 2. Journal-Auto-Buchung (migrate_journal_auto.sql)
|
||||
-- ============================================================
|
||||
|
||||
-- 2a. 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;
|
||||
|
||||
-- 2b. 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;
|
||||
|
||||
-- 2c. 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';
|
||||
|
||||
-- ============================================================
|
||||
-- 3. Unique Constraints (migrate_unique_constraints.sql)
|
||||
-- ============================================================
|
||||
|
||||
-- Zuerst evtl. vorhandene Duplikate bereinigen (behalte nur den neuesten)
|
||||
DELETE FROM journal_entries a
|
||||
USING journal_entries b
|
||||
WHERE a.invoice_id IS NOT NULL
|
||||
AND a.invoice_id = b.invoice_id
|
||||
AND a.id < b.id;
|
||||
|
||||
DELETE FROM journal_entries a
|
||||
USING journal_entries b
|
||||
WHERE a.expense_id IS NOT NULL
|
||||
AND a.expense_id = b.expense_id
|
||||
AND a.id < b.id;
|
||||
|
||||
-- Unique-Indexes erstellen (nur wenn nicht vorhanden)
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_unique_journal_invoice ON journal_entries(invoice_id) WHERE invoice_id IS NOT NULL;
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_unique_journal_expense ON journal_entries(expense_id) WHERE expense_id IS NOT NULL;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Erfolgsmeldung
|
||||
SELECT 'Migration erfolgreich abgeschlossen' AS status;
|
||||
Reference in New Issue
Block a user