x12-types 0.9.1

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

#[test]
fn render_204() {
    let obj = _204 {
        st: ST {
            _01: "204".to_string(),
            _02: "18711".to_string(),
        },
        b2: B2 {
            _02: Some("SNDR".to_string()),
            _04: Some("6XULT02DCM".to_string()),
            _06: "DE".to_string(),
            ..Default::default()
        },
        b2a: B2A {
            _01: "00".to_string(),
            _02: None,
        },
        l11: vec![L11 {
            _01: Some("6XULT02DCM".to_string()),
            _02: Some("9R".to_string()),
            ..Default::default()
        }],
        g62: Some(G62 {
            _01: Some("04".to_string()),
            _02: Some("20221121".to_string()),
            _03: None,
            _04: Some("1513".to_string()),
            _05: Some("LT".to_string()),
        }),
        at5: Some(AT5 {
            _01: Some("XP".to_string()),
            _02: None,
            _03: Some("EXPORT".to_string()),
        }),
        loop_100: vec![
            _204Loop100 {
                n1: Some(N1 {
                    _01: "SH".to_string(),
                    _02: Some("EXPORT US LLC".to_string()),
                    _03: Some("93".to_string()),
                    _04: Some("753244123".to_string()),
                    ..Default::default()
                }),
                n3: vec![N3 {
                    _01: "2400 WASHINGTON AVE".to_string(),
                    ..Default::default()
                }],
                n4: Some(N4 {
                    _01: Some("CHICAGO".to_string()),
                    _02: Some("IL".to_string()),
                    _03: Some("60609".to_string()),
                    _04: Some("US".to_string()),
                    ..Default::default()
                }),
                g61: vec![G61 {
                    _01: "IC".to_string(),
                    _02: "N/A".to_string(),
                    _03: Some("TE".to_string()),
                    _04: Some("1 283737543".to_string()),
                    ..Default::default()
                }],
                ..Default::default()
            },
            _204Loop100 {
                n1: Some(N1 {
                    _01: "CA".to_string(),
                    _02: Some("HS".to_string()),
                    ..Default::default()
                }),
                n3: vec![N3 {
                    _01: "1500 MADISON ST".to_string(),
                    _02: Some("F 2 STE 340".to_string()),
                    ..Default::default()
                }],
                n4: Some(N4 {
                    _01: Some("PHILADELPHIA".to_string()),
                    _02: Some("PA".to_string()),
                    _03: Some("19103".to_string()),
                    _04: Some("US".to_string()),
                    ..Default::default()
                }),
                g61: vec![G61 {
                    _01: "IC".to_string(),
                    _02: "TONY X".to_string(),
                    _03: Some("TE".to_string()),
                    _04: Some("7462437293".to_string()),
                    ..Default::default()
                }],
                ..Default::default()
            },
            _204Loop100 {
                n1: Some(N1 {
                    _01: "BT".to_string(),
                    _02: Some("SUD NORTH AMERICA,".to_string()),
                    ..Default::default()
                }),
                n3: vec![N3 {
                    _01: "1000 PARK AVE".to_string(),
                    ..Default::default()
                }],
                n4: Some(N4 {
                    _01: Some("NICK SAM".to_string()),
                    _02: Some("NJ".to_string()),
                    _03: Some("07932".to_string()),
                    _04: Some("US".to_string()),
                    ..Default::default()
                }),
                ..Default::default()
            },
        ],
        loop_200: vec![],
        loop_300: vec![
            _204Loop300 {
                s5: S5 {
                    _01: "1".to_string(),
                    _02: "LD".to_string(),
                    ..Default::default()
                },
                loop_310: vec![_204Loop310 {
                    n1: Some(N1 {
                        _01: "PW".to_string(),
                        _02: Some("BNSF OAKLAND RAMP".to_string()),
                        ..Default::default()
                    }),
                    n3: vec![N3 {
                        _01: "333 MARITIME STREET".to_string(),
                        ..Default::default()
                    }],
                    n4: Some(N4 {
                        _01: Some("OAKLAND".to_string()),
                        _02: Some("CA".to_string()),
                        _03: Some("94607".to_string()),
                        _04: Some("US".to_string()),
                        _05: Some("ZZ".to_string()),
                        _06: Some("USOAKBNOA".to_string()),
                    }),
                    ..Default::default()
                }],
                loop_320: vec![_204Loop320 {
                    l5: Some(L5 {
                        _01: Some("1".to_string()),
                        _02: Some("FOOD:(NOS)".to_string()),
                        ..Default::default()
                    }),
                    ..Default::default()
                }],
                loop_350: vec![],
                loop_380: vec![_204Loop380 {
                    n7: Some(N7 {
                        _01: Some("MSKU".to_string()),
                        _02: "777374".to_string(),
                        _03: Some("43784.03".to_string()),
                        _04: Some("G".to_string()),
                        _05: Some("4784".to_string()),
                        _11: Some("CN".to_string()),
                        _12: Some("SNDR".to_string()),
                        _16: Some("A".to_string()),
                        _17: Some("L".to_string()),
                        _18: Some("9".to_string()),
                        _19: Some("RP".to_string()),
                        _22: Some("2200".to_string()),
                        ..Default::default()
                    }),
                    ..Default::default()
                }],
                ..Default::default()
            },
            _204Loop300 {
                s5: S5 {
                    _01: "2".to_string(),
                    _02: "DT".to_string(),
                    ..Default::default()
                },
                loop_310: vec![_204Loop310 {
                    n1: Some(N1 {
                        _01: "DA".to_string(),
                        _02: Some("OAKLAND INTERNATIONAL CONTAINER TERMINAL".to_string()),
                        ..Default::default()
                    }),
                    n3: vec![N3 {
                        _01: "1717 MIDDLE HARBOR RD.".to_string(),
                        _02: Some("BERTH 58".to_string()),
                    }],
                    n4: Some(N4 {
                        _01: Some("OAKLAND".to_string()),
                        _02: Some("CA".to_string()),
                        _03: Some("94607".to_string()),
                        _04: Some("US".to_string()),
                        _05: Some("ZZ".to_string()),
                        _06: Some("USOAKSSAM".to_string()),
                    }),
                    g61: vec![G61 {
                        _01: "IC".to_string(),
                        _02: "N/A".to_string(),
                        _03: Some("TE".to_string()),
                        _04: Some("NOT AVAILABLE".to_string()),
                        ..Default::default()
                    }],
                    ..Default::default()
                }],
                ..Default::default()
            },
        ],
        se: SE {
            _01: "37".to_string(),
            _02: "18711".to_string(),
        },
        ..Default::default()
    };
    let obj = format!("{obj}");
    println!("{obj}");
}

