use serde::{Deserialize, Serialize};
use validator::Validate;
use x12_types_macros::{DisplaySegment, ParseSegment};
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct G3 {
#[serde(rename = "01")]
pub _01: Option<String>,
#[serde(rename = "02")]
pub _02: String,
#[serde(rename = "03")]
pub _03: Option<String>,
#[serde(rename = "04")]
pub _04: Option<String>,
#[serde(rename = "05")]
pub _05: Option<String>,
#[serde(rename = "06")]
pub _06: Option<String>,
}
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct G61 {
#[serde(rename = "01")]
pub _01: String,
#[serde(rename = "02")]
pub _02: String,
#[serde(rename = "03")]
pub _03: Option<String>,
#[serde(rename = "04")]
pub _04: Option<String>,
#[serde(rename = "05")]
pub _05: Option<String>,
}
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct G62 {
#[serde(rename = "01")]
pub _01: Option<String>,
#[serde(rename = "02")]
pub _02: Option<String>,
#[serde(rename = "03")]
pub _03: Option<String>,
#[serde(rename = "04")]
pub _04: Option<String>,
#[serde(rename = "05")]
pub _05: Option<String>,
}
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct GA {
#[serde(rename = "01")]
pub _01: Option<String>,
#[serde(rename = "02")]
pub _02: Option<String>,
#[serde(rename = "03")]
pub _03: Option<String>,
#[serde(rename = "04")]
pub _04: Option<String>,
#[serde(rename = "05")]
pub _05: Option<String>,
#[serde(rename = "06")]
pub _06: Option<String>,
#[serde(rename = "07")]
pub _07: Option<String>,
#[serde(rename = "08")]
pub _08: Option<String>,
#[serde(rename = "09")]
pub _09: Option<String>,
#[serde(rename = "10")]
pub _10: Option<String>,
#[serde(rename = "11")]
pub _11: Option<String>,
#[serde(rename = "12")]
pub _12: Option<String>,
#[serde(rename = "13")]
pub _13: Option<String>,
#[serde(rename = "14")]
pub _14: Option<String>,
#[serde(rename = "15")]
pub _15: Option<String>,
#[serde(rename = "16")]
pub _16: Option<String>,
#[serde(rename = "17")]
pub _17: Option<String>,
}
#[derive(
Serialize,
Deserialize,
Clone,
Default,
Debug,
PartialEq,
Eq,
DisplaySegment,
ParseSegment,
Validate,
)]
pub struct GE {
#[validate(length(min = 1, max = 6, message = "GE01 must be 1-6 characters long"))]
#[serde(rename = "01")]
pub _01: String,
#[validate(length(min = 1, max = 9, message = "GE02 must be 1-9 characters long"))]
#[serde(rename = "02")]
pub _02: String,
}
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct GR5 {
#[serde(rename = "01")]
pub _01: String,
#[serde(rename = "02")]
pub _02: Option<String>,
#[serde(rename = "03")]
pub _03: Option<String>,
#[serde(rename = "04")]
pub _04: Option<String>,
#[serde(rename = "05")]
pub _05: Option<String>,
}
#[derive(
Serialize,
Deserialize,
Clone,
Default,
Debug,
PartialEq,
Eq,
DisplaySegment,
ParseSegment,
Validate,
)]
pub struct GS {
#[serde(rename = "01")]
pub _01: String,
#[serde(rename = "02")]
pub _02: String,
#[serde(rename = "03")]
pub _03: String,
#[serde(rename = "04")]
pub _04: String,
#[serde(rename = "05")]
pub _05: String,
#[serde(rename = "06")]
pub _06: String,
#[serde(rename = "07")]
pub _07: String,
#[serde(rename = "08")]
pub _08: String,
}
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct GF {
#[serde(rename = "01")]
pub _01: String,
#[serde(rename = "02")]
pub _02: Option<String>,
#[serde(rename = "03")]
pub _03: Option<String>,
#[serde(rename = "04")]
pub _04: Option<String>,
#[serde(rename = "05")]
pub _05: Option<String>,
#[serde(rename = "06")]
pub _06: Option<String>,
#[serde(rename = "07")]
pub _07: Option<String>,
#[serde(rename = "08")]
pub _08: Option<String>,
#[serde(rename = "09")]
pub _09: Option<String>,
#[serde(rename = "10")]
pub _10: Option<String>,
#[serde(rename = "11")]
pub _11: Option<String>,
#[serde(rename = "12")]
pub _12: Option<String>,
#[serde(rename = "13")]
pub _13: Option<String>,
#[serde(rename = "14")]
pub _14: Option<String>,
#[serde(rename = "15")]
pub _15: Option<String>,
#[serde(rename = "16")]
pub _16: Option<String>,
#[serde(rename = "17")]
pub _17: Option<String>,
#[serde(rename = "18")]
pub _18: Option<String>,
#[serde(rename = "19")]
pub _19: Option<String>,
#[serde(rename = "20")]
pub _20: Option<String>,
#[serde(rename = "21")]
pub _21: Option<String>,
#[serde(rename = "22")]
pub _22: Option<String>,
#[serde(rename = "23")]
pub _23: Option<String>,
#[serde(rename = "24")]
pub _24: Option<String>,
#[serde(rename = "25")]
pub _25: Option<String>,
#[serde(rename = "26")]
pub _26: Option<String>,
#[serde(rename = "27")]
pub _27: Option<String>,
#[serde(rename = "28")]
pub _28: Option<String>,
#[serde(rename = "29")]
pub _29: Option<String>,
#[serde(rename = "30")]
pub _30: Option<String>,
#[serde(rename = "31")]
pub _31: Option<String>,
#[serde(rename = "32")]
pub _32: Option<String>,
#[serde(rename = "33")]
pub _33: Option<String>,
#[serde(rename = "34")]
pub _34: Option<String>,
#[serde(rename = "35")]
pub _35: Option<String>,
#[serde(rename = "36")]
pub _36: Option<String>,
#[serde(rename = "37")]
pub _37: Option<String>,
#[serde(rename = "38")]
pub _38: Option<String>,
#[serde(rename = "39")]
pub _39: Option<String>,
#[serde(rename = "40")]
pub _40: Option<String>,
}
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct G66 {
#[serde(rename = "01")]
pub _01: String,
#[serde(rename = "02")]
pub _02: Option<String>,
#[serde(rename = "03")]
pub _03: Option<String>,
#[serde(rename = "04")]
pub _04: Option<String>,
#[serde(rename = "05")]
pub _05: Option<String>,
#[serde(rename = "06")]
pub _06: Option<String>,
#[serde(rename = "07")]
pub _07: Option<String>,
}
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct G69 {
#[serde(rename = "01")]
pub _01: String,
}
#[derive(
Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
)]
pub struct G72 {
#[serde(rename = "01")]
pub _01: String,
#[serde(rename = "02")]
pub _02: String,
#[serde(rename = "03")]
pub _03: Option<String>,
#[serde(rename = "04")]
pub _04: Option<String>,
#[serde(rename = "05")]
pub _05: Option<String>,
#[serde(rename = "06")]
pub _06: Option<String>,
#[serde(rename = "07")]
pub _07: Option<String>,
#[serde(rename = "08")]
pub _08: Option<String>,
#[serde(rename = "09")]
pub _09: Option<String>,
#[serde(rename = "10")]
pub _10: Option<String>,
#[serde(rename = "11")]
pub _11: Option<String>,
}