fix zaporne spot ceny v nakupu
Some checks failed
CI and deploy / migration-check (push) Failing after 12s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-01 14:27:08 +02:00
parent bf3b10ca50
commit 91ee8a6adf
6 changed files with 51 additions and 35 deletions

View File

@@ -211,31 +211,17 @@ CREATE TABLE market_interval_price (
-- SELECT create_hypertable('market_interval_price', 'interval_start');
```
### View: `market_vw_site_effective_price`
Efektivní ceny per site dopočítané z raw + marže. Neukládá se, počítá se za běhu.
### View: `vw_site_effective_price` (`ems`)
Efektivní ceny per site — neukládá se; nákupní cena přes **`ems.fn_effective_buy_price(site_id, interval_start)`** (zahrnuje HDO NT/VT, distribuci, systémové služby, OTE poplatek, marži a DPH podle tarifu). Pro **spot** je procentní marže na `buy_raw` asymetrická: kladná raw ×`(1+p/100)`, záporná ×`(1p/100)`; viz `docs/04-modules/market-prices.md` a repeatable `db/routines/R__011_fn_effective_price.sql`.
Prodejní strana nadále **`ems.fn_effective_sell_price`**: raw + prodejní marže (bez DPH). Zjednodušený vzorec bez distribuce jen pro ilustraci prodeje:
```sql
CREATE VIEW market_vw_site_effective_price AS
SELECT
smc.site_id,
mip.interval_start,
mip.interval_end,
mip.buy_raw_price_czk_kwh,
mip.sell_raw_price_czk_kwh,
-- efektivní nákupní cena
mip.buy_raw_price_czk_kwh
+ smc.buy_margin_fixed_czk
+ (mip.buy_raw_price_czk_kwh * smc.buy_margin_percent / 100)
AS effective_buy_price_czk_kwh,
-- efektivní prodejní cena
mip.sell_raw_price_czk_kwh
+ smc.sell_margin_fixed_czk
+ (mip.sell_raw_price_czk_kwh * smc.sell_margin_percent / 100)
AS effective_sell_price_czk_kwh
FROM market_interval_price mip
CROSS JOIN site_market_config smc
WHERE smc.valid_to IS NULL -- aktuálně platná konfigurace
OR now() BETWEEN smc.valid_from AND smc.valid_to;
-- pouze analogie k sell (nákup v produkci vždy přes funkci výše):
mip.sell_raw_price_czk_kwh
+ smc.sell_margin_fixed_czk
+ (mip.sell_raw_price_czk_kwh * smc.sell_margin_percent / 100)
```
---