x12-types 0.9.0

Bindings for the ASC X12 EDI definitions
Documentation
use crate::v004010::*;

#[test]
fn test_301() {
    let obj = _301 {
        st: ST {
            _01: "301".to_string(),
            _02: "33233".to_string(),
        },
        b1: B1 {
            _01: Some("SNDR".to_string()),
            _02: "ERXX412223".to_string(),
            _03: Some("20221121".to_string()),
            _04: "A".to_string(),
        },
        y3: Y3 {
            _01: "ERXX412223".to_string(),
            _02: Some("SNDR".to_string()),
            _03: Some("20230104".to_string()),
            _07: Some("20221229".to_string()),
            _10: Some("HP".to_string()),
            ..Default::default()
        },
        loop_y4: vec![_301LoopY4 {
            y4: Some(Y4 {
                _01: Some("ERXX412223".to_string()),
                _03: Some("20221216".to_string()),
                _05: Some("1".to_string()),
                _06: Some("45G1".to_string()),
                ..Default::default()
            }),
            w09: None,
        }],
        n9: vec![N9 {
            _01: "BN".to_string(),
            _02: "ERXX412223".to_string(),
            ..Default::default()
        }],
        loop_n1: vec![_301LoopN1 {
            n1: Some(N1 {
                _01: "SH".to_string(),
                _02: Some("ABC GMBH".to_string()),
                _03: Some("25".to_string()),
                _04: Some("312343123".to_string()),
                ..Default::default()
            }),
            n3: Some(N3 {
                _01: "TEST STR. 56".to_string(),
                _02: Some("XA 124324 4".to_string()),
            }),
            n4: Some(N4 {
                _01: Some("MUNICH".to_string()),
                _02: Some("BY".to_string()),
                _03: Some("80348".to_string()),
                _04: Some("DE".to_string()),
                ..Default::default()
            }),
            ..Default::default()
        }],
        loop_r4: vec![
            _301LoopR4 {
                r4: R4 {
                    _01: "R".to_string(),
                    _02: Some("UN".to_string()),
                    _03: Some("DEWKD".to_string()),
                    _04: Some("WACKERSDORF".to_string()),
                    _05: Some("DE".to_string()),
                    _08: Some("BY".to_string()),
                    ..Default::default()
                },
                dtm: vec![],
            },
            _301LoopR4 {
                r4: R4 {
                    _01: "L".to_string(),
                    _02: Some("UN".to_string()),
                    _03: Some("DEHAM".to_string()),
                    _04: Some("HAMBURG".to_string()),
                    _05: Some("DE".to_string()),
                    _08: Some("HH".to_string()),
                    ..Default::default()
                },
                dtm: vec![DTM {
                    _01: "649".to_string(),
                    _02: Some("20230102".to_string()),
                    ..Default::default()
                }],
            },
            _301LoopR4 {
                r4: R4 {
                    _01: "D".to_string(),
                    _02: Some("K".to_string()),
                    _03: Some("35180".to_string()),
                    _04: Some("ITAPOA".to_string()),
                    _05: Some("BR".to_string()),
                    _08: Some("SC".to_string()),
                    ..Default::default()
                },
                dtm: vec![],
            },
        ],
        loop_lx: vec![_301LoopLx {
            lx: LX {
                _01: "2".to_string(),
            },
            l0: Some(L0 {
                _01: Some("1".to_string()),
                _04: Some("14000".to_string()),
                _05: Some("G".to_string()),
                _08: Some("1".to_string()),
                _09: Some("CNT".to_string()),
                _11: Some("K".to_string()),
                _12: Some("HP".to_string()),
                ..Default::default()
            }),
            l5: Some(L5 {
                _01: Some("1".to_string()),
                _02: Some("VEHICLES:PARTS".to_string()),
                ..Default::default()
            }),
            ..Default::default()
        }],
        v1: vec![V1 {
            _01: Some("3465322".to_string()),
            _02: Some("CAP SAN ANTONIO".to_string()),
            _03: Some("DK".to_string()),
            _04: Some("456S".to_string()),
            _08: Some("L".to_string()),
            ..Default::default()
        }],
        se: SE {
            _01: "17".to_string(),
            _02: "33233".to_string(),
        },
        ..Default::default()
    };
    let obj = format!("{obj}");
    println!("{obj}");
}

