redispatch_xml/documents/
planned_resource_schedule.rs1use serde::{Deserialize, Serialize};
3
4use crate::documents::activation::{ControlZoneRef, EicCodingScheme};
5use crate::types::{
6 AttrV, AttrVWithScheme, Direction, DocumentId, DocumentVersion, MarketParticipantId,
7 MarketRoleType, MeasureUnit, Period, TimeInterval, UtcDateTime,
8};
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
14pub enum PrsDocType {
15 #[serde(rename = "A14")]
17 DayAheadPlan,
18 #[serde(rename = "Z08")]
20 IntradayPlan,
21 #[serde(rename = "Z09")]
23 StammdatenPlan,
24 #[serde(rename = "Z11")]
26 AggregatePlan,
27 #[serde(rename = "Z12")]
29 CorrectedPlan,
30}
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
34pub enum PrsProcessType {
35 #[serde(rename = "A14")]
37 Forecast,
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
42pub enum PrsBusinessType {
43 #[serde(rename = "A01")]
45 Production,
46 #[serde(rename = "A04")]
48 Consumption,
49 #[serde(rename = "A10")]
51 GenerationForecast,
52 #[serde(rename = "A11")]
54 ConsumptionForecast,
55 #[serde(rename = "A12")]
57 GenerationSchedule,
58 #[serde(rename = "A46")]
60 SystemOperatorRedispatching,
61 #[serde(rename = "A60")]
63 TransmissionCapacity,
64 #[serde(rename = "A61")]
66 ExchangeSchedule,
67 #[serde(rename = "A77")]
69 ProductionDispatchable,
70 #[serde(rename = "A79")]
72 ConsumptionDispatchable,
73 #[serde(rename = "A85")]
75 InternalRedispatch,
76 #[serde(rename = "A93")]
78 ControllableGeneration,
79 #[serde(rename = "A94")]
81 ControllableConsumption,
82 #[serde(rename = "B59")]
84 NetworkElement,
85 #[serde(rename = "Z05")]
87 Flexibility,
88}
89
90#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
92pub enum PrsTimeSeriesStatus {
93 #[serde(rename = "A07")]
95 Activated,
96 #[serde(rename = "A36")]
98 Planned,
99 #[serde(rename = "Z06")]
101 Demand,
102}
103
104#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
106pub enum Product {
107 #[serde(rename = "8716867000016")]
109 ActivePower,
110}
111
112#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
114pub enum GridElementCodingScheme {
115 #[serde(rename = "A01")]
117 Eic,
118 #[serde(rename = "A02")]
120 NationalResource,
121 #[serde(rename = "Z01")]
123 Other,
124}
125
126#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
131pub struct PlannedResourceTimeSeries {
132 #[serde(
137 rename = "OriginalTimeSeriesIdentification",
138 default,
139 skip_serializing_if = "Option::is_none"
140 )]
141 pub original_time_series_identification: Option<AttrV<DocumentId>>,
142 #[serde(
150 rename = "RequestingGridOperator",
151 default,
152 skip_serializing_if = "Option::is_none"
153 )]
154 pub requesting_grid_operator: Option<AttrVWithScheme<MarketParticipantId>>,
155 #[serde(rename = "TimeSeriesIdentification")]
157 pub time_series_identification: AttrV<DocumentId>,
158 #[serde(rename = "BusinessType")]
160 pub business_type: AttrV<PrsBusinessType>,
161 #[serde(rename = "Direction", default, skip_serializing_if = "Option::is_none")]
163 pub direction: Option<AttrV<Direction>>,
164 #[serde(
166 rename = "ConnectingArea",
167 default,
168 skip_serializing_if = "Option::is_none"
169 )]
170 pub connecting_area: Option<ControlZoneRef>,
171 #[serde(
173 rename = "ResourceObject",
174 default,
175 skip_serializing_if = "Option::is_none"
176 )]
177 pub resource_object: Option<AttrVWithScheme<String, GridElementCodingScheme>>,
178 #[serde(rename = "Product")]
180 pub product: AttrV<Product>,
181 #[serde(
183 rename = "AcquiringArea",
184 default,
185 skip_serializing_if = "Option::is_none"
186 )]
187 pub acquiring_area: Option<AttrVWithScheme<String, EicCodingScheme>>,
188 #[serde(
190 rename = "GridElement",
191 default,
192 skip_serializing_if = "Option::is_none"
193 )]
194 pub grid_element: Option<AttrVWithScheme<String, GridElementCodingScheme>>,
195 #[serde(rename = "MeasurementUnit")]
202 pub measurement_unit: AttrV<MeasureUnit>,
203 #[serde(rename = "Status", default, skip_serializing_if = "Option::is_none")]
205 pub status: Option<AttrV<PrsTimeSeriesStatus>>,
206 #[serde(
208 rename = "ResourceProvider",
209 default,
210 skip_serializing_if = "Option::is_none"
211 )]
212 pub resource_provider: Option<AttrVWithScheme<MarketParticipantId>>,
213 #[serde(rename = "Period")]
215 pub period: Period,
216}
217
218#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
226#[serde(rename = "PlannedResourceScheduleDocument")]
227pub struct PlannedResourceScheduleDocument {
228 #[serde(
230 rename = "OriginalSenderIdentification",
231 default,
232 skip_serializing_if = "Option::is_none"
233 )]
234 pub original_sender_identification: Option<AttrVWithScheme<MarketParticipantId>>,
235 #[serde(
237 rename = "OriginalDocumentIdentification",
238 default,
239 skip_serializing_if = "Option::is_none"
240 )]
241 pub original_document_identification: Option<AttrV<DocumentId>>,
242 #[serde(
244 rename = "OriginalDocumentVersion",
245 default,
246 skip_serializing_if = "Option::is_none"
247 )]
248 pub original_document_version: Option<AttrV<DocumentVersion>>,
249 #[serde(
251 rename = "OriginalDocumentDateTime",
252 default,
253 skip_serializing_if = "Option::is_none"
254 )]
255 pub original_document_date_time: Option<AttrV<UtcDateTime>>,
256 #[serde(rename = "DocumentIdentification")]
258 pub document_identification: AttrV<DocumentId>,
259 #[serde(rename = "DocumentVersion")]
261 pub document_version: AttrV<DocumentVersion>,
262 #[serde(rename = "DocumentType")]
264 pub document_type: AttrV<PrsDocType>,
265 #[serde(rename = "ProcessType")]
267 pub process_type: AttrV<PrsProcessType>,
268 #[serde(rename = "SenderIdentification")]
270 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
271 #[serde(rename = "SenderRole")]
273 pub sender_role: AttrV<MarketRoleType>,
274 #[serde(rename = "ReceiverIdentification")]
276 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
277 #[serde(rename = "ReceiverRole")]
279 pub receiver_role: AttrV<MarketRoleType>,
280 #[serde(rename = "DocumentDateTime")]
282 pub document_date_time: AttrV<UtcDateTime>,
283 #[serde(rename = "TimePeriodCovered")]
285 pub time_period_covered: AttrV<TimeInterval>,
286 #[serde(rename = "PlannedResourceTimeSeries", default)]
288 pub time_series: Vec<PlannedResourceTimeSeries>,
289}