use serde::{Deserialize, Serialize};
use crate::types::{AttrV, Decimal3, TimeInterval};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Reason {
#[serde(rename = "ReasonCode")]
pub code: AttrV<String>,
#[serde(
rename = "ReasonText",
default,
skip_serializing_if = "Option::is_none"
)]
pub text: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Interval {
#[serde(rename = "Pos")]
pub pos: AttrV<u8>,
#[serde(rename = "Qty")]
pub qty: AttrV<Decimal3>,
#[serde(rename = "Reason", default, skip_serializing_if = "Vec::is_empty")]
pub reasons: Vec<Reason>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Period {
#[serde(rename = "TimeInterval")]
pub time_interval: AttrV<TimeInterval>,
#[serde(rename = "Resolution")]
pub resolution: AttrV<String>,
#[serde(rename = "Interval", default)]
pub intervals: Vec<Interval>,
}