-- Таблица строк ОСВ по счёту 76.06 (лицевые счета жителей) CREATE TABLE IF NOT EXISTS report_76_rows ( id BIGSERIAL PRIMARY KEY, report_id BIGINT NOT NULL REFERENCES financial_reports(id) ON DELETE CASCADE, row_index INTEGER NOT NULL, account_label TEXT NOT NULL, account_ls TEXT, saldo_start_debet NUMERIC(15, 2) DEFAULT 0, turnover_debet NUMERIC(15, 2) DEFAULT 0, turnover_credit NUMERIC(15, 2) DEFAULT 0, saldo_end_debet NUMERIC(15, 2) DEFAULT 0, saldo_end_credit NUMERIC(15, 2) DEFAULT 0, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE INDEX IF NOT EXISTS idx_report_76_rows_report_id ON report_76_rows(report_id); COMMENT ON TABLE report_76_rows IS 'Строки ОСВ по счёту 76.06 — лицевые счета (жители) из загруженного отчёта'; -- Таблица сопоставления домов и лицевых счетов (для фильтра ОСВ 76 по дому и отображения в карточке дома) CREATE TABLE IF NOT EXISTS building_personal_account_mappings ( id BIGSERIAL PRIMARY KEY, building_id VARCHAR(50) NOT NULL REFERENCES buildings(id) ON DELETE CASCADE, account_ls TEXT NOT NULL, account_label TEXT, apartment TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), UNIQUE(building_id, account_ls) ); CREATE INDEX IF NOT EXISTS idx_building_personal_account_mappings_building ON building_personal_account_mappings(building_id); CREATE INDEX IF NOT EXISTS idx_building_personal_account_mappings_account_ls ON building_personal_account_mappings(account_ls); COMMENT ON TABLE building_personal_account_mappings IS 'Сопоставление домов и лицевых счетов (для ОСВ 76): фильтр по дому, отображение в карточке дома';