new site BA81, tuyne forecast
All checks were successful
deploy / deploy (push) Successful in 23s
test / smoke-test (push) Successful in 5s

This commit is contained in:
Dusan Vojacek
2026-04-12 20:11:50 +02:00
parent 015c81a8cb
commit 71d8405cee
6 changed files with 459 additions and 27 deletions

View File

@@ -14,6 +14,7 @@ STABLE
AS $$
DECLARE
v_spot_price NUMERIC;
v_energy_czk NUMERIC;
v_dist_rate NUMERIC;
v_system_services NUMERIC;
v_ote_fee NUMERIC;
@@ -27,8 +28,14 @@ DECLARE
v_hdo_code_id INT;
v_tariff_id INT;
v_rate_type TEXT;
v_purchase_mode TEXT;
v_fixed_nt NUMERIC;
v_fixed_vt_sur NUMERIC;
BEGIN
SELECT
smc.purchase_pricing_mode,
smc.buy_fixed_energy_nt_czk_kwh,
smc.buy_fixed_vt_surcharge_czk_kwh,
smc.buy_margin_fixed_czk,
smc.buy_margin_percent,
smc.system_services_czk_kwh,
@@ -37,6 +44,9 @@ BEGIN
smc.tariff_id,
dt.vat_rate
INTO
v_purchase_mode,
v_fixed_nt,
v_fixed_vt_sur,
v_buy_margin_fixed,
v_buy_margin_pct,
v_system_services,
@@ -62,10 +72,6 @@ BEGIN
AND interval_start = p_interval_start
LIMIT 1;
IF v_spot_price IS NULL THEN
RETURN NULL;
END IF;
v_local_time := (p_interval_start AT TIME ZONE 'Europe/Prague')::TIME;
v_dow := EXTRACT(DOW FROM p_interval_start AT TIME ZONE 'Europe/Prague');
-- 0=neděle, 6=sobota
@@ -106,11 +112,23 @@ BEGIN
v_ote_fee := COALESCE(v_ote_fee, 0);
v_buy_margin_fixed := COALESCE(v_buy_margin_fixed, 0);
v_buy_margin_pct := COALESCE(v_buy_margin_pct, 0);
v_buy_margin := v_buy_margin_fixed + (v_spot_price * v_buy_margin_pct / 100.0);
v_vat_rate := COALESCE(v_vat_rate, 0.21);
v_fixed_vt_sur := COALESCE(v_fixed_vt_sur, 0);
IF upper(trim(COALESCE(v_purchase_mode, ''))) = 'FIXED'
AND v_fixed_nt IS NOT NULL THEN
v_energy_czk := v_fixed_nt
+ CASE WHEN v_is_vt THEN v_fixed_vt_sur ELSE 0 END;
ELSIF v_spot_price IS NULL THEN
RETURN NULL;
ELSE
v_energy_czk := v_spot_price;
END IF;
v_buy_margin := v_buy_margin_fixed + (v_energy_czk * v_buy_margin_pct / 100.0);
RETURN ROUND(
(v_spot_price + v_dist_rate + v_system_services + v_ote_fee + v_buy_margin)
(v_energy_czk + v_dist_rate + v_system_services + v_ote_fee + v_buy_margin)
* (1 + v_vat_rate),
6
);
@@ -119,8 +137,9 @@ $$;
COMMENT ON FUNCTION ems.fn_effective_buy_price(INT, TIMESTAMPTZ) IS
'Efektivní nákupní cena elektřiny Kč/kWh včetně DPH.
Složky: spot OTE + distribuce NT/VT (dle HDO) + systémové služby + OTE poplatek + marže (fix + % ze spotu).
DPH aplikováno na celou částku. Distribuce závisí na HDO kódu site.';
Režim spot: energie = OTE buy_raw + distribuce NT/VT (dle HDO) + systémové služby + OTE poplatek + marže (fix + % z energie).
Režim fixed: energie = buy_fixed_energy_nt_czk_kwh (+ buy_fixed_vt_surcharge_czk_kwh ve VT oknech dle HDO), pak stejné příplatky a DPH.
DPH aplikováno na celou částku.';
-- ------------------------------------------------------------