#[test]
fn test_parse_204() {
    let str = r#"ST*204*18711~
B2**SNDR**6XULT02DCM**DE~
B2A*00~
L11*6XULT02DCM*9R~
G62*04*20221121**1513*LT~
AT5*XO**EXPORT~
N1*SH*EXPORT US LLC*93*753244123~
N3*2400 WASHINGTON AVE~
N4*CHICAGO*IL*60609*US~
G61*IC*N/A*TE*1 283737543~
N1*CA*HS~
N3*1500 MADISON ST*F 2 STE 340~
N4*PHILADELPHIA*PA*19103*US~
G61*IC*TONY X*TE*7462437293~
N1*BT*SUD NORTH AMERICA,~
N3*1000 PARK AVE~
N4*NICK SAM*NJ*07932*US~
S5*1*LD~
N1*PW*BNSF OAKLAND RAMP~
N3*333 MARITIME STREET~
N4*OAKLAND*CA*94607*US*ZZ*USOAKBNOA~
L5*1*FOOD:(NOS)~
N7*MSKU*777374*43784.03*G*4784******CN*SNDR****A*L*9*RP***2200~
S5*2*DT~
N1*DA*OAKLAND INTERNATIONAL CONTAINER TERMINAL~
N3*1717 MIDDLE HARBOR RD.*BERTH 58~
N4*OAKLAND*CA*94607*US*ZZ*USOAKSSAM~
G61*IC*N/A*TE*NOT AVAILABLE~
SE*37*18711~"#;
    let (str, obj) = _204::parse(str).unwrap();
    println!("{obj:?}");
    assert!(str.is_empty());
    assert_eq!(obj.se._01, "37");
    assert_eq!(obj.se._02, "18711");
}

