redispatch_xml/documents/
kostenblatt.rs1use serde::{Deserialize, Serialize};
2
3use crate::documents::activation::{ControlZoneRef, ResourceObjectRef};
4use crate::documents::planned_resource_schedule::Product;
5use crate::types::{
6 AttrV, AttrVWithScheme, Direction, DocumentId, DocumentVersion, MarketParticipantId,
7 MarketRoleType, Period, TimeInterval, UtcDateTime,
8};
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
14pub enum KostenblattDocType {
15 #[serde(rename = "Z05")]
17 Kostenblatt,
18}
19
20#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
22pub enum KostenblattProcessType {
23 #[serde(rename = "A14")]
25 Forecast,
26}
27
28#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
30pub enum CostBusinessType {
31 #[serde(rename = "A01")]
33 ProductionEnergy,
34 #[serde(rename = "A04")]
36 ConsumptionEnergy,
37 #[serde(rename = "Z01")]
39 StartupCosts,
40 #[serde(rename = "Z02")]
42 ExtraOperatingHourCosts,
43 #[serde(rename = "Z03")]
45 AvoidedNetworkFees,
46 #[serde(rename = "Z06")]
48 AdditionalWrdvCosts,
49}
50
51#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
55pub struct CostTimeSeries {
56 #[serde(rename = "TimeSeriesIdentification")]
58 pub time_series_identification: AttrV<DocumentId>,
59 #[serde(rename = "BusinessType")]
61 pub business_type: AttrV<CostBusinessType>,
62 #[serde(rename = "Direction", default, skip_serializing_if = "Option::is_none")]
64 pub direction: Option<AttrV<Direction>>,
65 #[serde(rename = "Product")]
67 pub product: AttrV<Product>,
68 #[serde(
70 rename = "ConnectingArea",
71 default,
72 skip_serializing_if = "Option::is_none"
73 )]
74 pub connecting_area: Option<ControlZoneRef>,
75 #[serde(
77 rename = "ResourceObject",
78 default,
79 skip_serializing_if = "Option::is_none"
80 )]
81 pub resource_object: Option<ResourceObjectRef>,
82 #[serde(rename = "Period")]
84 pub period: Period,
85}
86
87#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
97#[serde(rename = "Kostenblatt")]
98pub struct Kostenblatt {
99 #[serde(rename = "DocumentIdentification")]
101 pub document_identification: AttrV<DocumentId>,
102 #[serde(rename = "DocumentVersion")]
104 pub document_version: AttrV<DocumentVersion>,
105 #[serde(rename = "DocumentType")]
107 pub document_type: AttrV<KostenblattDocType>,
108 #[serde(rename = "ProcessType")]
110 pub process_type: AttrV<KostenblattProcessType>,
111 #[serde(rename = "SenderIdentification")]
113 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
114 #[serde(rename = "SenderRole")]
116 pub sender_role: AttrV<MarketRoleType>,
117 #[serde(rename = "ReceiverIdentification")]
119 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
120 #[serde(rename = "ReceiverRole")]
122 pub receiver_role: AttrV<MarketRoleType>,
123 #[serde(rename = "DocumentDateTime")]
125 pub document_date_time: AttrV<UtcDateTime>,
126 #[serde(rename = "TimePeriodCovered")]
128 pub time_period_covered: AttrV<TimeInterval>,
129 #[serde(rename = "CostTimeSeries", default)]
131 pub time_series: Vec<CostTimeSeries>,
132}