6de2455917
- 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
69 lines
2.7 KiB
Plaintext
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);
|