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(rename = "BusinessType")]
62 pub business_type: AttrV<CostBusinessType>,
63 #[serde(rename = "Direction", default, skip_serializing_if = "Option::is_none")]
65 pub direction: Option<AttrV<Direction>>,
66 #[serde(rename = "Product")]
68 pub product: AttrV<Product>,
69 #[serde(
71 rename = "ConnectingArea",
72 default,
73 skip_serializing_if = "Option::is_none"
74 )]
75 pub connecting_area: Option<ControlZoneRef>,
76 #[serde(
78 rename = "ResourceObject",
79 default,
80 skip_serializing_if = "Option::is_none"
81 )]
82 pub resource_object: Option<ResourceObjectRef>,
83 #[serde(rename = "Period")]
85 pub period: Period,
86}
87
88#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
98#[serde(rename = "Kostenblatt")]
99pub struct Kostenblatt {
100 #[serde(rename = "DocumentIdentification")]
102 pub document_identification: AttrV<DocumentId>,
103 #[serde(rename = "DocumentVersion")]
105 pub document_version: AttrV<DocumentVersion>,
106 #[serde(rename = "DocumentType")]
108 pub document_type: AttrV<KostenblattDocType>,
109 #[serde(rename = "ProcessType")]
111 pub process_type: AttrV<KostenblattProcessType>,
112 #[serde(rename = "SenderIdentification")]
114 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
115 #[serde(rename = "SenderRole")]
117 pub sender_role: AttrV<MarketRoleType>,
118 #[serde(rename = "ReceiverIdentification")]
120 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
121 #[serde(rename = "ReceiverRole")]
123 pub receiver_role: AttrV<MarketRoleType>,
124 #[serde(rename = "DocumentDateTime")]
126 pub document_date_time: AttrV<UtcDateTime>,
127 #[serde(rename = "TimePeriodCovered")]
129 pub time_period_covered: AttrV<TimeInterval>,
130 #[serde(rename = "CostTimeSeries", default)]
132 pub time_series: Vec<CostTimeSeries>,
133}