#[test]
fn test_parse_301_nom() {
    let str = r#"ST*301*33233~
B1*SNDR*ERXX412223*20221121*A~
Y3*ERXX412223*SNDR*20230104*20230105***20221229***HP~
Y4*ERXX412223**20221216**1*45G1~
N9*BN*ERXX412223~
N1*SH*ABC GMBH*25*312343123~
N3*TEST STR. 56*XA 124324 4~
N4*MUNICH*BY*80348*DE~
R4*R*UN*DEWKD*WACKERSDORF*DE***BY~
R4*L*UN*DEHAM*HAMBURG*DE***HH~
DTM*649*20230102~
R4*D*K*35180*ITAPOA*BR***SC~
LX*2~
L0*1***14000*G***1*CNT**K*HP~
L5*1*VEHICLES:PARTS~
V1*3465322*CAP SAN ANTONIO*DK*456S****L~
SE*17*33233~"#;
    let obj = _301::parse(str).unwrap();
    println!("{obj:?}");
    assert!(obj.0.is_empty());
    let obj = obj.1;
    assert_eq!(obj.st._01, "301");
    assert_eq!(obj.st._02, "33233");
    assert_eq!(obj.se._01, "17");
    assert_eq!(obj.se._02, "33233");
}

#[test]
fn test_2() {
    let str = r#"ISA*00*          *00*          *ZZ*XXXXXX999      *ZZ*XXXX           *230616*1315*U*00401*000999999*0*P*>~GS*RO*XXXXXX999*XXXX*20230616*1315*999999*X*004010~ST*301*999999~B1*301*3PHL999999*20230616*N~Y3*3PHL999999*XXXX*20230711*20230807*****CH~Y4*3PHL999999****1*4510~N9*SFC*100950400~R4*R*UN*USLVI*LIVONIA MI US*US***MI~R4*L*UN*USLGB*LONG BEACH CA US*US*ITS LONG BEACH**CA~R4*D*UN*AUMEL*MELBOURNE VIC AU*AU***VI~LX*1~K1*CONTAINER(S) 1: MODE OF TRANSP*ORT: TRUCK.~L0*1***6031*G***1*CNT**K~V1*9450571*SYNERGY BUSAN*MH*324S****L~SE*13*999999~GE*1*999999~IEA*1*000999999~"#;
    let (rest, obj) = Transmission::<_301>::parse(str).unwrap();
    println!("{obj:?}");
    assert!(rest.is_empty());
}

#[test]
fn test_3() {
    let str = r#"ISA*00*          *00*          *ZZ*XXXX           *ZZ*XXXXXXXXX      *230607*1940*U*00401*000107033*0*P*>~GS*RO*XXXX*XXXXXXXXX*20230607*1940*107033*X*004010~ST*301*105115~B1*XXXX*3JAX019999*20230607*U~Y3*3JAX011892*XXXX*20230615*20230625***20230613~Y4*3JAX099999**20230614**1*42G1~N9*BN*3JAX099999~N9*SI*170310636~N1*SH*DUPONT FILAMENTS-AMERICAS, LLC*25*100952999~N3*CENTRE RD 974~N4*WILMINGTON*DE*19805*US~G61*EM*NN***DUPONT FILAMENTS-AME~R4*R*UN*USNYC*NEW YORK*US~R4*L*UN*USNYC*NEW YORK*US*APM TERMINALS ELIZABETH~R4*D*UN*COCTG*CARTAGENA*CO*SOCIEDAD PORTUARIA DE CARTAGEN~R4*N*UN*COCTG*CARTAGENA*CO~LX*1~L0*1***21844*G***1*CNT**K*PP~L5*1*CHEMICALS:(NOS)~H1*1325*4.1*I*FLAMMABLE SOLID, ORGANIC, N.O.*****II~H2*S.*METHYL METHACRYLATE~H1*1325*4.1*I*FLAMMABLE SOLID, ORGANIC, N.O.*****II~H2*S.*METHYL METHACRYLATE~H1*1325*4.1*I*FLAMMABLE SOLID, ORGANIC, N.O.*****II~H2*S.*METHYL METHACRYLATE~H1*1325*4.1*I*FLAMMABLE SOLID, ORGANIC, N.O.*****II~H2*S.*METHYL METHACRYLATE~H1*1325*4.1*I*FLAMMABLE SOLID, ORGANIC, N.O.*****II~H2*S.*METHYL METHACRYLATE~H1*1325*4.1*I*FLAMMABLE SOLID, ORGANIC, N.O.*****II~H2*S.*METHYL METHACRYLATE~V1*9193240*MAERSK KENTUCKY*SG*324S****L~SE*31*105115~GE*1*107033~IEA*1*000107033~"#;
    let (rest, obj) = Transmission::<_301>::parse(str).unwrap();
    println!("{obj:?}");
    assert!(rest.is_empty());
}

