-- Таблица строк ОСВ по счёту 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): фильтр по дому, отображение в карточке дома';
