Steuerkram/migrations/053_bank_transaction_belege.sql

24 lines
1 KiB
SQL

-- n:m-Verknüpfung Bankbuchung <-> Belege mit zugewiesenem Betrag
CREATE TABLE IF NOT EXISTS bank_transaction_belege (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
bank_tx_id INT UNSIGNED NOT NULL,
beleg_id INT UNSIGNED NOT NULL,
betrag DECIMAL(12,2) NOT NULL DEFAULT 0.00,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uq_tx_beleg (bank_tx_id, beleg_id),
FOREIGN KEY (bank_tx_id) REFERENCES bank_transactions(id) ON DELETE CASCADE,
FOREIGN KEY (beleg_id) REFERENCES belege(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bestehende 1:1-Verknüpfungen migrieren
INSERT IGNORE INTO bank_transaction_belege (bank_tx_id, beleg_id, betrag)
SELECT bt.id, bt.beleg_id, ABS(bt.wert)
FROM bank_transactions bt
WHERE bt.beleg_id IS NOT NULL;
-- Neuer Status 'teilweise'
ALTER TABLE bank_transactions
MODIFY COLUMN status ENUM('offen','teilweise','gebucht','ignoriert') NOT NULL DEFAULT 'offen';
-- Altes Einzelfeld entfernen
ALTER TABLE bank_transactions DROP COLUMN beleg_id;