redispatch_xml/documents/
acknowledgement.rs1use serde::{Deserialize, Serialize};
2
3use crate::types::{
4 AttrV, AttrVWithScheme, DocumentId, DocumentVersion, MarketParticipantId, MarketRoleType,
5 UtcDateTime,
6};
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
13pub enum AckReceivingDocType {
14 #[serde(rename = "A14")]
15 DayAheadPlan,
16 #[serde(rename = "A41")]
17 ActivationResponse,
18 #[serde(rename = "A42")]
19 TenderReduction,
20 #[serde(rename = "A60")]
21 StatusRequest,
22 #[serde(rename = "A67")]
23 PlannedUnavailability,
24 #[serde(rename = "A76")]
25 ForcedUnavailability,
26 #[serde(rename = "A80")]
27 ProductionUnavailability,
28 #[serde(rename = "A96")]
29 RedispatchActivation,
30 #[serde(rename = "B15")]
31 NetworkConstraint,
32 #[serde(rename = "Z01")]
33 StammdatenCreation,
34 #[serde(rename = "Z02")]
35 StammdatenUpdate,
36 #[serde(rename = "Z03")]
37 StammdatenDeactivation,
38 #[serde(rename = "Z04")]
39 StammdatenNbAggregate,
40 #[serde(rename = "Z05")]
41 Kostenblatt,
42 #[serde(rename = "Z08")]
43 IntradayPlan,
44 #[serde(rename = "Z09")]
45 StammdatenPlan,
46 #[serde(rename = "Z11")]
47 AggregatePlan,
48 #[serde(rename = "Z12")]
49 CorrectedPlan,
50 #[serde(rename = "Z13")]
51 Reserved13,
52 #[serde(rename = "Z14")]
53 Bilanzkreisstammdaten,
54 #[serde(rename = "Z15")]
55 StatusRequestAlt,
56 #[serde(rename = "Z16")]
57 Kaskade,
58 #[serde(rename = "Z17")]
59 TestMessage,
60}
61
62#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
64pub enum AckReasonCode {
65 #[serde(rename = "A01")]
67 FullyAccepted,
68 #[serde(rename = "A02")]
70 FullyRejected,
71 #[serde(rename = "Z12")]
73 SyntaxError,
74 #[serde(rename = "Z13")]
76 AssignmentError,
77 #[serde(rename = "Z14")]
79 DocumentIdNotUnique,
80 #[serde(rename = "Z15")]
82 SenderUnauthorised,
83 #[serde(rename = "Z16")]
85 NotPermitted,
86 #[serde(rename = "Z17")]
88 FormatVersionInvalid,
89 #[serde(rename = "Z18")]
91 ReportPeriodInvalid,
92}
93
94#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
96pub struct AckReason {
97 #[serde(rename = "ReasonCode")]
99 pub code: AttrV<AckReasonCode>,
100 #[serde(
102 rename = "ReasonText",
103 default,
104 skip_serializing_if = "Option::is_none"
105 )]
106 pub text: Option<String>,
107}
108
109#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
113pub struct TimeSeriesRejection {
114 #[serde(
117 rename = "TimeSeriesIdentification",
118 default,
119 skip_serializing_if = "Option::is_none"
120 )]
121 pub time_series_identification: Option<AttrV<DocumentId>>,
122 #[serde(rename = "Reason", default)]
124 pub reasons: Vec<AckReason>,
125}
126
127#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
140#[serde(rename = "AcknowledgementDocument")]
141pub struct AcknowledgementDocument {
142 #[serde(rename = "DocumentIdentification")]
144 pub document_identification: AttrV<DocumentId>,
145 #[serde(rename = "DocumentDateTime")]
147 pub document_date_time: AttrV<UtcDateTime>,
148 #[serde(rename = "SenderIdentification")]
150 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
151 #[serde(rename = "SenderRole")]
153 pub sender_role: AttrV<MarketRoleType>,
154 #[serde(rename = "ReceiverIdentification")]
156 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
157 #[serde(rename = "ReceiverRole")]
159 pub receiver_role: AttrV<MarketRoleType>,
160 #[serde(
162 rename = "ReceivingDocumentIdentification",
163 default,
164 skip_serializing_if = "Option::is_none"
165 )]
166 pub receiving_document_identification: Option<AttrV<DocumentId>>,
167 #[serde(
169 rename = "ReceivingDocumentVersion",
170 default,
171 skip_serializing_if = "Option::is_none"
172 )]
173 pub receiving_document_version: Option<AttrV<DocumentVersion>>,
174 #[serde(
176 rename = "ReceivingDocumentType",
177 default,
178 skip_serializing_if = "Option::is_none"
179 )]
180 pub receiving_document_type: Option<AttrV<AckReceivingDocType>>,
181 #[serde(
183 rename = "ReceivingPayloadName",
184 default,
185 skip_serializing_if = "Option::is_none"
186 )]
187 pub receiving_payload_name: Option<AttrV<String>>,
188 #[serde(
190 rename = "DateTimeReceivingDocument",
191 default,
192 skip_serializing_if = "Option::is_none"
193 )]
194 pub date_time_receiving_document: Option<AttrV<UtcDateTime>>,
195 #[serde(
197 rename = "TimeSeriesRejection",
198 default,
199 skip_serializing_if = "Vec::is_empty"
200 )]
201 pub time_series_rejections: Vec<TimeSeriesRejection>,
202 #[serde(rename = "Reason")]
204 pub reasons: Vec<AckReason>,
205}