#[test]
fn test_2() {
    let str = r#"ISA*00*          *00*          *ZZ*XXXXXXXXX      *ZZ*XXXXXX         *230517*1710*U*00401*000022310*0*P*+~GS*SM*XXXXXXXXX*SUDU*20230517*1710*22310*X*004010~ST*204*22310~B2**SUDU**3PHLT0XXXX**DE~B2A*00~L11*3PHLT0XXXX*9R~L11*Shippers Reference: 3PHT0XXXX*4F~L11**BN~L11*9389409*WU~L11*319S*V3~L11*USLGB*4B~L11*100970343*SI~L11*CMA CGM DUTCH HARBOR*ABS~L11*RP*ZZ~G62*04*20230517**1910*LT~AT5*XP**EXPORT~LH6*HAZARDOUS CARGO - HAZARDOUS DOCUMENTATION REQUIRED~LH6*DO NOT MOVE WITHOUT HAZARDOUS DOCUMENTATION~N1*SH*KAWASAKI MOTORS MFG CORP*93*100970343~N3*6600 NW 27TH ST~N4*LINCOLN*NE*68524*US~G61*IC*N/A*TE*1 4024766600~N1*CA*HS~N3*2000 MARKET ST*F 9 STE 900~N4*PHILADELPHIA*PA*19103*US~G61*IC*MATTHEW STRONG*TE*2152827292~N1*BT*HAMBURG SUD NORTH AMERICA, INC~N3*180 PARK AVE~N4*FLORHAM PARK*NJ*07932*US~S5*1*LD~N1*PW*UNION PACIFIC ICTF RAMP~N3*2401 E. SEPULVEDA BLVD.~N4*LONG BEACH*CA*90810*US*ZZ*USLGBUPIC~L5*1*CHEMICALS:DG CLASS 9~G61*HM*INFO TRAC   89786*TE*1 352 323 3500~LH1*PK*4*UN3166***KG*4276~LH2*9~LH3*VEHICLE, FLAMMABLE LIQUID*I~LFH*TEC*NON ELECTRIC NON HYBRID G~LFH*EMS*F-E~LFH*ADI*CRATES~LH1*PK*2*UN3166***KG*2084~LH2*9~LH3*VEHICLE, FLAMMABLE LIQUID*I~LFH*TEC*NON ELECTRIC NON HYBRID G~LFH*EMS*F-E~LFH*ADI*CRATES~LH1*PK*6*UN3166***KG*6414~LH2*9~LH3*VEHICLE, FLAMMABLE LIQUID*I~LFH*TEC*NON ELECTRIC NON HYBRID G~LFH*EMS*F-E~LFH*ADI*CRATES~N7*MSKU*913109*8880*G*3880******CN*SUDU****A*K*6*RP***4500~S5*2*DT~N1*DA*ITS LONG BEACH~N3*1281 PIER G WAY~N4*LONG BEACH*CA*90802*US*ZZ*USLGBITST~G61*IC*N/A*TE*NOT AVAILABLE~SE*58*22310~GE*1*22310~IEA*1*000022310~"#;
    let (rest, obj) = Transmission::<_204>::parse(str).unwrap();
    println!("{obj:?}");
    assert!(rest.is_empty());
}

#[test]
fn test_3() {
    let str = r#"ISA*00*          *00*          *ZZ*USANYC999      *ZZ*8435778122     *230524*1214*U*00401*000136909*0*P*>~GS*SM*USANYC999*8435778122*20230524*1214*136909*X*004010~ST*204*136581~B2******DE~B2A*00~L11*SUDU33SYD002692X*BM~L11*MAERSK WILLEMSTADT*WU~L11*316N*V3~L11*3PHLT00RVY*PO~AT5*IP**IMPORT~N1*SH*ADCHEM (AUSTRALIA) PTY LTD~N7*GESU*132086*17600*N*2180******CN*SUDU***2000**K*8****2200~M7*SF0046088~S5*1*PA~N1*RO*CN~S5*2*DT~N1*RD*CSX~LH1*PK*20*UN3077***KG*17600***III~SE*17*136581~GE*1*136909~IEA*1*000136909~"#;
    let (rest, obj) = Transmission::<_204>::parse(str).unwrap();
    println!("{obj:?}");
    assert!(rest.is_empty());
}