#[test]
fn test_4() {
    let str = r#"ISA*00*          *00*          *ZZ*XXXXXXXXX      *ZZ*XXXXXXXX       *230603*1728*U*00401*000099999*0*P*>~GS*RO*XXXXXXXXX*XXXXXXXX*20230603*1728*99999*X*004010~ST*301*99999~B1*XXXX*3BOG009999*20230603*U~Y3*3BOG009999*XXXX*20230607*20230620***20230606~Y4*3BOG009999**20230601**1*45R1~N9*BN*3BOG009999~N1*SH*NOVACAMPO S.A. S.C.I*25*100355156~N3*KM 18~N4*CHIQUINQUIRA*BO**CO~R4*R*UN*COCTG*CARTAGENA*CO~R4*L*UN*COCTG*CARTAGENA*CO*TERMINAL DE CONTENEDORES DE CO~R4*D*UN*NLRTM*ROTTERDAM*NL*ECT DELTA TERMINALS~R4*N*UN*NLRTM*ROTTERDAM*NL~W09*CZ*8.0*CE*8.0*CE****0~H3*MR*GENSET YES~LX*1~L0*1***13852*G***1*CNT**K*PP~L5*1*FRUIT:PHYSALIS/CAPE GOOSEBERRIES(FRESH)~V1*9729104*CMA CGM JACQUES JOSEPH*MT*323N****L~SE*19*99999~GE*1*99999~IEA*1*000099999~"#;
    let (rest, obj) = Transmission::<_301>::parse(str).unwrap();
    println!("{obj:?}");
    assert!(rest.is_empty());
}

#[test]
fn test_5() {
    let str = r#"ISA*00*          *00*          *ZZ*XXX            *02*XXXX           *230606*1656*U*00401*000999999*0*P*>~GS*RO*XXXXXX*XXXX*20230606*1656*999999*X*004010~ST*301*116513~B1*XXXX*3PHL099999*20230606*U~Y3*3PHL099999*XXXX*20230629****20230627***HH~Y4*3PHL099999**20230626**1*45R1~W09*CZ*-23.3*CE*-23.3*CE****0~N9*SI*276246~N9*BN*3PHL099999~N1*SH*ATEC LOGISTICS*25*100941176~N3*W STATE ROAD 434 2170*STE 400~N4*LONGWOOD*FL*32779*US~R4*R*D*1808*ORLANDO*US***FL~R4*L*UN*USPEF*PORT EVERGLADES*US***FL~DTM*649*20230626~R4*D*K*33779*SAN ANTONIO*CL***VS~R4*E*K*33776*SANTIAGO*CL~EA*GEN~LX*1~L0*1***19504.47*G***1*CNT**K*HH~L5*1*CONSUMER PRODUCTS:NOS(FROZEN)~V1*9786774*POLAR ECUADOR*SG*325S****L~SE*21*116513~GE*1*999999~IEA*1*000999999~"#;
    let (rest, obj) = Transmission::<_301>::parse(str).unwrap();
    println!("{obj:?}");
    assert!(rest.is_empty());
}