add configurable VAT rate for electricity price calculations (#680)

* add configurable VAT rate for electricity price calculations

* add VAT rate configuration for electricity price calculations in docs

* added vat_rate

* fix: Format VAT rate field definition according to ruff formatting standards

---------

Co-authored-by: Börni <kontakt@bernhardhientz.com>
This commit is contained in:
boerni
2025-09-14 23:53:41 +02:00
committed by GitHub
parent d362aa7298
commit a4cce85ebd
5 changed files with 4912 additions and 4882 deletions

View File

@@ -424,6 +424,7 @@ Validators:
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
| provider | `EOS_ELECPRICE__PROVIDER` | `Optional[str]` | `rw` | `None` | Electricity price provider id of provider to be used. |
| charges_kwh | `EOS_ELECPRICE__CHARGES_KWH` | `Optional[float]` | `rw` | `None` | Electricity price charges (€/kWh). |
| vat_rate | `EOS_ELECPRICE__VAT_RATE` | `Optional[float]` | `rw` | `1.19` | VAT rate factor applied to electricity price when charges are used. |
| provider_settings | `EOS_ELECPRICE__PROVIDER_SETTINGS` | `Optional[akkudoktoreos.prediction.elecpriceimport.ElecPriceImportCommonSettings]` | `rw` | `None` | Provider settings |
:::
@@ -436,6 +437,7 @@ Validators:
"elecprice": {
"provider": "ElecPriceAkkudoktor",
"charges_kwh": 0.21,
"vat_rate": 1.19,
"provider_settings": null
}
}
@@ -1050,6 +1052,7 @@ Validators:
"elecprice": {
"provider": "ElecPriceAkkudoktor",
"charges_kwh": 0.21,
"vat_rate": 1.19,
"provider_settings": null
},
"load": {

View File

@@ -123,6 +123,7 @@ Configuration options:
- `ElecPriceImport`: Imports from a file or JSON string.
- `charges_kwh`: Electricity price charges (€/kWh).
- `vat_rate`: VAT rate factor applied to electricity price when charges are used (default: 1.19).
- `provider_settings.import_file_path`: Path to the file to import electricity price forecast data from.
- `provider_settings.import_json`: JSON string, dictionary of electricity price forecast value lists.
@@ -147,7 +148,7 @@ real-time market data with historical price trends.
Charges and VAT
- If `charges_kwh` configuration option is greater than 0, the electricity price is calculated as:
`(market price + charges_kwh) * 1.19 VAT` (including 19% VAT).
`(market price + charges_kwh) * vat_rate` where `vat_rate` is configurable (default: 1.19 for 19% VAT).
- If `charges_kwh` is set to 0, the electricity price is simply: `market_price` (no VAT applied).
**Note:** For the most accurate forecasts, it is recommended to set the `historic_hours` parameter to 840.

File diff suppressed because it is too large Load Diff

View File

@@ -28,6 +28,12 @@ class ElecPriceCommonSettings(SettingsBaseModel):
charges_kwh: Optional[float] = Field(
default=None, ge=0, description="Electricity price charges (€/kWh).", examples=[0.21]
)
vat_rate: Optional[float] = Field(
default=1.19,
ge=0,
description="VAT rate factor applied to electricity price when charges are used.",
examples=[1.19],
)
provider_settings: Optional[ElecPriceImportCommonSettings] = Field(
default=None, description="Provider settings", examples=[None]

View File

@@ -127,7 +127,8 @@ class ElecPriceEnergyCharts(ElecPriceProvider):
# Convert EUR/MWh to EUR/Wh, apply charges and VAT if charges > 0
if charges_wh > 0:
price_wh = ((price_eur_per_mwh / 1_000_000) + charges_wh) * 1.19
vat_rate = self.config.elecprice.vat_rate or 1.19
price_wh = ((price_eur_per_mwh / 1_000_000) + charges_wh) * vat_rate
else:
price_wh = price_eur_per_mwh / 1_000_000