-- ============================================================
-- Distribuční tarify a HDO
-- ============================================================

CREATE TABLE ems.distribution_tariff (
    id            SERIAL PRIMARY KEY,
    distributor   TEXT NOT NULL,        -- 'EGD', 'CEZ', 'PRE'
    code          TEXT NOT NULL,        -- 'D02d', 'C25d', 'custom_fve'
    name          TEXT NOT NULL,
    has_dual_rate BOOLEAN NOT NULL DEFAULT true,  -- NT/VT nebo jednotarif
    vat_rate      NUMERIC(5,4) NOT NULL DEFAULT 0.21,
    notes         TEXT,
    UNIQUE (distributor, code)
);

COMMENT ON TABLE ems.distribution_tariff IS
'Číselník distribučních tarifů. Jeden záznam = jeden tarif jednoho distributora.
has_dual_rate=true znamená NT/VT dvojsazba, false = jednotarif.';

-- ============================================================

CREATE TABLE ems.distribution_tariff_rate (
    id              SERIAL PRIMARY KEY,
    tariff_id       INT NOT NULL REFERENCES ems.distribution_tariff(id),
    rate_type       TEXT NOT NULL,   -- 'NT', 'VT', 'single'
    price_czk_kwh   NUMERIC(10,6) NOT NULL,  -- variabilní složka bez DPH
    valid_from      DATE NOT NULL,
    valid_to        DATE,            -- NULL = platí dosud
    notes           TEXT,
    UNIQUE (tariff_id, rate_type, valid_from)
);

COMMENT ON TABLE ems.distribution_tariff_rate IS
'Sazby distribučního tarifu Kč/kWh bez DPH. Verzováno přes valid_from/valid_to.
Při roční změně tarifů: nastav valid_to na starém záznamu a přidej nový.
price_czk_kwh = pouze variabilní distribuce, BEZ systémových služeb a OTE.';

COMMENT ON COLUMN ems.distribution_tariff_rate.price_czk_kwh IS
'Variabilní distribuční složka Kč/kWh bez DPH.
Nezahrnuje: systémové služby ČEPS, poplatek OTE, silovou elektřinu (spot).
Tyto ostatní fixní složky jsou v site_market_config jako system_services_czk_kwh.';

-- ============================================================

CREATE TABLE ems.hdo_code (
    id            SERIAL PRIMARY KEY,
    distributor   TEXT NOT NULL,     -- 'EGD', 'CEZ', 'PRE'
    code          TEXT NOT NULL,     -- 'B1', 'C3', 'custom_fve_home01'
    description   TEXT,
    valid_from    DATE NOT NULL,
    valid_to      DATE,              -- NULL = platí dosud
    notes         TEXT,
    UNIQUE (distributor, code, valid_from)
);

COMMENT ON TABLE ems.hdo_code IS
'Číselník HDO kódů per distributor. Při roční změně přidat nový záznam
s novým valid_from – starý zůstane v historii pro audit.
Kód "custom_fve_home01" pro FVE instalace bez standardního HDO kódu.';

-- ============================================================

CREATE TABLE ems.hdo_code_window (
    id          SERIAL PRIMARY KEY,
    hdo_code_id INT NOT NULL REFERENCES ems.hdo_code(id),
    day_type    TEXT NOT NULL DEFAULT 'all',
                -- 'all' = každý den, 'workday' = Po-Pá, 'weekend' = So-Ne
    rate_type   TEXT NOT NULL DEFAULT 'VT',  -- 'VT' nebo 'NT'
    window_from TIME NOT NULL,   -- začátek okna (inclusive)
    window_to   TIME NOT NULL    -- konec okna (exclusive)
);

COMMENT ON TABLE ems.hdo_code_window IS
'NT/VT časová okna pro HDO kód. Více řádků = více oken za den.
Logika: pokud aktuální čas spadá do VT okna → rate_type=VT, jinak NT.
day_type=all znamená stejná okna každý den (workday i weekend).
Příklad home-01: VT 09:00-10:00, 12:00-13:00, 16:00-17:00, 20:00-21:00.';

-- ============================================================
-- Rozšíření site_market_config
-- ============================================================

ALTER TABLE ems.site_market_config
    ADD COLUMN IF NOT EXISTS tariff_id          INT REFERENCES ems.distribution_tariff(id),
    ADD COLUMN IF NOT EXISTS hdo_code_id        INT REFERENCES ems.hdo_code(id),
    ADD COLUMN IF NOT EXISTS system_services_czk_kwh NUMERIC(10,6) DEFAULT 0,
    ADD COLUMN IF NOT EXISTS ote_fee_czk_kwh    NUMERIC(10,6) DEFAULT 0;

COMMENT ON COLUMN ems.site_market_config.tariff_id IS
'Distribuční tarif přiřazený k této lokalitě. FK na distribution_tariff.';
COMMENT ON COLUMN ems.site_market_config.hdo_code_id IS
'HDO kód přiřazený k této lokalitě. Určuje NT/VT časová okna.
Při změně HDO předpisu stačí přidat nový hdo_code záznam a aktualizovat FK.';
COMMENT ON COLUMN ems.site_market_config.system_services_czk_kwh IS
'Součet systémových poplatků Kč/kWh bez DPH:
systémové služby ČEPS + poplatek OTE + příspěvek na OZE.
Orientační hodnota EG.D 2025: ~0.40 Kč/kWh. Doplnit ze smlouvy/faktury.';
COMMENT ON COLUMN ems.site_market_config.ote_fee_czk_kwh IS
'Poplatek OTE za použití trhu Kč/kWh bez DPH.
Orientačně ~0.001 Kč/kWh. Lze zahrnout do system_services_czk_kwh.';
