redispatch_xml/documents/
acknowledgement.rs1use serde::{Deserialize, Serialize};
3
4use crate::types::{
5 AttrV, AttrVWithScheme, DocumentId, DocumentVersion, MarketParticipantId, MarketRoleType,
6 UtcDateTime,
7};
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
14pub enum AckReceivingDocType {
15 #[serde(rename = "A14")]
17 DayAheadPlan,
18 #[serde(rename = "A41")]
20 ActivationResponse,
21 #[serde(rename = "A42")]
23 TenderReduction,
24 #[serde(rename = "A60")]
26 StatusRequest,
27 #[serde(rename = "A67")]
29 PlannedUnavailability,
30 #[serde(rename = "A76")]
32 ForcedUnavailability,
33 #[serde(rename = "A80")]
35 ProductionUnavailability,
36 #[serde(rename = "A96")]
38 RedispatchActivation,
39 #[serde(rename = "B15")]
41 NetworkConstraint,
42 #[serde(rename = "Z01")]
44 StammdatenCreation,
45 #[serde(rename = "Z02")]
47 StammdatenUpdate,
48 #[serde(rename = "Z03")]
50 StammdatenDeactivation,
51 #[serde(rename = "Z04")]
53 StammdatenNbAggregate,
54 #[serde(rename = "Z05")]
56 Kostenblatt,
57 #[serde(rename = "Z08")]
59 IntradayPlan,
60 #[serde(rename = "Z09")]
62 StammdatenPlan,
63 #[serde(rename = "Z11")]
65 AggregatePlan,
66 #[serde(rename = "Z12")]
68 CorrectedPlan,
69 #[serde(rename = "Z13")]
71 Reserved13,
72 #[serde(rename = "Z14")]
74 Bilanzkreisstammdaten,
75 #[serde(rename = "Z15")]
77 StatusRequestAlt,
78 #[serde(rename = "Z16")]
80 Kaskade,
81 #[serde(rename = "Z17")]
83 TestMessage,
84}
85
86#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
88pub enum AckReasonCode {
89 #[serde(rename = "A01")]
91 FullyAccepted,
92 #[serde(rename = "A02")]
94 FullyRejected,
95 #[serde(rename = "Z12")]
97 SyntaxError,
98 #[serde(rename = "Z13")]
100 AssignmentError,
101 #[serde(rename = "Z14")]
103 DocumentIdNotUnique,
104 #[serde(rename = "Z15")]
106 SenderUnauthorised,
107 #[serde(rename = "Z16")]
109 NotPermitted,
110 #[serde(rename = "Z17")]
112 FormatVersionInvalid,
113 #[serde(rename = "Z18")]
115 ReportPeriodInvalid,
116}
117
118#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
120pub struct AckReason {
121 #[serde(rename = "ReasonCode")]
123 pub code: AttrV<AckReasonCode>,
124 #[serde(
126 rename = "ReasonText",
127 default,
128 skip_serializing_if = "Option::is_none"
129 )]
130 pub text: Option<String>,
131}
132
133#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
137pub struct TimeSeriesRejection {
138 #[serde(
141 rename = "TimeSeriesIdentification",
142 default,
143 skip_serializing_if = "Option::is_none"
144 )]
145 pub time_series_identification: Option<AttrV<DocumentId>>,
146 #[serde(rename = "Reason", default)]
148 pub reasons: Vec<AckReason>,
149}
150
151#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
164#[serde(rename = "AcknowledgementDocument")]
165pub struct AcknowledgementDocument {
166 #[serde(rename = "DocumentIdentification")]
168 pub document_identification: AttrV<DocumentId>,
169 #[serde(rename = "DocumentDateTime")]
171 pub document_date_time: AttrV<UtcDateTime>,
172 #[serde(rename = "SenderIdentification")]
174 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
175 #[serde(rename = "SenderRole")]
177 pub sender_role: AttrV<MarketRoleType>,
178 #[serde(rename = "ReceiverIdentification")]
180 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
181 #[serde(rename = "ReceiverRole")]
183 pub receiver_role: AttrV<MarketRoleType>,
184 #[serde(
186 rename = "ReceivingDocumentIdentification",
187 default,
188 skip_serializing_if = "Option::is_none"
189 )]
190 pub receiving_document_identification: Option<AttrV<DocumentId>>,
191 #[serde(
193 rename = "ReceivingDocumentVersion",
194 default,
195 skip_serializing_if = "Option::is_none"
196 )]
197 pub receiving_document_version: Option<AttrV<DocumentVersion>>,
198 #[serde(
200 rename = "ReceivingDocumentType",
201 default,
202 skip_serializing_if = "Option::is_none"
203 )]
204 pub receiving_document_type: Option<AttrV<AckReceivingDocType>>,
205 #[serde(
207 rename = "ReceivingPayloadName",
208 default,
209 skip_serializing_if = "Option::is_none"
210 )]
211 pub receiving_payload_name: Option<AttrV<String>>,
212 #[serde(
214 rename = "DateTimeReceivingDocument",
215 default,
216 skip_serializing_if = "Option::is_none"
217 )]
218 pub date_time_receiving_document: Option<AttrV<UtcDateTime>>,
219 #[serde(
221 rename = "TimeSeriesRejection",
222 default,
223 skip_serializing_if = "Vec::is_empty"
224 )]
225 pub time_series_rejections: Vec<TimeSeriesRejection>,
226 #[serde(rename = "Reason")]
228 pub reasons: Vec<AckReason>,
229}