Steuerkram/migrations/049_bank_tables.sql

56 lines
2.5 KiB
SQL

-- Bank-Import-Formate
CREATE TABLE IF NOT EXISTS bank_import_formats (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
skip_rows INT NOT NULL DEFAULT 3,
has_header_row TINYINT(1) NOT NULL DEFAULT 1,
delimiter CHAR(1) NOT NULL DEFAULT ';',
enclosure CHAR(1) NOT NULL DEFAULT '"',
col_buchungstag INT NOT NULL DEFAULT 0,
col_wertstellung INT NOT NULL DEFAULT 1,
col_vorgang INT NOT NULL DEFAULT 2,
col_buchungstext INT NOT NULL DEFAULT 3,
col_wert INT NOT NULL DEFAULT 4,
date_format VARCHAR(20) NOT NULL DEFAULT 'd.m.Y',
decimal_separator CHAR(1) NOT NULL DEFAULT ',',
thousands_separator CHAR(1) NOT NULL DEFAULT '.',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Import-Batches (Datei-Uploads)
CREATE TABLE IF NOT EXISTS bank_import_batches (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
format_id INT UNSIGNED NOT NULL,
filename VARCHAR(255) NOT NULL,
row_count INT NOT NULL DEFAULT 0,
imported_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (format_id) REFERENCES bank_import_formats(id) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Importierte Bankbuchungen
CREATE TABLE IF NOT EXISTS bank_transactions (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
batch_id INT UNSIGNED NOT NULL,
buchungstag DATE NOT NULL,
wertstellung DATE NOT NULL,
vorgang VARCHAR(255) NOT NULL DEFAULT '',
buchungstext TEXT NOT NULL,
wert DECIMAL(12,2) NOT NULL,
status ENUM('offen','gebucht','ignoriert') NOT NULL DEFAULT 'offen',
beleg_id INT UNSIGNED NULL DEFAULT NULL,
raw_line TEXT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (batch_id) REFERENCES bank_import_batches(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Comdirect-Format: 3 Zeilen überspringen, dann Headerzeile, dann Daten
-- Semikolon-getrennt, Anführungszeichen-umschlossen, deutsches Datumsformat
INSERT INTO bank_import_formats
(name, skip_rows, has_header_row, delimiter, enclosure,
col_buchungstag, col_wertstellung, col_vorgang, col_buchungstext, col_wert,
date_format, decimal_separator, thousands_separator)
VALUES
('Comdirect', 3, 1, ';', '"',
0, 1, 2, 3, 4,
'd.m.Y', ',', '.')
ON DUPLICATE KEY UPDATE name = name;