62 lines
2.2 KiB
PL/PgSQL
62 lines
2.2 KiB
PL/PgSQL
-- =============================================================
|
||
-- R__fn_effective_price.sql
|
||
-- EMS Platform – funkce pro výpočet efektivní ceny per site
|
||
-- Repeatable migration – nasazuje se při každé změně
|
||
-- =============================================================
|
||
|
||
CREATE OR REPLACE FUNCTION ems.fn_effective_buy_price(
|
||
p_site_id INT,
|
||
p_interval_start TIMESTAMPTZ
|
||
)
|
||
RETURNS NUMERIC(10,6)
|
||
LANGUAGE sql
|
||
STABLE
|
||
AS $$
|
||
SELECT
|
||
mip.buy_raw_price_czk_kwh
|
||
+ smc.buy_margin_fixed_czk
|
||
+ (mip.buy_raw_price_czk_kwh * smc.buy_margin_percent / 100.0)
|
||
FROM ems.market_interval_price mip
|
||
CROSS JOIN ems.site_market_config smc
|
||
WHERE mip.market_source = 'OTE_CZ'
|
||
AND mip.interval_start = p_interval_start
|
||
AND smc.site_id = p_site_id
|
||
AND smc.valid_from <= p_interval_start
|
||
AND (smc.valid_to IS NULL OR smc.valid_to > p_interval_start)
|
||
ORDER BY smc.valid_from DESC
|
||
LIMIT 1;
|
||
$$;
|
||
|
||
COMMENT ON FUNCTION ems.fn_effective_buy_price(INT, TIMESTAMPTZ) IS
|
||
'Vrátí efektivní nákupní cenu elektřiny v Kč/kWh pro danou lokalitu a 15min interval.
|
||
Přičítá fixní a procentní nákupní marži dle aktuálně platné site_market_config.';
|
||
|
||
-- ------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE FUNCTION ems.fn_effective_sell_price(
|
||
p_site_id INT,
|
||
p_interval_start TIMESTAMPTZ
|
||
)
|
||
RETURNS NUMERIC(10,6)
|
||
LANGUAGE sql
|
||
STABLE
|
||
AS $$
|
||
SELECT
|
||
mip.sell_raw_price_czk_kwh
|
||
+ smc.sell_margin_fixed_czk
|
||
+ (mip.sell_raw_price_czk_kwh * smc.sell_margin_percent / 100.0)
|
||
FROM ems.market_interval_price mip
|
||
CROSS JOIN ems.site_market_config smc
|
||
WHERE mip.market_source = 'OTE_CZ'
|
||
AND mip.interval_start = p_interval_start
|
||
AND smc.site_id = p_site_id
|
||
AND smc.valid_from <= p_interval_start
|
||
AND (smc.valid_to IS NULL OR smc.valid_to > p_interval_start)
|
||
ORDER BY smc.valid_from DESC
|
||
LIMIT 1;
|
||
$$;
|
||
|
||
COMMENT ON FUNCTION ems.fn_effective_sell_price(INT, TIMESTAMPTZ) IS
|
||
'Vrátí efektivní prodejní cenu elektřiny v Kč/kWh pro danou lokalitu a 15min interval.
|
||
Aplikuje fixní a procentní prodejní marži (záporná marže = srážka z prodejní ceny).';
|