redispatch_xml/documents/
kostenblatt.rs1use serde::{Deserialize, Serialize};
3
4use crate::documents::activation::{ControlZoneRef, ResourceObjectRef};
5use crate::documents::planned_resource_schedule::Product;
6use crate::types::{
7 AttrV, AttrVWithScheme, Direction, DocumentId, DocumentVersion, MarketParticipantId,
8 MarketRoleType, Period, TimeInterval, UtcDateTime,
9};
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
15pub enum KostenblattDocType {
16 #[serde(rename = "Z05")]
18 Kostenblatt,
19}
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
23pub enum KostenblattProcessType {
24 #[serde(rename = "A14")]
26 Forecast,
27}
28
29#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
31pub enum CostBusinessType {
32 #[serde(rename = "A01")]
34 ProductionEnergy,
35 #[serde(rename = "A04")]
37 ConsumptionEnergy,
38 #[serde(rename = "Z01")]
40 StartupCosts,
41 #[serde(rename = "Z02")]
43 ExtraOperatingHourCosts,
44 #[serde(rename = "Z03")]
46 AvoidedNetworkFees,
47 #[serde(rename = "Z06")]
49 AdditionalWrdvCosts,
50}
51
52#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
56pub struct CostTimeSeries {
57 #[serde(rename = "TimeSeriesIdentification")]
59 pub time_series_identification: AttrV<DocumentId>,
60 #[serde(
65 rename = "OriginalTimeSeriesIdentification",
66 default,
67 skip_serializing_if = "Option::is_none"
68 )]
69 pub original_time_series_identification: Option<AttrV<DocumentId>>,
70 #[serde(rename = "CurveType", default, skip_serializing_if = "Option::is_none")]
72 pub curve_type: Option<AttrV<String>>,
73 #[serde(
75 rename = "ResourceProvider",
76 default,
77 skip_serializing_if = "Option::is_none"
78 )]
79 pub resource_provider: Option<AttrVWithScheme<MarketParticipantId>>,
80 #[serde(rename = "Status", default, skip_serializing_if = "Option::is_none")]
82 pub status: Option<AttrV<String>>,
83 #[serde(rename = "BusinessType")]
85 pub business_type: AttrV<CostBusinessType>,
86 #[serde(rename = "Direction", default, skip_serializing_if = "Option::is_none")]
88 pub direction: Option<AttrV<Direction>>,
89 #[serde(rename = "Product")]
91 pub product: AttrV<Product>,
92 #[serde(
94 rename = "ConnectingArea",
95 default,
96 skip_serializing_if = "Option::is_none"
97 )]
98 pub connecting_area: Option<ControlZoneRef>,
99 #[serde(
101 rename = "ResourceObject",
102 default,
103 skip_serializing_if = "Option::is_none"
104 )]
105 pub resource_object: Option<ResourceObjectRef>,
106 #[serde(rename = "MeasurementUnit")]
112 pub measurement_unit: AttrV<String>,
113 #[serde(rename = "Period")]
115 pub period: Period,
116}
117
118#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
128#[serde(rename = "Kostenblatt")]
129pub struct Kostenblatt {
130 #[serde(
132 rename = "OriginalSenderIdentification",
133 default,
134 skip_serializing_if = "Option::is_none"
135 )]
136 pub original_sender_identification: Option<AttrVWithScheme<MarketParticipantId>>,
137 #[serde(
139 rename = "OriginalDocumentIdentification",
140 default,
141 skip_serializing_if = "Option::is_none"
142 )]
143 pub original_document_identification: Option<AttrV<DocumentId>>,
144 #[serde(
146 rename = "OriginalDocumentVersion",
147 default,
148 skip_serializing_if = "Option::is_none"
149 )]
150 pub original_document_version: Option<AttrV<DocumentVersion>>,
151 #[serde(
153 rename = "OriginalDocumentDateTime",
154 default,
155 skip_serializing_if = "Option::is_none"
156 )]
157 pub original_document_date_time: Option<AttrV<UtcDateTime>>,
158 #[serde(rename = "DocumentIdentification")]
160 pub document_identification: AttrV<DocumentId>,
161 #[serde(rename = "DocumentVersion")]
163 pub document_version: AttrV<DocumentVersion>,
164 #[serde(rename = "DocumentType")]
166 pub document_type: AttrV<KostenblattDocType>,
167 #[serde(rename = "ProcessType")]
169 pub process_type: AttrV<KostenblattProcessType>,
170 #[serde(rename = "SenderIdentification")]
172 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
173 #[serde(rename = "SenderRole")]
175 pub sender_role: AttrV<MarketRoleType>,
176 #[serde(rename = "ReceiverIdentification")]
178 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
179 #[serde(rename = "ReceiverRole")]
181 pub receiver_role: AttrV<MarketRoleType>,
182 #[serde(rename = "DocumentDateTime")]
184 pub document_date_time: AttrV<UtcDateTime>,
185 #[serde(rename = "TimePeriodCovered")]
187 pub time_period_covered: AttrV<TimeInterval>,
188 #[serde(rename = "CostTimeSeries", default)]
190 pub time_series: Vec<CostTimeSeries>,
191}