use super::*;
use crate::util::{clean_num, Parser};
use edifact_types_macros::{DisplayInnerSegment, ParseElement};
use nom::IResult;
use serde::{Deserialize, Serialize};
use std::{
fmt::{self, Debug},
str::FromStr,
};
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C002 {
pub _010: Option<_1001>,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C040 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C056 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C058 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C059 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C076 {
pub _010: String,
pub _020: _3155,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C080 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
pub _060: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C082 {
pub _010: String,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C100 {
pub _010: Option<_4053>,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
pub _040: Option<String>,
pub _050: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C106 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C107 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C108 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C174 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C186 {
pub _010: _6063,
pub _020: String,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C200 {
pub _010: Option<String>,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
pub _040: Option<String>,
pub _050: Option<_4237>,
pub _060: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C203 {
pub _010: _5243,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
pub _040: Option<String>,
pub _050: Option<String>,
pub _060: Option<_1131>,
pub _070: Option<_3055>,
pub _080: Option<String>,
pub _090: Option<_1131>,
pub _100: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C205 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C208 {
pub _010: String,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C210 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
pub _060: Option<String>,
pub _070: Option<String>,
pub _080: Option<String>,
pub _090: Option<String>,
pub _100: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C211 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C212 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C213 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
pub _060: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C215 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C218 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C219 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C220 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C222 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C223 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C224 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C228 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C229 {
pub _010: _5237,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C231 {
pub _010: _4215,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C232 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C233 {
pub _010: _7273,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
pub _040: Option<_7273>,
pub _050: Option<_1131>,
pub _060: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Default, Clone, DisplayInnerSegment, ParseElement)]
pub struct C234 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, Clone, DisplayInnerSegment, ParseElement)]
pub struct C235 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, Clone, DisplayInnerSegment, ParseElement)]
pub struct C236 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, Clone, DisplayInnerSegment, ParseElement)]
pub struct C237 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, Clone, DisplayInnerSegment, ParseElement)]
pub struct C239 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, DisplayInnerSegment, ParseElement)]
pub struct C270 {
pub _010: String,
pub _020: String,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, Clone, DisplayInnerSegment, ParseElement)]
pub struct C280 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C401 {
pub _010: String,
pub _020: String,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C501 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C502 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C503 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
pub _060: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C504 {
pub _010: _6347,
pub _020: Option<String>,
pub _030: Option<_6343>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C506 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C507 {
pub _010: _2005,
pub _020: Option<String>,
pub _030: Option<_2379>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C509 {
pub _010: _5125,
pub _020: Option<String>,
pub _030: Option<_5375>,
pub _040: Option<_5387>,
pub _050: Option<String>,
pub _060: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C516 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
pub _050: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C517 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C519 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C523 {
pub _010: Option<String>,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C524 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C528 {
pub _010: Option<String>,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C536 {
pub _010: _4065,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C537 {
pub _010: _4219,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C553 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C554 {
pub _010: Option<_5243>,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C555 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C556 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C601 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C703 {
pub _010: _7085,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
}
#[derive(Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement)]
pub struct C819 {
pub _010: Option<String>,
pub _020: Option<_1131>,
pub _030: Option<_3055>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C821 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C822 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C823 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C824 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C825 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C826 {
pub _010: Option<String>,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement)]
pub struct C827 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
}
#[derive(
Debug, Serialize, Deserialize, Clone, DisplayInnerSegment, ParseElement, PartialEq, Eq, Default,
)]
pub struct S001 {
pub _010: _0001,
pub _020: _0002,
}
#[derive(
Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement, PartialEq, Eq,
)]
pub struct S002 {
pub _010: String,
pub _020: Option<_0007>,
pub _030: Option<String>,
}
#[derive(
Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement, PartialEq, Eq,
)]
pub struct S003 {
pub _010: String,
pub _020: Option<_0007>,
pub _030: Option<String>,
}
#[derive(
Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement, PartialEq, Eq,
)]
pub struct S004 {
pub _010: String,
pub _020: String,
}
#[derive(
Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment, ParseElement, PartialEq, Eq,
)]
pub struct S005 {
pub _010: String,
pub _020: Option<_0025>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, DisplayInnerSegment)]
pub struct S009 {
pub _010: String,
pub _020: String,
pub _030: String,
pub _040: String,
pub _050: Option<String>,
pub _060: Option<String>,
pub _070: Option<String>,
}
impl<'a> Parser<&'a str, S009, nom::error::Error<&'a str>> for S009 {
fn parse(input: &'a str) -> IResult<&'a str, S009> {
let (_, vars) = crate::util::parse_colon_section(input)?;
let v = vars.get(1).unwrap().to_string();
let r = vars.get(2).unwrap().to_string();
if format!("{v}{r}") != VERSION {
return Err(nom::Err::Error(nom::error::Error::new(
"File supplied EDIFACT Version/Release in UNH segment. Please use the correct parsing feature",
nom::error::ErrorKind::Verify,
)));
}
let output = S009 {
_010: vars.first().unwrap().to_string(),
_020: v,
_030: r,
_040: vars.get(3).unwrap().to_string(),
_050: vars.get(4).map(|x| x.to_string()),
_060: vars.get(5).map(|x| x.to_string()),
_070: vars.get(6).map(|x| x.to_string()),
};
Ok(("", output))
}
}
#[derive(Debug, Serialize, Deserialize, Default, DisplayInnerSegment, ParseElement)]
pub struct S010 {
pub _010: String,
pub _020: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, DisplayInnerSegment, ParseElement)]
pub struct S016 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, DisplayInnerSegment, ParseElement)]
pub struct S017 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, DisplayInnerSegment, ParseElement)]
pub struct S018 {
pub _010: String,
pub _020: Option<String>,
pub _030: Option<String>,
pub _040: Option<String>,
}