use rust_decimal::Decimal;
use rust_decimal_macros::dec;
use serde::{Deserialize, Serialize};
use crate::tariff::TariffInput;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegulatoryRates {
pub stromsteuer_ct_per_kwh: Decimal,
pub energiesteuer_gas_ct_per_kwh: Decimal,
pub behg_gas_ct_per_kwh: Decimal,
pub mwst_rate: Decimal,
}
impl Default for RegulatoryRates {
fn default() -> Self {
Self {
stromsteuer_ct_per_kwh: dec!(2.05),
energiesteuer_gas_ct_per_kwh: dec!(0.55),
behg_gas_ct_per_kwh: dec!(1.310), mwst_rate: dec!(0.19),
}
}
}
impl RegulatoryRates {
pub fn effective_stromsteuer(&self, tariff: &TariffInput) -> Decimal {
tariff
.stromsteuer_ct_per_kwh_override
.unwrap_or(self.stromsteuer_ct_per_kwh)
}
pub fn effective_energiesteuer_gas(&self, tariff: &TariffInput) -> Decimal {
tariff
.energiesteuer_gas_ct_per_kwh_override
.unwrap_or(self.energiesteuer_gas_ct_per_kwh)
}
pub fn effective_behg_gas(&self, tariff: &TariffInput) -> Decimal {
tariff
.behg_gas_ct_per_kwh_override
.unwrap_or(self.behg_gas_ct_per_kwh)
}
pub fn effective_mwst(&self, tariff: &TariffInput) -> Decimal {
tariff.mwst_rate_override.unwrap_or(self.mwst_rate)
}
}