24 lines
1 KiB
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;
|