Files
boc/aamos-ledger-rust/migrations/20250101000005_create_reconciliation.sql.bak
T
Bernt 6de2455917 v1.2.0: Add Global Markets footer, translated to 9 languages
- Added GLOBAL_MARKETS_TITLE to all translation files
- Updated footer with 12 markets (4 active + 8 upcoming)
- Translated market section to: zh-cn, zh-tw, ja, ko, th, vi, id, ms, hi
- Built and deployed to production
- CloudFront invalidation: I3RTMXVFDJXWLG3SYX208OP1CC
2026-07-08 19:56:03 +00:00

69 lines
2.7 KiB
Plaintext

CREATE TABLE IF NOT EXISTS ledger_reconciliation_sessions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id TEXT NOT NULL,
account_number TEXT NOT NULL,
period TEXT NOT NULL,
fiscal_year INTEGER NOT NULL,
status TEXT NOT NULL DEFAULT 'open',
bank_balance NUMERIC(19, 4),
ledger_balance NUMERIC(19, 4),
difference NUMERIC(19, 4),
trace_id UUID NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
completed_at TIMESTAMPTZ
);
CREATE INDEX idx_recon_sessions_tenant ON ledger_reconciliation_sessions(tenant_id);
CREATE INDEX idx_recon_sessions_account ON ledger_reconciliation_sessions(account_number);
CREATE INDEX idx_recon_sessions_period ON ledger_reconciliation_sessions(period, fiscal_year);
CREATE INDEX idx_recon_sessions_status ON ledger_reconciliation_sessions(status);
CREATE TABLE IF NOT EXISTS ledger_reconciliation_matches (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
session_id UUID NOT NULL REFERENCES ledger_reconciliation_sessions(id) ON DELETE CASCADE,
transaction_id TEXT NOT NULL,
entry_id UUID NOT NULL,
line_account TEXT NOT NULL,
match_type TEXT NOT NULL DEFAULT 'manual',
confidence NUMERIC(5, 4),
matched_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
matched_by TEXT
);
CREATE INDEX idx_recon_matches_session ON ledger_reconciliation_matches(session_id);
CREATE INDEX idx_recon_matches_txn ON ledger_reconciliation_matches(transaction_id);
CREATE INDEX idx_recon_matches_entry ON ledger_reconciliation_matches(entry_id);
CREATE TABLE IF NOT EXISTS ledger_bank_transactions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
session_id UUID REFERENCES ledger_reconciliation_sessions(id) ON DELETE SET NULL,
transaction_id TEXT NOT NULL UNIQUE,
transaction_date DATE NOT NULL,
description TEXT,
amount NUMERIC(19, 4) NOT NULL,
currency TEXT NOT NULL DEFAULT 'SEK',
reference TEXT,
matched_entry_id TEXT,
account_number TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_bank_txn_session ON ledger_bank_transactions(session_id);
CREATE INDEX idx_bank_txn_matched ON ledger_bank_transactions(matched_entry_id);
CREATE INDEX idx_bank_txn_account ON ledger_bank_transactions(account_number);
CREATE TABLE IF NOT EXISTS ledger_audit_log (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
table_name TEXT NOT NULL,
record_id TEXT NOT NULL,
action TEXT NOT NULL,
old_values JSONB,
new_values JSONB,
changed_by TEXT NOT NULL,
changed_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_audit_table ON ledger_audit_log(table_name, record_id);
CREATE INDEX idx_audit_changed_at ON ledger_audit_log(changed_at);