示例#1
0
        public void Should_Encode_DateTime_Should_Encode_DateTime_yyyyMM()
        {
            var date = new DateTimeOffset(2015, 9, 4, 11, 59, 59, 123, new TimeSpan(4, 0, 0));
            var hl7Date = new DTM(date, DateTimePrecision.Month);
            Assert.AreEqual("201509", hl7Date.Encode());

            hl7Date = new DTM(date, DateTimePrecision.Month, 7);
            Assert.AreEqual("201509", hl7Date.Encode());
        }
示例#2
0
        public void Should_Encode_DateTime_DefaultPrecision()
        {
            var date = new DateTimeOffset(2015, 9, 4, 11, 59, 59, 123, new TimeSpan(4, 0, 0));
            var hl7Date = new DTM(date);
            Assert.AreEqual("20150904115959.123+0400", hl7Date.Encode());

            date = new DateTimeOffset(2015, 9, 4, 11, 59, 59, 123, new TimeSpan(0,0,0));
            hl7Date = new DTM(date);
            Assert.AreEqual("20150904115959.123", hl7Date.Encode());
        }
示例#3
0
        public void Should_Encode_DateTime_Should_Encode_DateTime_yyyyMMddHHmmss_sss()
        {
            var date = new DateTimeOffset(2015, 9, 4, 11, 59, 59, 123, new TimeSpan(4, 0, 0));
            var hl7Date = new DTM(date, DateTimePrecision.Millisecond);
            Assert.AreEqual("20150904115959.123+0400", hl7Date.Encode());

            date = new DateTimeOffset(2015, 9, 4, 11, 59, 59, 123, new TimeSpan(0, 0, 0));
            hl7Date = new DTM(date, DateTimePrecision.Millisecond);
            Assert.AreEqual("20150904115959.123", hl7Date.Encode());

            hl7Date = new DTM(date, DateTimePrecision.Millisecond, 7);
            Assert.AreEqual("20150904115959.123", hl7Date.Encode());
        }
示例#4
0
 public void Should_Serialize_yyyyMMdd()
 {
     var date = new DTM(2015, 12, 31);
     Assert.AreEqual("20151231", date.Value);
 }
示例#5
0
 public void Should_Serialize_yyyyMM()
 {
     var date = new DTM(2015, 4);
     Assert.AreEqual("201504", date.Value);
 }
示例#6
0
        /// <summary>
        /// Build instruction.
        /// Original from https://www.gs1.org/sites/default/files/docs/eancom/s4/iftmin.pdf
        /// </summary>
        static TSIFTMIN BuildInstruction(string controlNumber)
        {
            var result = new TSIFTMIN();

            //  Message header
            result.UNH = new UNH();
            result.UNH.MessageReferenceNumber_01                      = controlNumber.PadLeft(14, '0');
            result.UNH.MessageIdentifier_02                           = new S009();
            result.UNH.MessageIdentifier_02.MessageType_01            = "IFTMIN";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "96A";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

            //  Transport instruction number
            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentmessagenamecoded_01 = "610";
            result.BGM.Documentmessagenumber_02 = "569952";
            result.BGM.Messagefunctioncoded_03  = "9";

            //  Repeating DTM
            result.DTM = new List <DTM>();

            //  Message date/time 1st March 2002
            var dtm1 = new DTM();

            dtm1.DATETIMEPERIOD_01 = new C507();
            dtm1.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "137";
            dtm1.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020301";
            dtm1.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            result.DTM.Add(dtm1);

            //  Delivery date/time requested, 8th March 2002 at 11:00
            var dtm2 = new DTM();

            dtm2.DATETIMEPERIOD_01 = new C507();
            dtm2.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "2";
            dtm2.DATETIMEPERIOD_01.Datetimeperiod_02                = "200203081100";
            dtm2.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "203";
            result.DTM.Add(dtm2);

            //  Repeating CNT
            result.CNT = new List <CNT>();

            //  Total number of packages 1
            var cnt = new CNT();

            cnt.CONTROL_01 = new C270();
            cnt.CONTROL_01.Controlqualifier_01 = "11";
            cnt.CONTROL_01.Controlvalue_02     = "1";
            result.CNT.Add(cnt);

            //  Repeating RFF Groups
            result.RFFLoop = new List <Loop_RFF_IFTMIN>();

            //  Begin RFF Group
            var rffLoop1 = new Loop_RFF_IFTMIN();

            //  Consignor’s reference number TI1284
            rffLoop1.RFF = new RFF();
            rffLoop1.RFF.REFERENCE_01 = new C506();
            rffLoop1.RFF.REFERENCE_01.Referencequalifier_01 = "CU";
            rffLoop1.RFF.REFERENCE_01.Referencenumber_02    = "TI1284";

            //  End RFF Group
            result.RFFLoop.Add(rffLoop1);

            //  Repeating TDT Groups
            result.TDTLoop = new List <Loop_TDT_IFTMIN>();

            //  Begin TDT Group
            var tdtLoop1 = new Loop_TDT_IFTMIN();

            //  Details of transport, by truck
            tdtLoop1.TDT = new TDT();
            tdtLoop1.TDT.Transportstagequalifier_01 = "20";
            tdtLoop1.TDT.MODEOFTRANSPORT_03         = new C220();
            tdtLoop1.TDT.MODEOFTRANSPORT_03.Modeoftransportcoded_01 = "30";
            tdtLoop1.TDT.TRANSPORTMEANS_04 = new C228();
            tdtLoop1.TDT.TRANSPORTMEANS_04.Typeofmeansoftransportidentification_01 = "31";

            //  Repeating DTM
            tdtLoop1.DTM = new List <DTM>();

            //  Estimated departure of truck 5th March 2002 at 11am
            var dtmTdt1 = new DTM();

            dtmTdt1.DATETIMEPERIOD_01 = new C507();
            dtmTdt1.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "133";
            dtmTdt1.DATETIMEPERIOD_01.Datetimeperiod_02                = "200203051100";
            dtmTdt1.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "203";
            tdtLoop1.DTM.Add(dtmTdt1);

            //  Repeating LOC Groups
            tdtLoop1.LOCLoop = new List <Loop_LOC_IFTMIN_2>();

            //  Begin LOC Group
            var locTdt1 = new Loop_LOC_IFTMIN_2();

            //  Place of truck loading identified with GLN 5412345678908
            locTdt1.LOC = new LOC();
            locTdt1.LOC.Placelocationqualifier_01 = "9";
            locTdt1.LOC.LOCATIONIDENTIFICATION_02 = new C517();
            locTdt1.LOC.LOCATIONIDENTIFICATION_02.Placelocationidentification_01    = "5412345678908";
            locTdt1.LOC.LOCATIONIDENTIFICATION_02.Codelistresponsibleagencycoded_03 = "9";

            //  End LOC Group
            tdtLoop1.LOCLoop.Add(locTdt1);

            //  End TDT Group
            result.TDTLoop.Add(tdtLoop1);

            //  Repeating NAD Groups
            result.NADLoop = new List <Loop_NAD_IFTMIN>();

            //  Begin NAD Group 1
            var nadLoop1 = new Loop_NAD_IFTMIN();

            //  Consignor identified with GLN 5412345123453
            nadLoop1.NAD = new NAD();
            nadLoop1.NAD.Partyqualifier_01             = "CZ";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5412345123453";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  End NAD Group 1
            result.NADLoop.Add(nadLoop1);

            //  Begin NAD Group 2
            var nadLoop2 = new Loop_NAD_IFTMIN();

            //  Carrier identified with GLN 5411234512309
            nadLoop2.NAD = new NAD();
            nadLoop2.NAD.Partyqualifier_01             = "CA";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5411234512309";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  End NAD Group 2
            result.NADLoop.Add(nadLoop2);

            //  Begin NAD Group 3
            var nadLoop3 = new Loop_NAD_IFTMIN();

            //  Consignee identified with GLN 5411234444402
            nadLoop3.NAD = new NAD();
            nadLoop3.NAD.Partyqualifier_01             = "CN";
            nadLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5411234444402";
            nadLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  End NAD Group 3
            result.NADLoop.Add(nadLoop3);

            //  Begin NAD Group 4
            var nadLoop4 = new Loop_NAD_IFTMIN();

            //  Delivery party identified with GLN 5412345145660
            nadLoop4.NAD = new NAD();
            nadLoop4.NAD.Partyqualifier_01             = "DP";
            nadLoop4.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop4.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5412345145660";
            nadLoop4.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  End NAD Group 4
            result.NADLoop.Add(nadLoop4);

            //  Repeating GID Groups
            result.GIDLoop = new List <Loop_GID_IFTMIN>();

            //  Begin GID Group
            var gidLoop1 = new Loop_GID_IFTMIN();

            //  First occurrence of goods in one returnable pallet with 14 packages
            gidLoop1.GID = new GID();
            gidLoop1.GID.Goodsitemnumber_01         = "1";
            gidLoop1.GID.NUMBERANDTYPEOFPACKAGES_02 = new C213();
            gidLoop1.GID.NUMBERANDTYPEOFPACKAGES_02.Numberofpackages_01               = "1";
            gidLoop1.GID.NUMBERANDTYPEOFPACKAGES_02.Typeofpackagesidentification_02   = "09";
            gidLoop1.GID.NUMBERANDTYPEOFPACKAGES_02.Codelistresponsibleagencycoded_04 = "9";
            gidLoop1.GID.NUMBERANDTYPEOFPACKAGES_03 = new C213();
            gidLoop1.GID.NUMBERANDTYPEOFPACKAGES_03.Numberofpackages_01             = "14";
            gidLoop1.GID.NUMBERANDTYPEOFPACKAGES_03.Typeofpackagesidentification_02 = "PK";

            //  The goods are foods stuffs
            gidLoop1.HAN = new HAN();
            gidLoop1.HAN.HANDLINGINSTRUCTIONS_01 = new C524();
            gidLoop1.HAN.HANDLINGINSTRUCTIONS_01.Handlinginstructionscoded_01      = "EAT";
            gidLoop1.HAN.HANDLINGINSTRUCTIONS_01.Codelistresponsibleagencycoded_03 = "9";

            //  Transport temperature 0 degrees Celsius
            gidLoop1.TMP = new TMP();
            gidLoop1.TMP.Temperaturequalifier_01 = "2";
            gidLoop1.TMP.TEMPERATURESETTING_02   = new C239();
            gidLoop1.TMP.TEMPERATURESETTING_02.Temperaturesetting_01   = "000";
            gidLoop1.TMP.TEMPERATURESETTING_02.Measureunitqualifier_02 = "CEL";

            //  The range of temperature must be between –5 and 5 degrees Celsius
            gidLoop1.RNG = new RNG();
            gidLoop1.RNG.Rangetypequalifier_01 = "5";
            gidLoop1.RNG.RANGE_02 = new C280();
            gidLoop1.RNG.RANGE_02.Measureunitqualifier_01 = "CEL";
            gidLoop1.RNG.RANGE_02.Rangeminimum_02         = "-5";
            gidLoop1.RNG.RANGE_02.Rangemaximum_03         = "5";

            //  Repeating MOA
            gidLoop1.MOA = new List <MOA>();

            //  Declared valued of the carriage 45.000 EUR
            var moaGid1 = new MOA();

            moaGid1.MONETARYAMOUNT_01 = new C516();
            moaGid1.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "44";
            moaGid1.MONETARYAMOUNT_01.Monetaryamount_02 = "45000";
            moaGid1.MONETARYAMOUNT_01.Currencycoded_03  = "EUR";
            gidLoop1.MOA.Add(moaGid1);

            //  Repeating PIA
            gidLoop1.PIA = new List <PIA>();

            //  Product identification of the goods using GTIN 5410738377117
            var piaGid1 = new PIA();

            piaGid1.Productidfunctionqualifier_01                      = "5";
            piaGid1.ITEMNUMBERIDENTIFICATION_02                        = new C212();
            piaGid1.ITEMNUMBERIDENTIFICATION_02.Itemnumber_01          = "5410738377117";
            piaGid1.ITEMNUMBERIDENTIFICATION_02.Itemnumbertypecoded_02 = "SRV";
            gidLoop1.PIA.Add(piaGid1);

            //  Repeating MEA Groups
            gidLoop1.MEALoop = new List <Loop_MEA_IFTMIN>();

            //  Begin MEA GID Group
            var meaGid1 = new Loop_MEA_IFTMIN();

            //  Gross weight of returnable pallet plus 14 packages on the pallet is 250 Kilograms
            meaGid1.MEA = new MEA();
            meaGid1.MEA.Measurementapplicationqualifier_01 = "AAE";
            meaGid1.MEA.MEASUREMENTDETAILS_02 = new C502();
            meaGid1.MEA.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01 = "X7E";
            meaGid1.MEA.VALUERANGE_03 = new C174();
            meaGid1.MEA.VALUERANGE_03.Measureunitqualifier_01 = "KGM";
            meaGid1.MEA.VALUERANGE_03.Measurementvalue_02     = "250";

            //  End MEA GID Group
            gidLoop1.MEALoop.Add(meaGid1);

            //  Repeating PCI Groups
            gidLoop1.PCILoop = new List <Loop_PCI_IFTMIN>();

            //  Begin PCI GID Group
            var pciGid1 = new Loop_PCI_IFTMIN();

            //  Marked with the EAN.UCC serial shipping container code
            pciGid1.PCI = new PCI();
            pciGid1.PCI.Markinginstructionscoded_01 = "33E";

            //  Repeating GIN
            pciGid1.GIN = new List <GIN>();

            //  Identification of marked serial shipping container code
            var ginPci1 = new GIN();

            ginPci1.Identitynumberqualifier_01 = "BJ";
            ginPci1.IDENTITYNUMBERRANGE_02     = new C208();
            ginPci1.IDENTITYNUMBERRANGE_02.Identitynumber_01 = "354123450000000014";
            pciGid1.GIN.Add(ginPci1);

            //  End PCI GID Group
            gidLoop1.PCILoop.Add(pciGid1);

            //  End GID Group
            result.GIDLoop.Add(gidLoop1);

            return(result);
        }
示例#7
0
        public void Should_Serialize_yyyyMMddHHmmss_sss()
        {
            var date = new DTM(2000, 3, 1, 11, 11, 2, 4);
            Assert.AreEqual("20000301111102.004", date.Value);
            date = new DTM(2000, 3, 1, 11, 11, 2, 14);
            Assert.AreEqual("20000301111102.014", date.Value);
            date = new DTM(2000, 3, 1, 11, 11, 2, 104);
            Assert.AreEqual("20000301111102.104", date.Value);
            date = new DTM(2000, 3, 1, 11, 11, 2, 124);
            Assert.AreEqual("20000301111102.124", date.Value);

            date = new DTM(2000, 3, 1, 11, 11, 2, 4, null, -5);
            Assert.AreEqual("20000301111102.004-0500", date.Value);
            date = new DTM(2000, 3, 1, 11, 11, 2, 14, null, -5);
            Assert.AreEqual("20000301111102.014-0500", date.Value);
            date = new DTM(2000, 3, 1, 11, 11, 2, 104, null, -5);
            Assert.AreEqual("20000301111102.104-0500", date.Value);
            date = new DTM(2000, 3, 1, 11, 11, 2, 124, null, -5);
            Assert.AreEqual("20000301111102.124-0500", date.Value);
        }
示例#8
0
        public void Should_Serialize_yyyyMMddHHmmss()
        {
            var date = new DTM(2000, 3, 1, 11, 11, 2);
            Assert.AreEqual("20000301111102", date.Value);

            date = new DTM(2000, 3, 1, 11, 11, 2, null, null, -2, 15);
            Assert.AreEqual("20000301111102-0215", date.Value);
        }
示例#9
0
        /// <summary>
        /// Build passenger list.
        /// Original from https://www.cbp.gov/sites/default/files/documents/paxlst_012_36_3.txt
        /// </summary>
        static TSPAXLST BuildPassengerList(string controlNumber)
        {
            var result = new TSPAXLST();

            //  Message header
            result.UNH = new UNH();
            result.UNH.MessageReferenceNumber_01                      = controlNumber.PadLeft(14, '0');
            result.UNH.MessageIdentifier_02                           = new S009();
            result.UNH.MessageIdentifier_02.MessageType_01            = "PAXLST";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "03B";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentnamecode_01             = "10";
            result.BGM.DOCUMENTMESSAGEIDENTIFICATION_02                       = new C106();
            result.BGM.DOCUMENTMESSAGEIDENTIFICATION_02.Documentidentifier_01 = "LOCKKH04103101";
            result.BGM.Messagefunctioncode_03 = "4";

            result.RFF = new RFF();
            result.RFF.REFERENCE_01 = new C506();
            result.RFF.REFERENCE_01.Referencecodequalifier_01 = "RFA";
            result.RFF.REFERENCE_01.Referenceidentifier_02    = "03";

            //  Repeating TDT Groups
            result.TDTLoop = new List <Loop_TDT_PAXLST>();

            //  Begin TDT Group
            var tdtLoop1 = new Loop_TDT_PAXLST();

            tdtLoop1.TDT = new TDT();
            tdtLoop1.TDT.Transportstagecodequalifier_01 = "11";
            tdtLoop1.TDT.CARRIER_05 = new C040();
            tdtLoop1.TDT.CARRIER_05.Carrieridentifier_01          = "LOCK";
            tdtLoop1.TDT.CARRIER_05.Codelistidentificationcode_02 = "172";

            tdtLoop1.DTM = new DTM();
            tdtLoop1.DTM.DATETIMEPERIOD_01 = new C507();
            tdtLoop1.DTM.DATETIMEPERIOD_01.Dateortimeorperiodfunctioncodequalifier_01 = "132";
            tdtLoop1.DTM.DATETIMEPERIOD_01.Dateortimeorperiodtext_02       = "20041230";
            tdtLoop1.DTM.DATETIMEPERIOD_01.Dateortimeorperiodformatcode_03 = "102";

            //  End TDT Group
            result.TDTLoop.Add(tdtLoop1);

            //  Repeating RFF Groups
            result.NADLoop2 = new List <Loop_NAD_PAXLST_2>();

            //  Begin NAD Group 1
            var nadLoop1 = new Loop_NAD_PAXLST_2();

            nadLoop1.NAD = new NAD();
            nadLoop1.NAD.Partyfunctioncodequalifier_01 = "VW";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyidentifier_01            = "0000041153";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistidentificationcode_02 = "109";
            nadLoop1.NAD.PARTYNAME_04 = new C080();
            nadLoop1.NAD.PARTYNAME_04.Partyname_01           = "AOMAD";
            nadLoop1.NAD.PARTYNAME_04.Partyname_02           = "CHRIS";
            nadLoop1.NAD.PARTYNAME_04.Partynameformatcode_06 = "1";
            nadLoop1.NAD.STREET_05 = new C059();
            nadLoop1.NAD.STREET_05.Streetandnumberorpostofficeboxidentifier_01 = "11107 SUNSET HILLS ROAD";
            nadLoop1.NAD.Cityname_06 = "RESTON";
            nadLoop1.NAD.COUNTRYSUBENTITYDETAILS_07 = new C819();
            nadLoop1.NAD.COUNTRYSUBENTITYDETAILS_07.Countrysubentitynamecode_01      = "VA";
            nadLoop1.NAD.COUNTRYSUBENTITYDETAILS_07.Codelistidentificationcode_02    = "163";
            nadLoop1.NAD.COUNTRYSUBENTITYDETAILS_07.Codelistresponsibleagencycode_03 = "5";
            nadLoop1.NAD.Postalidentificationcode_08 = "20190";

            //  Repeating ATT
            nadLoop1.ATT = new List <ATT>();

            var attNad1 = new ATT();

            attNad1.Attributefunctioncodequalifier_01 = "2";
            attNad1.ATTRIBUTEDETAIL_03 = new List <C956>();
            var c9561 = new C956();

            c9561.Attributedescriptioncode_01 = "M";
            attNad1.ATTRIBUTEDETAIL_03.Add(c9561);
            var c9562 = new C956();

            c9562.Attributedescriptioncode_01 = "M";
            attNad1.ATTRIBUTEDETAIL_03.Add(c9562);
            var c9563 = new C956();

            c9563.Attributedescriptioncode_01 = "M";
            attNad1.ATTRIBUTEDETAIL_03.Add(c9563);
            var c9564 = new C956();

            c9564.Attributedescriptioncode_01 = "M";
            attNad1.ATTRIBUTEDETAIL_03.Add(c9564);
            var c9565 = new C956();

            c9565.Attributedescriptioncode_01 = "M";
            attNad1.ATTRIBUTEDETAIL_03.Add(c9565);
            nadLoop1.ATT.Add(attNad1);

            //  Repeating DTM
            nadLoop1.DTM = new List <DTM>();

            var dtmNad1 = new DTM();

            dtmNad1.DATETIMEPERIOD_01 = new C507();
            dtmNad1.DATETIMEPERIOD_01.Dateortimeorperiodfunctioncodequalifier_01 = "329";
            dtmNad1.DATETIMEPERIOD_01.Dateortimeorperiodtext_02       = "19350919";
            dtmNad1.DATETIMEPERIOD_01.Dateortimeorperiodformatcode_03 = "102";
            nadLoop1.DTM.Add(dtmNad1);

            //  Repeating EMP
            nadLoop1.EMP = new List <EMP>();

            var empNad1 = new EMP();

            empNad1.Employmentdetailscodequalifier_01 = "4";
            empNad1.QUALIFICATIONCLASSIFICATION_04    = new C950();
            empNad1.QUALIFICATIONCLASSIFICATION_04.Qualificationclassificationdescriptioncode_01 = "1";
            empNad1.Qualificationapplicationareacode_06 = "8";
            nadLoop1.EMP.Add(empNad1);

            //  Repeating NAT
            nadLoop1.NAT = new List <NAT>();

            var natNad1 = new NAT();

            natNad1.Nationalitycodequalifier_01 = "2";
            natNad1.NATIONALITYDETAILS_02       = new C042();
            natNad1.NATIONALITYDETAILS_02.Nationalitynamecode_01           = "US";
            natNad1.NATIONALITYDETAILS_02.Codelistresponsibleagencycode_03 = "5";
            nadLoop1.NAT.Add(natNad1);

            //  Repeating DOC NAD Groups
            nadLoop1.DOCLoop = new List <Loop_DOC_PAXLST>();

            //  Begin DOC NAD Group 1
            var docNad1 = new Loop_DOC_PAXLST();

            docNad1.DOC = new DOC();
            docNad1.DOC.DOCUMENTMESSAGENAME_01 = new C002();
            docNad1.DOC.DOCUMENTMESSAGENAME_01.Documentnamecode_01 = "5K";
            docNad1.DOC.DOCUMENTMESSAGEDETAILS_02 = new C503();
            docNad1.DOC.DOCUMENTMESSAGEDETAILS_02.Documentidentifier_01 = "P100971204141";

            docNad1.LOC = new List <LOC>();

            var locDoc1 = new LOC();

            locDoc1.Locationfunctioncodequalifier_01 = "91";
            locDoc1.LOCATIONIDENTIFICATION_02        = new C517();
            locDoc1.LOCATIONIDENTIFICATION_02.Locationnamecode_01           = "VA";
            locDoc1.LOCATIONIDENTIFICATION_02.Codelistidentificationcode_02 = "163";
            docNad1.LOC.Add(locDoc1);

            var locDoc2 = new LOC();

            locDoc2.Locationfunctioncodequalifier_01 = "91";
            locDoc2.LOCATIONIDENTIFICATION_02        = new C517();
            locDoc2.LOCATIONIDENTIFICATION_02.Locationnamecode_01           = "US";
            locDoc2.LOCATIONIDENTIFICATION_02.Codelistidentificationcode_02 = "162";
            docNad1.LOC.Add(locDoc2);

            //  End DOC NAD Group 1
            nadLoop1.DOCLoop.Add(docNad1);

            //  Begin DOC NAD Group 2
            var docNad2 = new Loop_DOC_PAXLST();

            docNad2.DOC = new DOC();
            docNad2.DOC.DOCUMENTMESSAGENAME_01 = new C002();
            docNad2.DOC.DOCUMENTMESSAGENAME_01.Documentnamecode_01 = "39";
            docNad2.DOC.DOCUMENTMESSAGEDETAILS_02 = new C503();
            docNad2.DOC.DOCUMENTMESSAGEDETAILS_02.Documentidentifier_01 = "15504141";

            docNad2.LOC = new List <LOC>();

            var locDoc3 = new LOC();

            locDoc3.Locationfunctioncodequalifier_01 = "91";
            locDoc3.LOCATIONIDENTIFICATION_02        = new C517();
            locDoc3.LOCATIONIDENTIFICATION_02.Locationnamecode_01           = "US";
            locDoc3.LOCATIONIDENTIFICATION_02.Codelistidentificationcode_02 = "162";
            docNad2.LOC.Add(locDoc3);

            //  End DOC NAD Group 2
            nadLoop1.DOCLoop.Add(docNad2);

            //  End NAD Group 1
            result.NADLoop2.Add(nadLoop1);

            return(result);
        }
示例#10
0
        public static TSINVOIC CreateInvoice()
        {
            var result = new TSINVOIC
            {
                UNH = new UNH
                {
                    MessageReferenceNumber_01 = "123",
                    MessageIdentifier_02      = new S009
                    {
                        MessageTypeIdentifier_01    = "INVOIC",
                        MessageTypeVersionNumber_02 = "D00",
                        MessageTypeReleaseNumber_03 = "A",
                        ControllingAgency_04        = "UN"
                    }
                },
                BGM = new BGM
                {
                    DOCUMENTMESSAGENAME_01 = new C002 {
                        Documentnamecode_01 = "123"
                    },
                    DOCUMENTMESSAGEIDENTIFICATION_02 = new C106
                    {
                        Documentidentifier_01 = "12345678",
                        Versionidentifier_02  = "9",
                    },
                    Messagefunctioncode_03 = "8"
                },
                DTM = new List <DTM>(),
                DGS = new DGS
                {
                    Dangerousgoodsregulationscode_01 = "",
                    HAZARDCODE_02 = new C205
                    {
                        Hazardidentificationcode_01 = "",
                        Additionalhazardclassificationidentifier_02 = ""
                    }
                },
                UNS = new UNS {
                    Sectionidentification_01 = "B"
                },
                MOALoop4 =
                    new List <TSINVOIC_MOALoop4>
                {
                    new TSINVOIC_MOALoop4
                    {
                        MOA = new MOA {
                            MONETARYAMOUNT_01 = new C516 {
                                Monetaryamounttypecodequalifier_01 = "10"
                            }
                        }
                    }
                }
            };

            var dtm = new DTM
            {
                DATETIMEPERIOD_01 = new C507
                {
                    Dateortimeorperiodfunctioncodequalifier_01 = "137",
                    Dateortimeorperiodvalue_02      = "19980610",
                    Dateortimeorperiodformatcode_03 = "102"
                }
            };

            result.DTM.Add(dtm);

            return(result);
        }
        /// <summary>
        /// Build invoice.
        /// Original from https://www.gs1.org/standards/edi-xml-gs1-eancom/eancom-invoic-s4/syntax-4
        /// </summary>
        public static TSINVOIC BuildInvoice(string controlNumber)
        {
            var result = new TSINVOIC();

            //  Message header
            result.UNH = new UNH();
            result.UNH.MessageReferenceNumber_01                      = controlNumber.PadLeft(14, '0');
            result.UNH.MessageIdentifier_02                           = new S009();
            result.UNH.MessageIdentifier_02.MessageType_01            = "INVOIC";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "96A";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

            //  Commercial invoice number IN432097
            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentmessagenamecoded_01 = "380";
            result.BGM.Documentmessagenumber_02 = "IN432097";

            //  Repeating DTM
            result.DTM = new List <DTM>();

            //  Message date 8th March 2002
            var dtm = new DTM();

            dtm.DATETIMEPERIOD_01 = new C507();
            dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "137";
            dtm.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020308";
            dtm.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            result.DTM.Add(dtm);

            //  Instructions to pay in bank account
            result.PAI = new PAI();
            result.PAI.PAYMENTINSTRUCTIONDETAILS_01 = new C534();
            result.PAI.PAYMENTINSTRUCTIONDETAILS_01.Paymentmeanscoded_03 = "42";

            //  Repeating RFF Groups
            result.RFFLoop = new List <Loop_RFF_INVOIC>();

            //  Begin RFF Group 1
            var rffLoop1 = new Loop_RFF_INVOIC();

            //  Purchase order invoiced number ORD9523
            rffLoop1.RFF = new RFF();
            rffLoop1.RFF.REFERENCE_01 = new C506();
            rffLoop1.RFF.REFERENCE_01.Referencequalifier_01 = "ON";
            rffLoop1.RFF.REFERENCE_01.Referencenumber_02    = "ORD9523";

            //  Repeating DTM
            rffLoop1.DTM = new List <DTM>();

            //  Reference date 12th February 2002
            var dtmRff1 = new DTM();

            dtmRff1.DATETIMEPERIOD_01 = new C507();
            dtmRff1.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "171";
            dtmRff1.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020212";
            dtmRff1.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            rffLoop1.DTM.Add(dtmRff1);

            //  End RFF Group 1
            result.RFFLoop.Add(rffLoop1);

            //  Begin RFF Group 2
            var rffLoop2 = new Loop_RFF_INVOIC();

            //  Price list reference number PL99523
            rffLoop2.RFF = new RFF();
            rffLoop2.RFF.REFERENCE_01 = new C506();
            rffLoop2.RFF.REFERENCE_01.Referencequalifier_01 = "PL";
            rffLoop2.RFF.REFERENCE_01.Referencenumber_02    = "PL99523";

            //  Repeating DTM
            rffLoop2.DTM = new List <DTM>();

            //  Reference date 1st January 2002
            var dtmRff2 = new DTM();

            dtmRff2.DATETIMEPERIOD_01 = new C507();
            dtmRff2.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "171";
            dtmRff2.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020101";
            dtmRff2.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            rffLoop2.DTM.Add(dtmRff2);

            //  End RFF Group 2
            result.RFFLoop.Add(rffLoop2);

            //  Begin RFF Group 3
            var rffLoop3 = new Loop_RFF_INVOIC();

            //  Reference delivery note number 53662
            rffLoop3.RFF = new RFF();
            rffLoop3.RFF.REFERENCE_01 = new C506();
            rffLoop3.RFF.REFERENCE_01.Referencequalifier_01 = "DQ";
            rffLoop3.RFF.REFERENCE_01.Referencenumber_02    = "53662";

            //  Repeating DTM
            rffLoop3.DTM = new List <DTM>();

            //  Reference date 15th February 2002
            var dtmRff3 = new DTM();

            dtmRff3.DATETIMEPERIOD_01 = new C507();
            dtmRff3.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "171";
            dtmRff3.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020215";
            dtmRff3.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            rffLoop3.DTM.Add(dtmRff3);

            //  End RFF Group 3
            result.RFFLoop.Add(rffLoop3);

            //  Repeating NAD Groups
            result.NADLoop = new List <Loop_NAD_INVOIC>();

            //  Begin NAD Group 1
            var nadLoop1 = new Loop_NAD_INVOIC();

            //  Buyer identified by GLN 5412345000013
            nadLoop1.NAD = new NAD();
            nadLoop1.NAD.Partyqualifier_01             = "BY";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5412345000013";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  Repeating RFF Groups
            nadLoop1.RFFLoop = new List <Loop_RFF_INVOIC>();

            //  Begin RFF Group 1
            var rffNadLoop1 = new Loop_RFF_INVOIC();

            //  VAT reference number of the buyer 4146023
            rffNadLoop1.RFF = new RFF();
            rffNadLoop1.RFF.REFERENCE_01 = new C506();
            rffNadLoop1.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffNadLoop1.RFF.REFERENCE_01.Referencenumber_02    = "4146023";

            //  End RFF Group 1
            nadLoop1.RFFLoop.Add(rffNadLoop1);

            //  End NAD Group 1
            result.NADLoop.Add(nadLoop1);

            //  Begin NAD Group 2
            var nadLoop2 = new Loop_NAD_INVOIC();

            //  Supplier identified by GLN 4012345500004
            nadLoop2.NAD = new NAD();
            nadLoop2.NAD.Partyqualifier_01             = "SU";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "4012345500004";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  Repeating RFF Groups
            nadLoop2.RFFLoop = new List <Loop_RFF_INVOIC>();

            //  Begin RFF Group 1
            var rffNadLoop2 = new Loop_RFF_INVOIC();

            //  VAT reference number of the supplier VR12345
            rffNadLoop2.RFF = new RFF();
            rffNadLoop2.RFF.REFERENCE_01 = new C506();
            rffNadLoop2.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffNadLoop2.RFF.REFERENCE_01.Referencenumber_02    = "VR12345";

            //  End RFF Group 1
            nadLoop2.RFFLoop.Add(rffNadLoop2);

            //  End NAD Group 2
            result.NADLoop.Add(nadLoop2);

            //  Begin NAD Group 3
            var nadLoop3 = new Loop_NAD_INVOIC();

            //  Delivery party identified by GLN 5412345678908
            nadLoop3.NAD = new NAD();
            nadLoop3.NAD.Partyqualifier_01             = "DP";
            nadLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5412345678908";
            nadLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  End NAD Group 3
            result.NADLoop.Add(nadLoop3);

            //  Repeating CUX Groups
            result.CUXLoop = new List <Loop_CUX_INVOIC>();

            //  Begin CUX Group
            var cuxLoop = new Loop_CUX_INVOIC();

            //  Reference currency is Euros
            cuxLoop.CUX = new CUX();
            cuxLoop.CUX.CURRENCYDETAILS_01 = new C504();
            cuxLoop.CUX.CURRENCYDETAILS_01.Currencydetailsqualifier_01 = "2";
            cuxLoop.CUX.CURRENCYDETAILS_01.Currencycoded_02            = "EUR";
            cuxLoop.CUX.CURRENCYDETAILS_01.Currencyqualifier_03        = "4";

            //  End CUX Group
            result.CUXLoop.Add(cuxLoop);

            //  Repeating PAT Groups
            result.PATLoop = new List <Loop_PAT_INVOIC>();

            //  Begin PAT Group 1
            var patLoop1 = new Loop_PAT_INVOIC();

            //  Payment terms 2 months after date of invoice
            patLoop1.PAT = new PAT();
            patLoop1.PAT.Paymenttermstypequalifier_01 = "1";
            patLoop1.PAT.TERMSTIMEINFORMATION_03      = new C112();
            patLoop1.PAT.TERMSTIMEINFORMATION_03.Paymenttimereferencecoded_01 = "5";
            patLoop1.PAT.TERMSTIMEINFORMATION_03.Timerelationcoded_02         = "3";
            patLoop1.PAT.TERMSTIMEINFORMATION_03.Typeofperiodcoded_03         = "M";
            patLoop1.PAT.TERMSTIMEINFORMATION_03.Numberofperiods_04           = "2";

            //  End PAT Group 1
            result.PATLoop.Add(patLoop1);

            //  Begin PAT Group 2
            var patLoop2 = new Loop_PAT_INVOIC();

            //  Payment discount for payment 10 days after date of invoice
            patLoop2.PAT = new PAT();
            patLoop2.PAT.Paymenttermstypequalifier_01 = "22";
            patLoop2.PAT.TERMSTIMEINFORMATION_03      = new C112();
            patLoop2.PAT.TERMSTIMEINFORMATION_03.Paymenttimereferencecoded_01 = "5";
            patLoop2.PAT.TERMSTIMEINFORMATION_03.Timerelationcoded_02         = "3";
            patLoop2.PAT.TERMSTIMEINFORMATION_03.Typeofperiodcoded_03         = "D";
            patLoop2.PAT.TERMSTIMEINFORMATION_03.Numberofperiods_04           = "10";

            //  Percentage information for the allowances or charges 2.5 %
            patLoop2.PCD = new PCD();
            patLoop2.PCD.PERCENTAGEDETAILS_01 = new C501();
            patLoop2.PCD.PERCENTAGEDETAILS_01.Percentagequalifier_01  = "12";
            patLoop2.PCD.PERCENTAGEDETAILS_01.Percentage_02           = "2.5";
            patLoop2.PCD.PERCENTAGEDETAILS_01.Percentagebasiscoded_03 = "13";

            //  End PAT Group 2
            result.PATLoop.Add(patLoop2);

            //  Repeating ALC Groups
            result.ALCLoop = new List <Loop_ALC_INVOIC>();

            //  Begin ALC Group
            var alcLoop = new Loop_ALC_INVOIC();

            //  Charges to be paid by customer
            alcLoop.ALC = new ALC();
            alcLoop.ALC.Allowanceorchargequalifier_01    = "C";
            alcLoop.ALC.Settlementcoded_03               = "6";
            alcLoop.ALC.SPECIALSERVICESIDENTIFICATION_05 = new C214();
            alcLoop.ALC.SPECIALSERVICESIDENTIFICATION_05.Specialservicescoded_01 = "FC";

            //  Repeating MOA Groups
            alcLoop.MOALoop = new List <Loop_MOA_INVOIC>();

            //  Begin MOA Group
            var moaAlcLoop = new Loop_MOA_INVOIC();

            //  Monetary amount for the charge 120 EUR to be added
            moaAlcLoop.MOA = new MOA();
            moaAlcLoop.MOA.MONETARYAMOUNT_01 = new C516();
            moaAlcLoop.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "23";
            moaAlcLoop.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "120";

            //  End MOA Group
            alcLoop.MOALoop.Add(moaAlcLoop);

            //  Repeating TAX Groups
            alcLoop.TAXLoop = new List <Loop_TAX_INVOIC_2>();

            //  Begin TAX Group
            var taxAlcLoop = new Loop_TAX_INVOIC_2();

            //  Type of tax is value added tax at 19 %
            taxAlcLoop.TAX = new TAX();
            taxAlcLoop.TAX.Dutytaxfeefunctionqualifier_01 = "7";
            taxAlcLoop.TAX.DUTYTAXFEETYPE_02 = new C241();
            taxAlcLoop.TAX.DUTYTAXFEETYPE_02.Dutytaxfeetypecoded_01 = "VAT";
            taxAlcLoop.TAX.DUTYTAXFEEDETAIL_05 = new C243();
            taxAlcLoop.TAX.DUTYTAXFEEDETAIL_05.Dutytaxfeerate_04 = "19";
            taxAlcLoop.TAX.Dutytaxfeecategorycoded_06            = "S";

            //  Tax monetary amount 22.80 EUR
            taxAlcLoop.MOA = new MOA();
            taxAlcLoop.MOA.MONETARYAMOUNT_01 = new C516();
            taxAlcLoop.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "124";
            taxAlcLoop.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "22.80";

            //  End TAX Group
            alcLoop.TAXLoop.Add(taxAlcLoop);

            //  End ALC Group
            result.ALCLoop.Add(alcLoop);

            //  Repeating LIN Groups
            result.LINLoop = new List <Loop_LIN_INVOIC>();

            //  Begin LIN Group 1
            var linLoop1 = new Loop_LIN_INVOIC();

            //  Line item 1 identified by GTIN 4000862141404
            linLoop1.LIN = new LIN();
            linLoop1.LIN.Lineitemnumber_01           = "1";
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03 = new C212();
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "4000862141404";
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRS";

            //  Repeating QTY
            linLoop1.QTY = new List <QTY>();

            //  Invoiced quantity 40
            var qtyLin1 = new QTY();

            qtyLin1.QUANTITYDETAILS_01 = new C186();
            qtyLin1.QUANTITYDETAILS_01.Quantityqualifier_01 = "47";
            qtyLin1.QUANTITYDETAILS_01.Quantity_02          = "40";
            linLoop1.QTY.Add(qtyLin1);

            //  Repeating MOA Groups
            linLoop1.MOALoop = new List <Loop_MOA_INVOIC_2>();

            //  Begin MOA Group
            var moaLinLoop1 = new Loop_MOA_INVOIC_2();

            //  Line item amount 2.160 EUR
            moaLinLoop1.MOA = new MOA();
            moaLinLoop1.MOA.MONETARYAMOUNT_01 = new C516();
            moaLinLoop1.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "203";
            moaLinLoop1.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "2160";

            //  End MOA Group
            linLoop1.MOALoop.Add(moaLinLoop1);

            //  Repeating PRI Groups
            linLoop1.PRILoop = new List <Loop_PRI_INVOIC>();

            //  Begin PRI Group
            var priLinLoop1 = new Loop_PRI_INVOIC();

            //  Gross calculation price of 60 which does not include any allowance or charges, from the catalogue.
            priLinLoop1.PRI = new PRI();
            priLinLoop1.PRI.PRICEINFORMATION_01 = new C509();
            priLinLoop1.PRI.PRICEINFORMATION_01.Pricequalifier_01 = "AAB";
            priLinLoop1.PRI.PRICEINFORMATION_01.Price_02          = "60";
            priLinLoop1.PRI.PRICEINFORMATION_01.Pricetypecoded_03 = "CA";

            //  End PRI Group
            linLoop1.PRILoop.Add(priLinLoop1);

            //  Repeating TAX Groups
            linLoop1.TAXLoop = new List <Loop_TAX_INVOIC>();

            //  Begin TAX Group
            var taxLinLoop1 = new Loop_TAX_INVOIC();

            //  Type of tax for the line item is value added tax 21%
            taxLinLoop1.TAX = new TAX();
            taxLinLoop1.TAX.Dutytaxfeefunctionqualifier_01 = "7";
            taxLinLoop1.TAX.DUTYTAXFEETYPE_02 = new C241();
            taxLinLoop1.TAX.DUTYTAXFEETYPE_02.Dutytaxfeetypecoded_01 = "VAT";
            taxLinLoop1.TAX.DUTYTAXFEEDETAIL_05 = new C243();
            taxLinLoop1.TAX.DUTYTAXFEEDETAIL_05.Dutytaxfeerate_04 = "21";
            taxLinLoop1.TAX.Dutytaxfeecategorycoded_06            = "S";

            //  Tax monetary amount 453.60 EUR
            taxLinLoop1.MOA = new MOA();
            taxLinLoop1.MOA.MONETARYAMOUNT_01 = new C516();
            taxLinLoop1.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "124";
            taxLinLoop1.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "453.60";

            //  End TAX Group
            linLoop1.TAXLoop.Add(taxLinLoop1);

            //  Repeating ALC Groups
            linLoop1.ALCLoop = new List <Loop_ALC_INVOIC_2>();

            //  Begin ALC Group
            var alcLinLoop1 = new Loop_ALC_INVOIC_2();

            //  Allowances
            alcLinLoop1.ALC = new ALC();
            alcLinLoop1.ALC.Allowanceorchargequalifier_01 = "A";

            //  PCD Group
            alcLinLoop1.PCDLoop = new Loop_PCD_INVOIC();

            //  Percentage information for the allowances 10 %
            alcLinLoop1.PCDLoop.PCD = new PCD();
            alcLinLoop1.PCDLoop.PCD.PERCENTAGEDETAILS_01 = new C501();
            alcLinLoop1.PCDLoop.PCD.PERCENTAGEDETAILS_01.Percentagequalifier_01 = "1";
            alcLinLoop1.PCDLoop.PCD.PERCENTAGEDETAILS_01.Percentage_02          = "10";

            //  End ALC Group
            linLoop1.ALCLoop.Add(alcLinLoop1);

            //  End LIN Group 1
            result.LINLoop.Add(linLoop1);

            //  Begin LIN Group 2
            var linLoop2 = new Loop_LIN_INVOIC();

            //  Line item 2 identified by GTIN 5412345111115
            linLoop2.LIN = new LIN();
            linLoop2.LIN.Lineitemnumber_01           = "2";
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03 = new C212();
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5412345111115";
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRS";

            //  Repeating QTY
            linLoop2.QTY = new List <QTY>();

            //  Delivered quantity 5
            var qtyLin2 = new QTY();

            qtyLin2.QUANTITYDETAILS_01 = new C186();
            qtyLin2.QUANTITYDETAILS_01.Quantityqualifier_01 = "46";
            qtyLin2.QUANTITYDETAILS_01.Quantity_02          = "5";
            linLoop2.QTY.Add(qtyLin2);

            //  Invoiced quantity 12.65 Kg.
            var qtyLin3 = new QTY();

            qtyLin3.QUANTITYDETAILS_01 = new C186();
            qtyLin3.QUANTITYDETAILS_01.Quantityqualifier_01    = "47";
            qtyLin3.QUANTITYDETAILS_01.Quantity_02             = "12.65";
            qtyLin3.QUANTITYDETAILS_01.Measureunitqualifier_03 = "KGM";
            linLoop2.QTY.Add(qtyLin3);

            //  Repeating MOA Groups
            linLoop2.MOALoop = new List <Loop_MOA_INVOIC_2>();

            //  Begin MOA Group
            var moaLinLoop2 = new Loop_MOA_INVOIC_2();

            //  Line item amount 2.530 EUR
            moaLinLoop2.MOA = new MOA();
            moaLinLoop2.MOA.MONETARYAMOUNT_01 = new C516();
            moaLinLoop2.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "203";
            moaLinLoop2.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "2530";

            //  End MOA Group
            linLoop2.MOALoop.Add(moaLinLoop2);

            //  Repeating PRI Groups
            linLoop2.PRILoop = new List <Loop_PRI_INVOIC>();

            //  Begin PRI Group
            var priLinLoop2 = new Loop_PRI_INVOIC();

            //  Net price of 200 per Kg from the catalogue, this price includes allowances and charges
            priLinLoop2.PRI = new PRI();
            priLinLoop2.PRI.PRICEINFORMATION_01 = new C509();
            priLinLoop2.PRI.PRICEINFORMATION_01.Pricequalifier_01       = "AAA";
            priLinLoop2.PRI.PRICEINFORMATION_01.Price_02                = "200";
            priLinLoop2.PRI.PRICEINFORMATION_01.Pricetypecoded_03       = "CA";
            priLinLoop2.PRI.PRICEINFORMATION_01.Unitpricebasis_05       = "1";
            priLinLoop2.PRI.PRICEINFORMATION_01.Measureunitqualifier_06 = "KGM";

            //  End PRI Group
            linLoop2.PRILoop.Add(priLinLoop2);

            //  Repeating TAX Groups
            linLoop2.TAXLoop = new List <Loop_TAX_INVOIC>();

            //  Begin TAX Group
            var taxLinLoop2 = new Loop_TAX_INVOIC();

            //  Type of tax for the line item is value added tax 19 %
            taxLinLoop2.TAX = new TAX();
            taxLinLoop2.TAX.Dutytaxfeefunctionqualifier_01 = "7";
            taxLinLoop2.TAX.DUTYTAXFEETYPE_02 = new C241();
            taxLinLoop2.TAX.DUTYTAXFEETYPE_02.Dutytaxfeetypecoded_01 = "VAT";
            taxLinLoop2.TAX.DUTYTAXFEEDETAIL_05 = new C243();
            taxLinLoop2.TAX.DUTYTAXFEEDETAIL_05.Dutytaxfeerate_04 = "19";
            taxLinLoop2.TAX.Dutytaxfeecategorycoded_06            = "S";

            //  Tax monetary amount 480.70 EUR
            taxLinLoop2.MOA = new MOA();
            taxLinLoop2.MOA.MONETARYAMOUNT_01 = new C516();
            taxLinLoop2.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "124";
            taxLinLoop2.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "480.70";

            //  End TAX Group
            linLoop2.TAXLoop.Add(taxLinLoop2);

            //  End LIN Group 2
            result.LINLoop.Add(linLoop2);

            //  To separate the detail section from the summary section
            result.UNS = new UNS();
            result.UNS.Sectionidentification_01 = "S";

            //  Repeating CNT
            result.CNT = new List <CNT>();

            //  Total number of line items 2
            var cnt = new CNT();

            cnt.CONTROL_01 = new C270();
            cnt.CONTROL_01.Controlqualifier_01 = "2";
            cnt.CONTROL_01.Controlvalue_02     = "2";
            result.CNT.Add(cnt);

            //  Repeating MOA Groups
            result.MOALoop = new List <Loop_MOA_INVOIC_3>();

            //  Begin MOA Group 1
            var moaLoop1 = new Loop_MOA_INVOIC_3();

            //  Message total monetary amount 5.767,10 EUR
            moaLoop1.MOA = new MOA();
            moaLoop1.MOA.MONETARYAMOUNT_01 = new C516();
            moaLoop1.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "86";
            moaLoop1.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "5767.10";

            //  End MOA Group 1
            result.MOALoop.Add(moaLoop1);

            //  Begin MOA Group 2
            var moaLoop2 = new Loop_MOA_INVOIC_3();

            //  Message total line items amount 4.690 EUR
            moaLoop2.MOA = new MOA();
            moaLoop2.MOA.MONETARYAMOUNT_01 = new C516();
            moaLoop2.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "79";
            moaLoop2.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "4690";

            //  End MOA Group 2
            result.MOALoop.Add(moaLoop2);

            //  Begin MOA Group 3
            var moaLoop3 = new Loop_MOA_INVOIC_3();

            //  Total amount subject to payment discount 5.767.10 EUR
            moaLoop3.MOA = new MOA();
            moaLoop3.MOA.MONETARYAMOUNT_01 = new C516();
            moaLoop3.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "129";
            moaLoop3.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "5767.10";

            //  End MOA Group 3
            result.MOALoop.Add(moaLoop3);

            //  Begin MOA Group 4
            var moaLoop4 = new Loop_MOA_INVOIC_3();

            //  Message total taxable amount 4.810 EUR
            moaLoop4.MOA = new MOA();
            moaLoop4.MOA.MONETARYAMOUNT_01 = new C516();
            moaLoop4.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "125";
            moaLoop4.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "4810";

            //  End MOA Group 4
            result.MOALoop.Add(moaLoop4);

            //  Begin MOA Group 5
            var moaLoop5 = new Loop_MOA_INVOIC_3();

            //  Message total tax amount 957,10 EUR
            moaLoop5.MOA = new MOA();
            moaLoop5.MOA.MONETARYAMOUNT_01 = new C516();
            moaLoop5.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "176";
            moaLoop5.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "957.10";

            //  End MOA Group 5
            result.MOALoop.Add(moaLoop5);

            //  Begin MOA Group 6
            var moaLoop6 = new Loop_MOA_INVOIC_3();

            //  Total charges/allowances 120 EUR
            moaLoop6.MOA = new MOA();
            moaLoop6.MOA.MONETARYAMOUNT_01 = new C516();
            moaLoop6.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "131";
            moaLoop6.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "120";

            //  End MOA Group 6
            result.MOALoop.Add(moaLoop6);

            //  Repeating TAX Groups
            result.TAXLoop2 = new List <Loop_TAX_INVOIC_3>();

            //  Begin TAX Group 1
            var taxLoop1 = new Loop_TAX_INVOIC_3();

            //  Type of tax for the total message is value added tax 19 %
            taxLoop1.TAX = new TAX();
            taxLoop1.TAX.Dutytaxfeefunctionqualifier_01 = "7";
            taxLoop1.TAX.DUTYTAXFEETYPE_02 = new C241();
            taxLoop1.TAX.DUTYTAXFEETYPE_02.Dutytaxfeetypecoded_01 = "VAT";
            taxLoop1.TAX.DUTYTAXFEEDETAIL_05 = new C243();
            taxLoop1.TAX.DUTYTAXFEEDETAIL_05.Dutytaxfeerate_04 = "19";
            taxLoop1.TAX.Dutytaxfeecategorycoded_06            = "S";

            //  Repeating MOA
            taxLoop1.MOA = new List <MOA>();

            //  Tax monetary amount 503.50 EUR
            var moaTax1 = new MOA();

            moaTax1.MONETARYAMOUNT_01 = new C516();
            moaTax1.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "124";
            moaTax1.MONETARYAMOUNT_01.Monetaryamount_02 = "503.50";
            taxLoop1.MOA.Add(moaTax1);

            //  End TAX Group 1
            result.TAXLoop2.Add(taxLoop1);

            //  Begin TAX Group 2
            var taxLoop2 = new Loop_TAX_INVOIC_3();

            //  Type of tax for the total message is value added tax 21 %
            taxLoop2.TAX = new TAX();
            taxLoop2.TAX.Dutytaxfeefunctionqualifier_01 = "7";
            taxLoop2.TAX.DUTYTAXFEETYPE_02 = new C241();
            taxLoop2.TAX.DUTYTAXFEETYPE_02.Dutytaxfeetypecoded_01 = "VAT";
            taxLoop2.TAX.DUTYTAXFEEDETAIL_05 = new C243();
            taxLoop2.TAX.DUTYTAXFEEDETAIL_05.Dutytaxfeerate_04 = "21";
            taxLoop2.TAX.Dutytaxfeecategorycoded_06            = "S";

            //  Repeating MOA
            taxLoop2.MOA = new List <MOA>();

            //  Tax monetary amount 453.60 EUR
            var moaTax2 = new MOA();

            moaTax2.MONETARYAMOUNT_01 = new C516();
            moaTax2.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "124";
            moaTax2.MONETARYAMOUNT_01.Monetaryamount_02 = "453.60";
            taxLoop2.MOA.Add(moaTax2);

            //  End TAX Group 2
            result.TAXLoop2.Add(taxLoop2);

            result.ALCLoop2 = new List <Loop_ALC_INVOIC_3>();

            //  Begin ALC Group
            var alcLoop2 = new Loop_ALC_INVOIC_3();

            //  Freight charge
            alcLoop2.ALC = new ALC();
            alcLoop2.ALC.Allowanceorchargequalifier_01    = "C";
            alcLoop2.ALC.SPECIALSERVICESIDENTIFICATION_05 = new C214();
            alcLoop2.ALC.SPECIALSERVICESIDENTIFICATION_05.Specialservicescoded_01 = "FC";

            //  Repeating MOA
            alcLoop2.MOA = new List <MOA>();

            //  Total charges 120 EUR
            var moaAlc = new MOA();

            moaAlc.MONETARYAMOUNT_01 = new C516();
            moaAlc.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "131";
            moaAlc.MONETARYAMOUNT_01.Monetaryamount_02 = "120";
            alcLoop2.MOA.Add(moaAlc);

            //  End ALC Group
            result.ALCLoop2.Add(alcLoop2);

            return(result);
        }
示例#12
0
文件: Program.cs 项目: mrtinkz/Sdk
        /// <summary>
        /// Build cargo report.
        /// Original from https://www.cbp.gov/sites/default/files/documents/cuscar_012_30_3.txt
        /// </summary>
        static TSCUSCAR BuildCargoReport(string controlNumber)
        {
            var result = new TSCUSCAR();

            //  Message header
            result.UNH = new UNH();
            result.UNH.MessageReferenceNumber_01                      = controlNumber.PadLeft(14, '0');
            result.UNH.MessageIdentifier_02                           = new S009();
            result.UNH.MessageIdentifier_02.MessageType_01            = "CUSCAR";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "03B";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentnamecode_01             = "85";
            result.BGM.DOCUMENTMESSAGENAME_01.Documentname_04                 = "STANDARD";
            result.BGM.DOCUMENTMESSAGEIDENTIFICATION_02                       = new C106();
            result.BGM.DOCUMENTMESSAGEIDENTIFICATION_02.Documentidentifier_01 = "LOCKKH04112206";
            result.BGM.Messagefunctioncode_03 = "22";

            //  Repeating DTM
            result.DTM = new List <DTM>();

            var dtm1 = new DTM();

            dtm1.DATETIMEPERIOD_01 = new C507();
            dtm1.DATETIMEPERIOD_01.Dateortimeorperiodfunctioncodequalifier_01 = "132";
            dtm1.DATETIMEPERIOD_01.Dateortimeorperiodtext_02       = "200412301200";
            dtm1.DATETIMEPERIOD_01.Dateortimeorperiodformatcode_03 = "203";
            result.DTM.Add(dtm1);

            //  Repeating LOC
            result.LOC = new List <LOC>();

            var loc1 = new LOC();

            loc1.Locationfunctioncodequalifier_01 = "60";
            loc1.LOCATIONIDENTIFICATION_02        = new C517();
            loc1.LOCATIONIDENTIFICATION_02.Locationnamecode_01           = "0901";
            loc1.LOCATIONIDENTIFICATION_02.Codelistidentificationcode_02 = "77";
            result.LOC.Add(loc1);

            //  Repeating RFF Groups
            result.RFFLoop = new List <Loop_RFF_CUSCAR>();

            //  Begin RFF Group
            var rffLoop1 = new Loop_RFF_CUSCAR();

            rffLoop1.RFF = new RFF();
            rffLoop1.RFF.REFERENCE_01 = new C506();
            rffLoop1.RFF.REFERENCE_01.Referencecodequalifier_01 = "ABO";
            rffLoop1.RFF.REFERENCE_01.Referenceidentifier_02    = "ABO04100000";

            //  End RFF Group
            result.RFFLoop.Add(rffLoop1);

            //  Repeating RFF Groups
            result.NADLoop = new List <Loop_NAD_CUSCAR>();

            //  Begin NAD Group 1
            var nadLoop1 = new Loop_NAD_CUSCAR();

            nadLoop1.NAD = new NAD();
            nadLoop1.NAD.Partyfunctioncodequalifier_01 = "CA";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyidentifier_01            = "LOCK";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistidentificationcode_02 = "172";
            nadLoop1.NAD.STREET_05 = new C059();
            nadLoop1.NAD.STREET_05.Streetandnumberorpostofficeboxidentifier_01 = "11107 SUNSET HILLS ROAD";
            nadLoop1.NAD.STREET_05.Streetandnumberorpostofficeboxidentifier_02 = "77705 ARLINGTON ROAD";
            nadLoop1.NAD.Cityname_06 = "RESTON";
            nadLoop1.NAD.COUNTRYSUBENTITYDETAILS_07 = new C819();
            nadLoop1.NAD.COUNTRYSUBENTITYDETAILS_07.Countrysubentitynamecode_01   = "VA";
            nadLoop1.NAD.COUNTRYSUBENTITYDETAILS_07.Codelistidentificationcode_02 = "163";
            nadLoop1.NAD.Postalidentificationcode_08 = "20190";

            //  End NAD Group 1
            result.NADLoop.Add(nadLoop1);

            //  Begin NAD Group 2
            var nadLoop2 = new Loop_NAD_CUSCAR();

            nadLoop2.NAD = new NAD();
            nadLoop2.NAD.Partyfunctioncodequalifier_01 = "VW";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyidentifier_01            = "0000041047";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistidentificationcode_02 = "109";
            nadLoop2.NAD.PARTYNAME_04 = new C080();
            nadLoop2.NAD.PARTYNAME_04.Partyname_01 = "AADLER";
            nadLoop2.NAD.PARTYNAME_04.Partyname_02 = "KEN";

            //  End NAD Group 2
            result.NADLoop.Add(nadLoop2);

            //  Repeating FTX
            result.FTX = new List <FTX>();

            var ftx1 = new FTX();

            ftx1.Textsubjectcodequalifier_01 = "INS";
            ftx1.TEXTREFERENCE_03            = new C107();
            ftx1.TEXTREFERENCE_03.Freetextdescriptioncode_01 = "INSURANCE INFOR";
            ftx1.TEXTLITERAL_04             = new C108();
            ftx1.TEXTLITERAL_04.Freetext_01 = "NAMESTATE FARM INSURANCE COMPANY";
            ftx1.TEXTLITERAL_04.Freetext_02 = "PLCYQO123456789";
            ftx1.TEXTLITERAL_04.Freetext_03 = "AMNT100000";
            ftx1.TEXTLITERAL_04.Freetext_04 = "YEAR2004";
            result.FTX.Add(ftx1);

            //  Repeating TDT Groups
            result.TDTLoop = new List <Loop_TDT_CUSCAR>();

            //  Begin TDT Group
            var tdtLoop1 = new Loop_TDT_CUSCAR();

            tdtLoop1.TDT = new TDT();
            tdtLoop1.TDT.Transportstagecodequalifier_01 = "11";
            tdtLoop1.TDT.MODEOFTRANSPORT_03             = new C220();
            tdtLoop1.TDT.MODEOFTRANSPORT_03.Transportmodenamecode_01 = "03";
            tdtLoop1.TDT.TRANSPORTMEANS_04 = new C001();
            tdtLoop1.TDT.TRANSPORTMEANS_04.Transportmeansdescription_04 = "BT";
            tdtLoop1.TDT.Transitdirectionindicatorcode_06 = "I";
            tdtLoop1.TDT.TRANSPORTIDENTIFICATION_08       = new C222();
            tdtLoop1.TDT.TRANSPORTIDENTIFICATION_08.Codelistidentificationcode_02       = "109";
            tdtLoop1.TDT.TRANSPORTIDENTIFICATION_08.Transportmeansidentificationname_04 = "10000324";

            //  End TDT Group
            result.TDTLoop.Add(tdtLoop1);

            //  Repeating EQD Groups
            result.EQDLoop = new List <Loop_EQD_CUSCAR>();

            //  Begin EQD Group
            var eqdLoop1 = new Loop_EQD_CUSCAR();

            eqdLoop1.EQD = new EQD();
            eqdLoop1.EQD.Equipmenttypecodequalifier_01 = "BI";
            eqdLoop1.EQD.EQUIPMENTIDENTIFICATION_02    = new C237();
            eqdLoop1.EQD.EQUIPMENTIDENTIFICATION_02.Equipmentidentifier_01        = "10000325";
            eqdLoop1.EQD.EQUIPMENTIDENTIFICATION_02.Codelistidentificationcode_02 = "109";

            //  Repeating SEL
            eqdLoop1.SEL = new List <SEL>();

            var selEqd = new SEL();

            selEqd.Transportunitsealidentifier_01 = "SEALEQUNO001";
            eqdLoop1.SEL.Add(selEqd);

            //  Repeating EQD RFF Groups
            eqdLoop1.RFFLoop = new List <Loop_RFF_CUSCAR_4>();

            //  Begin RFF Group
            var rffEqdLoop1 = new Loop_RFF_CUSCAR_4();

            rffEqdLoop1.RFF = new RFF();
            rffEqdLoop1.RFF.REFERENCE_01 = new C506();
            rffEqdLoop1.RFF.REFERENCE_01.Referencecodequalifier_01 = "ABZ";
            rffEqdLoop1.RFF.REFERENCE_01.Referenceidentifier_02    = "EQU123";

            //  Repeating LOC
            rffEqdLoop1.LOC = new List <LOC>();

            var locRff1 = new LOC();

            locRff1.Locationfunctioncodequalifier_01 = "89";
            locRff1.LOCATIONIDENTIFICATION_02        = new C517();
            locRff1.LOCATIONIDENTIFICATION_02.Locationnamecode_01           = "VA";
            locRff1.LOCATIONIDENTIFICATION_02.Codelistidentificationcode_02 = "163";
            rffEqdLoop1.LOC.Add(locRff1);

            //  End RFF Group
            eqdLoop1.RFFLoop.Add(rffEqdLoop1);

            //  End EQD Group
            result.EQDLoop.Add(eqdLoop1);

            //  Repeating CNI Groups
            result.CNILoop = new List <Loop_CNI_CUSCAR>();

            //  Begin CNI Group
            var cniLoop1 = new Loop_CNI_CUSCAR();

            cniLoop1.CNI = new CNI();
            cniLoop1.CNI.Consolidationitemnumber_01 = "3741";
            cniLoop1.CNI.DOCUMENTMESSAGEDETAILS_02  = new C503();
            cniLoop1.CNI.DOCUMENTMESSAGEDETAILS_02.Documentstatuscode_02 = "23";

            //  Repeating DOC
            cniLoop1.DOC = new List <DOC>();

            var docCni1 = new DOC();

            docCni1.DOCUMENTMESSAGENAME_01 = new C002();
            docCni1.DOCUMENTMESSAGENAME_01.Documentnamecode_01 = "714";
            docCni1.DOCUMENTMESSAGENAME_01.Documentname_04     = "61";
            docCni1.DOCUMENTMESSAGEDETAILS_02 = new C503();
            docCni1.DOCUMENTMESSAGEDETAILS_02.Documentidentifier_01        = "KH041122106";
            docCni1.DOCUMENTMESSAGEDETAILS_02.Documentsourcedescription_03 = "LOCK";
            cniLoop1.DOC.Add(docCni1);

            //  Repeating RFF CNI Groups
            cniLoop1.RFFLoop = new List <Loop_RFF_CUSCAR_2>();

            //  Begin RFF CNI Group
            var rffCniLoop1 = new Loop_RFF_CUSCAR_2();

            rffCniLoop1.RFF = new RFF();
            rffCniLoop1.RFF.REFERENCE_01 = new C506();
            rffCniLoop1.RFF.REFERENCE_01.Referencecodequalifier_01 = "AAM";
            rffCniLoop1.RFF.REFERENCE_01.Referenceidentifier_02    = "LOCKKH041122106";

            //  Repeating CNT
            rffCniLoop1.CNT = new List <CNT>();

            var cntRff1 = new CNT();

            cntRff1.CONTROL_01 = new C270();
            cntRff1.CONTROL_01.Controltotaltypecodequalifier_01 = "58";
            cntRff1.CONTROL_01.Controltotalquantity_02          = "158";
            rffCniLoop1.CNT.Add(cntRff1);

            //  Repeating LOC
            rffCniLoop1.LOC = new List <LOC>();

            var locRff2 = new LOC();

            locRff2.Locationfunctioncodequalifier_01 = "9";
            locRff2.LOCATIONIDENTIFICATION_02        = new C517();
            locRff2.LOCATIONIDENTIFICATION_02.Locationnamecode_01           = "U0107";
            locRff2.LOCATIONIDENTIFICATION_02.Codelistidentificationcode_02 = "78";
            rffCniLoop1.LOC.Add(locRff2);

            //  Repeating GEI
            rffCniLoop1.GEI = new List <GEI>();

            var geiRff1 = new GEI();

            geiRff1.Processinginformationcodequalifier_01 = "7";
            geiRff1.PROCESSINGINDICATOR_02 = new C012();
            geiRff1.PROCESSINGINDICATOR_02.Processingindicatordescriptioncode_01 = "135";
            rffCniLoop1.GEI.Add(geiRff1);

            //  Repeating TDT RFF Groups
            rffCniLoop1.TDTLoop = new List <Loop_TDT_CUSCAR_2>();

            //  Begin TDT RFF Group
            var tdtRffLoop1 = new Loop_TDT_CUSCAR_2();

            tdtRffLoop1.TDT = new TDT();
            tdtRffLoop1.TDT.Transportstagecodequalifier_01 = "11";

            //  Repeating DTM
            tdtRffLoop1.DTM = new List <DTM>();

            var dtmRff1 = new DTM();

            dtmRff1.DATETIMEPERIOD_01 = new C507();
            dtmRff1.DATETIMEPERIOD_01.Dateortimeorperiodfunctioncodequalifier_01 = "133";
            dtmRff1.DATETIMEPERIOD_01.Dateortimeorperiodtext_02       = "20041230";
            dtmRff1.DATETIMEPERIOD_01.Dateortimeorperiodformatcode_03 = "102";
            tdtRffLoop1.DTM.Add(dtmRff1);

            //  Repeating RFF TDT Groups
            tdtRffLoop1.RFFLoop = new List <Loop_RFF_CUSCAR_3>();

            //  Begin RFF TDT Group
            var rffTdtLoop1 = new Loop_RFF_CUSCAR_3();

            rffTdtLoop1.RFF = new RFF();
            rffTdtLoop1.RFF.REFERENCE_01 = new C506();
            rffTdtLoop1.RFF.REFERENCE_01.Referencecodequalifier_01 = "AWM";

            //  Repeating TSR
            rffTdtLoop1.TSR = new List <TSR>();

            var tsrRff1 = new TSR();

            tsrRff1.CONTRACTANDCARRIAGECONDITION_01 = new C536();
            tsrRff1.CONTRACTANDCARRIAGECONDITION_01.Contractandcarriageconditioncode_01 = "9";
            rffTdtLoop1.TSR.Add(tsrRff1);

            //  End RFF TDTGroup
            tdtRffLoop1.RFFLoop.Add(rffTdtLoop1);

            //  End TDT RFF Group
            rffCniLoop1.TDTLoop.Add(tdtRffLoop1);

            //  Repeating NAD RFF Groups
            rffCniLoop1.NADLoop = new List <Loop_NAD_CUSCAR_2>();

            //  Begin NAD RFF Group 1
            var nadRffLoop1 = new Loop_NAD_CUSCAR_2();

            nadRffLoop1.NAD = new NAD();
            nadRffLoop1.NAD.Partyfunctioncodequalifier_01 = "CN";
            nadRffLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadRffLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyidentifier_01            = "65424";
            nadRffLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistidentificationcode_02 = "109";
            nadRffLoop1.NAD.NAMEANDADDRESS_03 = new C058();
            nadRffLoop1.NAD.NAMEANDADDRESS_03.Nameandaddressdescription_01 = "1234 MAIN STREET";
            nadRffLoop1.NAD.PARTYNAME_04 = new C080();
            nadRffLoop1.NAD.PARTYNAME_04.Partyname_01 = "KATHY SMITH";
            nadRffLoop1.NAD.Cityname_06 = "BELTSVILLE";
            nadRffLoop1.NAD.COUNTRYSUBENTITYDETAILS_07 = new C819();
            nadRffLoop1.NAD.COUNTRYSUBENTITYDETAILS_07.Countrysubentitynamecode_01   = "MD";
            nadRffLoop1.NAD.COUNTRYSUBENTITYDETAILS_07.Codelistidentificationcode_02 = "163";
            nadRffLoop1.NAD.Postalidentificationcode_08 = "20708";
            nadRffLoop1.NAD.Countrynamecode_09          = "US";

            //  Repeating CTA NAD Groups
            nadRffLoop1.CTALoop = new List <Loop_CTA_CUSCAR>();

            //  Begin CTA NAD Group
            var ctaNadLoop1 = new Loop_CTA_CUSCAR();

            ctaNadLoop1.CTA = new CTA();
            ctaNadLoop1.CTA.Contactfunctioncode_01 = "IC";

            //  Repeating COM
            ctaNadLoop1.COM = new List <COM>();

            var comCta1 = new COM();

            //  Repeating C076
            comCta1.COMMUNICATIONCONTACT_01 = new List <C076>();
            var c076Com1 = new C076();

            c076Com1.Communicationaddressidentifier_01    = "8005551212";
            c076Com1.Communicationaddresscodequalifier_02 = "TE";
            comCta1.COMMUNICATIONCONTACT_01.Add(c076Com1);
            ctaNadLoop1.COM.Add(comCta1);

            //  End CTA NAD Group
            nadRffLoop1.CTALoop.Add(ctaNadLoop1);

            //  End NAD RFF Group 1
            rffCniLoop1.NADLoop.Add(nadRffLoop1);

            //  Begin NAD RFF Group 2
            var nadRffLoop2 = new Loop_NAD_CUSCAR_2();

            nadRffLoop2.NAD = new NAD();
            nadRffLoop2.NAD.Partyfunctioncodequalifier_01 = "IM";
            nadRffLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadRffLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyidentifier_01            = "00010";
            nadRffLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistidentificationcode_02 = "109";
            nadRffLoop2.NAD.NAMEANDADDRESS_03 = new C058();
            nadRffLoop2.NAD.NAMEANDADDRESS_03.Nameandaddressdescription_01 = "1234 MAIN STREET";
            nadRffLoop2.NAD.PARTYNAME_04 = new C080();
            nadRffLoop2.NAD.PARTYNAME_04.Partyname_01 = "KATHY SMITH";
            nadRffLoop2.NAD.Cityname_06 = "BELTSVILLE";
            nadRffLoop2.NAD.COUNTRYSUBENTITYDETAILS_07 = new C819();
            nadRffLoop2.NAD.COUNTRYSUBENTITYDETAILS_07.Countrysubentitynamecode_01   = "MD";
            nadRffLoop2.NAD.COUNTRYSUBENTITYDETAILS_07.Codelistidentificationcode_02 = "163";
            nadRffLoop2.NAD.Postalidentificationcode_08 = "20708";
            nadRffLoop2.NAD.Countrynamecode_09          = "US";

            //  Repeating CTA NAD Groups
            nadRffLoop2.CTALoop = new List <Loop_CTA_CUSCAR>();

            //  Begin CTA NAD Group
            var ctaNadLoop2 = new Loop_CTA_CUSCAR();

            ctaNadLoop2.CTA = new CTA();
            ctaNadLoop2.CTA.Contactfunctioncode_01 = "IC";

            //  Repeating COM
            ctaNadLoop2.COM = new List <COM>();

            var comCta2 = new COM();

            //  Repeating C076
            comCta2.COMMUNICATIONCONTACT_01 = new List <C076>();
            var c076Com2 = new C076();

            c076Com2.Communicationaddressidentifier_01    = "8005551212";
            c076Com2.Communicationaddresscodequalifier_02 = "TE";
            comCta2.COMMUNICATIONCONTACT_01.Add(c076Com2);
            ctaNadLoop2.COM.Add(comCta2);

            //  End CTA NAD Group
            nadRffLoop2.CTALoop.Add(ctaNadLoop2);

            //  End NAD RFF Group 2
            rffCniLoop1.NADLoop.Add(nadRffLoop2);

            //  Begin NAD RFF Group 3
            var nadRffLoop3 = new Loop_NAD_CUSCAR_2();

            nadRffLoop3.NAD = new NAD();
            nadRffLoop3.NAD.Partyfunctioncodequalifier_01 = "OS";
            nadRffLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadRffLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyidentifier_01            = "27190";
            nadRffLoop3.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistidentificationcode_02 = "109";
            nadRffLoop3.NAD.NAMEANDADDRESS_03 = new C058();
            nadRffLoop3.NAD.NAMEANDADDRESS_03.Nameandaddressdescription_01 = "1234 MAIN STREET";
            nadRffLoop3.NAD.PARTYNAME_04 = new C080();
            nadRffLoop3.NAD.PARTYNAME_04.Partyname_01 = "KATHY SMITH";
            nadRffLoop3.NAD.Cityname_06 = "BELTSVILLE";
            nadRffLoop3.NAD.COUNTRYSUBENTITYDETAILS_07 = new C819();
            nadRffLoop3.NAD.COUNTRYSUBENTITYDETAILS_07.Countrysubentitynamecode_01   = "MD";
            nadRffLoop3.NAD.COUNTRYSUBENTITYDETAILS_07.Codelistidentificationcode_02 = "163";
            nadRffLoop3.NAD.Postalidentificationcode_08 = "20708";
            nadRffLoop3.NAD.Countrynamecode_09          = "US";

            //  Repeating CTA NAD Groups
            nadRffLoop3.CTALoop = new List <Loop_CTA_CUSCAR>();

            //  Begin CTA NAD Group
            var ctaNadLoop3 = new Loop_CTA_CUSCAR();

            ctaNadLoop3.CTA = new CTA();
            ctaNadLoop3.CTA.Contactfunctioncode_01 = "IC";

            //  Repeating COM
            ctaNadLoop3.COM = new List <COM>();

            var comCta3 = new COM();

            //  Repeating C076
            comCta3.COMMUNICATIONCONTACT_01 = new List <C076>();
            var c076Com3 = new C076();

            c076Com3.Communicationaddressidentifier_01    = "8005551212";
            c076Com3.Communicationaddresscodequalifier_02 = "TE";
            comCta3.COMMUNICATIONCONTACT_01.Add(c076Com2);
            ctaNadLoop3.COM.Add(comCta3);

            //  End CTA NAD Group
            nadRffLoop3.CTALoop.Add(ctaNadLoop3);

            //  End NAD RFF Group 3
            rffCniLoop1.NADLoop.Add(nadRffLoop3);

            //  Repeating GID RFF Groups
            rffCniLoop1.GIDLoop = new List <Loop_GID_CUSCAR>();

            //  Begin GID RFF Group
            var gidRffLoop1 = new Loop_GID_CUSCAR();

            gidRffLoop1.GID = new GID();
            gidRffLoop1.GID.Goodsitemnumber_01 = "1";

            //  Repeating PAC
            gidRffLoop1.PAC = new List <PAC>();

            var pacGid1 = new PAC();

            pacGid1.Packagequantity_01 = "158";
            pacGid1.PACKAGETYPE_03     = new C202();
            pacGid1.PACKAGETYPE_03.Packagetypedescriptioncode_01 = "COL";
            gidRffLoop1.PAC.Add(pacGid1);

            //  Repeating FTX
            gidRffLoop1.FTX = new List <FTX>();

            var ftxGid1 = new FTX();

            ftxGid1.Textsubjectcodequalifier_01 = "AAA";
            ftxGid1.TEXTLITERAL_04             = new C108();
            ftxGid1.TEXTLITERAL_04.Freetext_01 = "IRON COIL";
            ftxGid1.TEXTLITERAL_04.Freetext_02 = "SHEET METAL";
            gidRffLoop1.FTX.Add(ftxGid1);

            //  Repeating MEA
            gidRffLoop1.MEA = new List <MEA>();

            var meaGid1 = new MEA();

            meaGid1.Measurementpurposecodequalifier_01 = "AAI";
            meaGid1.VALUERANGE_03 = new C174();
            meaGid1.VALUERANGE_03.Measurementunitcode_01 = "K";
            meaGid1.VALUERANGE_03.Measure_02             = "750";
            gidRffLoop1.MEA.Add(meaGid1);

            //  Repeating SGP
            gidRffLoop1.SGP = new List <SGP>();

            var sgpGid1 = new SGP();

            sgpGid1.EQUIPMENTIDENTIFICATION_01 = new C237();
            sgpGid1.EQUIPMENTIDENTIFICATION_01.Equipmentidentifier_01        = "10000325";
            sgpGid1.EQUIPMENTIDENTIFICATION_01.Codelistidentificationcode_02 = "109";
            gidRffLoop1.SGP.Add(sgpGid1);

            //  End GID RFF Group
            rffCniLoop1.GIDLoop.Add(gidRffLoop1);

            //  End RFF CNI Group
            cniLoop1.RFFLoop.Add(rffCniLoop1);

            //  End CNI Group
            result.CNILoop.Add(cniLoop1);

            return(result);
        }
        /// <summary>
        /// Build purchase order.
        /// Original from https://www.gs1.org/standards/edi-xml-gs1-eancom/eancom-orders-s4/syntax-4
        /// </summary>
        public static TSORDERS BuildPurchaseOrder(string controlNumber)
        {
            var result = new TSORDERS();

            //  Message header
            result.UNH = new UNH();
            result.UNH.MessageReferenceNumber_01                      = controlNumber.PadLeft(14, '0');
            result.UNH.MessageIdentifier_02                           = new S009();
            result.UNH.MessageIdentifier_02.MessageType_01            = "ORDERS";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "96A";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

            //  Order number 128576
            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentmessagenamecoded_01 = "220";
            result.BGM.Documentmessagenumber_02 = "128576";
            result.BGM.Messagefunctioncoded_03  = "9";

            //  Repeating DTM
            result.DTM = new List <DTM>();

            //  Message date 30th of August 2002
            var dtm = new DTM();

            dtm.DATETIMEPERIOD_01 = new C507();
            dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "137";
            dtm.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020830";
            dtm.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            result.DTM.Add(dtm);

            //  Instruction to pay in Bank Account
            result.PAI = new PAI();
            result.PAI.PAYMENTINSTRUCTIONDETAILS_01 = new C534();
            result.PAI.PAYMENTINSTRUCTIONDETAILS_01.Paymentmeanscoded_03 = "42";

            //  Repeating FTX
            result.FTX = new List <FTX>();

            //  Free text mutually defined
            var ftx = new FTX();

            ftx.Textsubjectqualifier_01           = "ZZZ";
            ftx.Textfunctioncoded_02              = "1";
            ftx.TEXTREFERENCE_03                  = new C107();
            ftx.TEXTREFERENCE_03.Freetextcoded_01 = "001";
            ftx.TEXTREFERENCE_03.Codelistresponsibleagencycoded_03 = "91";
            result.FTX.Add(ftx);

            //  Repeating RFF Groups
            result.RFFLoop = new List <Loop_RFF_ORDERS>();

            //  Begin RFF Group
            var rffLoop = new Loop_RFF_ORDERS();

            //  Order is based on contract number 652744
            rffLoop.RFF = new RFF();
            rffLoop.RFF.REFERENCE_01 = new C506();
            rffLoop.RFF.REFERENCE_01.Referencequalifier_01 = "CT";
            rffLoop.RFF.REFERENCE_01.Referencenumber_02    = "652744";

            //  Repeating DTM
            rffLoop.DTM = new List <DTM>();

            //  Date of contract 25th of August 2002
            var rffDtm1 = new DTM();

            rffDtm1.DATETIMEPERIOD_01 = new C507();
            rffDtm1.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "171";
            rffDtm1.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020825";
            rffDtm1.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            rffLoop.DTM.Add(rffDtm1);

            //  End RFF Group
            result.RFFLoop.Add(rffLoop);

            //  Repeating NAD Groups
            result.NADLoop = new List <Loop_NAD_ORDERS>();

            //  Begin NAD Group 1
            var nadLoop1 = new Loop_NAD_ORDERS();

            //  Buyer is identified by GLN 5412345000013
            nadLoop1.NAD = new NAD();
            nadLoop1.NAD.Partyqualifier_01             = "BY";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5412345000013";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  Repeating RFF Groups
            nadLoop1.RFFLoop = new List <Loop_RFF_ORDERS>();

            //  Begin RFF Group
            var rffLoopNad = new Loop_RFF_ORDERS();

            //  Buyer’s VAT number is 87765432
            rffLoopNad.RFF = new RFF();
            rffLoopNad.RFF.REFERENCE_01 = new C506();
            rffLoopNad.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffLoopNad.RFF.REFERENCE_01.Referencenumber_02    = "87765432";

            //  End RFF Group
            nadLoop1.RFFLoop.Add(rffLoopNad);

            //  Repeating CTA Groups
            nadLoop1.CTALoop = new List <Loop_CTA_ORDERS>();

            //  Begin CTA Group
            var ctaLoop = new Loop_CTA_ORDERS();

            //  Order contact is PForget
            ctaLoop.CTA = new CTA();
            ctaLoop.CTA.Contactfunctioncoded_01        = "OC";
            ctaLoop.CTA.DEPARTMENTOREMPLOYEEDETAILS_02 = new C056();
            ctaLoop.CTA.DEPARTMENTOREMPLOYEEDETAILS_02.Departmentoremployee_02 = "P FORGET";

            //  Repeating COM
            ctaLoop.COM = new List <COM>();

            //  Telephone number of order contact
            var com = new COM();

            com.COMMUNICATIONCONTACT_01 = new C076();
            com.COMMUNICATIONCONTACT_01.Communicationnumber_01           = "0044715632478";
            com.COMMUNICATIONCONTACT_01.Communicationchannelqualifier_02 = "TE";
            ctaLoop.COM.Add(com);

            //  End CTA Group
            nadLoop1.CTALoop.Add(ctaLoop);

            //  End NAD Group 1
            result.NADLoop.Add(nadLoop1);

            //  Begin NAD Group 2
            var nadLoop2 = new Loop_NAD_ORDERS();

            //  Supplier is identified by GLN 4012345500004
            nadLoop2.NAD = new NAD();
            nadLoop2.NAD.Partyqualifier_01             = "SU";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "4012345500004";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  Repeating RFF Groups
            nadLoop2.RFFLoop = new List <Loop_RFF_ORDERS>();

            //  Begin RFF Group
            var rffLoopNad2 = new Loop_RFF_ORDERS();

            //  Supplier’s VAT number is 56225432
            rffLoopNad2.RFF = new RFF();
            rffLoopNad2.RFF.REFERENCE_01 = new C506();
            rffLoopNad2.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffLoopNad2.RFF.REFERENCE_01.Referencenumber_02    = "56225432";

            //  End RFF Group
            nadLoop2.RFFLoop.Add(rffLoopNad2);

            //  End NAD Group 2
            result.NADLoop.Add(nadLoop2);

            //  Repeating CUX Groups
            result.CUXLoop = new List <Loop_CUX_ORDERS>();

            //  Begin CUX Group
            var cuxLoop = new Loop_CUX_ORDERS();

            //  Ordering currency is Pounds Sterling with the invoicing currency identified as Euros
            //  The exchange rate between them is 1 Pound Sterling equals 1.67 Euros
            cuxLoop.CUX = new CUX();
            cuxLoop.CUX.CURRENCYDETAILS_01 = new C504();
            cuxLoop.CUX.CURRENCYDETAILS_01.Currencydetailsqualifier_01 = "2";
            cuxLoop.CUX.CURRENCYDETAILS_01.Currencycoded_02            = "GBP";
            cuxLoop.CUX.CURRENCYDETAILS_01.Currencyqualifier_03        = "9";
            cuxLoop.CUX.CURRENCYDETAILS_02 = new C504();
            cuxLoop.CUX.CURRENCYDETAILS_02.Currencydetailsqualifier_01 = "3";
            cuxLoop.CUX.CURRENCYDETAILS_02.Currencycoded_02            = "EUR";
            cuxLoop.CUX.CURRENCYDETAILS_02.Currencyqualifier_03        = "4";
            cuxLoop.CUX.Rateofexchange_03 = "1.67";

            //  Repeating DTM
            cuxLoop.DTM = new List <DTM>();

            //  Period on which rate of exchange date is based is the
            //  1st of August 2002 - 31st of August 2002
            var dtmCux = new DTM();

            dtmCux.DATETIMEPERIOD_01 = new C507();
            dtmCux.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "134";
            dtmCux.DATETIMEPERIOD_01.Datetimeperiod_02                = "2002080120020831";
            dtmCux.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "718";
            cuxLoop.DTM.Add(dtmCux);

            //  End CUX Group
            result.CUXLoop.Add(cuxLoop);

            //  Repeating TDT Groups
            result.TDTLoop = new List <Loop_TDT_ORDERS>();

            //  Begin TDT Group
            var tdtLoop = new Loop_TDT_ORDERS();

            //  Order requests that the main carriage transport used to deliver the goods is a truck
            tdtLoop.TDT = new TDT();
            tdtLoop.TDT.Transportstagequalifier_01 = "20";
            tdtLoop.TDT.MODEOFTRANSPORT_03         = new C220();
            tdtLoop.TDT.MODEOFTRANSPORT_03.Modeoftransportcoded_01 = "30";
            tdtLoop.TDT.TRANSPORTMEANS_04 = new C228();
            tdtLoop.TDT.TRANSPORTMEANS_04.Typeofmeansoftransportidentification_01 = "31";

            //  End TDT Group
            result.TDTLoop.Add(tdtLoop);

            //  Repeating TOD Groups
            result.TODLoop = new List <Loop_TOD_ORDERS>();

            //  Begin TOD Group
            var todLoop = new Loop_TOD_ORDERS();

            //  Terms of delivery are to be Cost, Insurance and Freight
            todLoop.TOD = new TOD();
            todLoop.TOD.Termsofdeliveryortransportfunctioncoded_01 = "3";
            todLoop.TOD.TERMSOFDELIVERYORTRANSPORT_03 = new C100();
            todLoop.TOD.TERMSOFDELIVERYORTRANSPORT_03.Termsofdeliveryortransportcoded_01 = "CIF";
            todLoop.TOD.TERMSOFDELIVERYORTRANSPORT_03.Codelistqualifier_02 = "23";
            todLoop.TOD.TERMSOFDELIVERYORTRANSPORT_03.Codelistresponsibleagencycoded_03 = "9";

            //  Repeating LOC Group
            todLoop.LOC = new List <LOC>();

            //  The named port is Brussels
            var loc = new LOC();

            loc.Placelocationqualifier_01 = "1";
            loc.LOCATIONIDENTIFICATION_02 = new C517();
            loc.LOCATIONIDENTIFICATION_02.Placelocationidentification_01 = "BE-BRU";
            todLoop.LOC.Add(loc);

            //  End TOD Group
            result.TODLoop.Add(todLoop);

            //  Repeating LIN Groups
            result.LINLoop = new List <Loop_LIN_ORDERS>();

            //  Begin LIN Group 1
            var linLoop1 = new Loop_LIN_ORDERS();

            //  First product order is identified by GTIN 4000862141404
            linLoop1.LIN = new LIN();
            linLoop1.LIN.Lineitemnumber_01           = "1";
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03 = new C212();
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "4000862141404";
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRS";

            //  Repeating PIA
            linLoop1.PIA = new List <PIA>();

            //  In addition the buyer’s part number ABC1234 is provided
            var pia = new PIA();

            pia.Productidfunctionqualifier_01                      = "1";
            pia.ITEMNUMBERIDENTIFICATION_02                        = new C212();
            pia.ITEMNUMBERIDENTIFICATION_02.Itemnumber_01          = "ABC1234";
            pia.ITEMNUMBERIDENTIFICATION_02.Itemnumbertypecoded_02 = "IN";
            linLoop1.PIA.Add(pia);

            //  Repeating IMD
            linLoop1.IMD = new List <IMD>();

            //  The ordered item is a traded unit
            var imd = new IMD();

            imd.Itemdescriptiontypecoded_01 = "C";
            imd.ITEMDESCRIPTION_03          = new C273();
            imd.ITEMDESCRIPTION_03.Itemdescriptionidentification_01  = "TU";
            imd.ITEMDESCRIPTION_03.Codelistresponsibleagencycoded_03 = "9";
            linLoop1.IMD.Add(imd);

            //  Repeating QTY
            linLoop1.QTY = new List <QTY>();

            //  Ordered quantity is 48 units
            var qty = new QTY();

            qty.QUANTITYDETAILS_01 = new C186();
            qty.QUANTITYDETAILS_01.Quantityqualifier_01 = "21";
            qty.QUANTITYDETAILS_01.Quantity_02          = "48";
            linLoop1.QTY.Add(qty);

            //  Repeating MOA
            linLoop1.MOA = new List <MOA>();

            //  Value of order line is 699.84 Pounds Sterling
            var moa = new MOA();

            moa.MONETARYAMOUNT_01 = new C516();
            moa.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "203";
            moa.MONETARYAMOUNT_01.Monetaryamount_02 = "699.84";
            linLoop1.MOA.Add(moa);

            //  Repeating PRI Groups
            linLoop1.PRILoop = new List <Loop_PRI_ORDERS>();

            //  Begin PRI Group
            var priLoop = new Loop_PRI_ORDERS();

            //  Fixed net calculation price is 14.58 Pounds Sterling
            priLoop.PRI = new PRI();
            priLoop.PRI.PRICEINFORMATION_01 = new C509();
            priLoop.PRI.PRICEINFORMATION_01.Pricequalifier_01       = "AAA";
            priLoop.PRI.PRICEINFORMATION_01.Price_02                = "14.58";
            priLoop.PRI.PRICEINFORMATION_01.Pricetypecoded_03       = "CT";
            priLoop.PRI.PRICEINFORMATION_01.Pricetypequalifier_04   = "AAE";
            priLoop.PRI.PRICEINFORMATION_01.Unitpricebasis_05       = "1";
            priLoop.PRI.PRICEINFORMATION_01.Measureunitqualifier_06 = "KGM";

            //  End PRI Group
            linLoop1.PRILoop.Add(priLoop);

            //  Repeating RFF Groups
            linLoop1.RFFLoop = new List <Loop_RFF_ORDERS>();

            //  Begin RFF Group
            var rffLoopLin = new Loop_RFF_ORDERS();

            //  Price is taken from the price list AUG93RNG04
            rffLoopLin.RFF = new RFF();
            rffLoopLin.RFF.REFERENCE_01 = new C506();
            rffLoopLin.RFF.REFERENCE_01.Referencequalifier_01 = "PL";
            rffLoopLin.RFF.REFERENCE_01.Referencenumber_02    = "AUG93RNG04";

            //  Repeating DTM
            rffLoopLin.DTM = new List <DTM>();

            //  Price list date 1st of August 2002
            var dtmRff = new DTM();

            dtmRff.DATETIMEPERIOD_01 = new C507();
            dtmRff.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "171";
            dtmRff.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020801";
            dtmRff.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            rffLoopLin.DTM.Add(dtmRff);

            //  End RFF Group
            linLoop1.RFFLoop.Add(rffLoopLin);

            //  Repeating PAC Groups
            linLoop1.PACLoop = new List <Loop_PAC_ORDERS_2>();

            //  Begin PAC Group
            var pacLoop = new Loop_PAC_ORDERS_2();

            //  Two packages (cases) barcoded with ITF14
            pacLoop.PAC = new PAC();
            pacLoop.PAC.Numberofpackages_01 = "2";
            pacLoop.PAC.PACKAGINGDETAILS_02 = new C531();
            pacLoop.PAC.PACKAGINGDETAILS_02.Packagingrelatedinformationcoded_02 = "51";
            pacLoop.PAC.PACKAGETYPE_03 = new C202();
            pacLoop.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01 = "CS";

            //  Repeating PCI Groups
            pacLoop.PCILoop = new List <Loop_PCI_ORDERS>();

            //  Begin PCI Group
            var pciLoop = new Loop_PCI_ORDERS();

            //  The expiry date of the product is to be marked on it's packaging
            pciLoop.PCI = new PCI();
            pciLoop.PCI.Markinginstructionscoded_01 = "14";

            //  End PCI Group
            pacLoop.PCILoop.Add(pciLoop);

            //  End PAC Group
            linLoop1.PACLoop.Add(pacLoop);

            //  Repeating LOC Groups
            linLoop1.LOCLoop = new List <Loop_LOC_ORDERS_2>();

            //  Begin LOC Group 1
            var locLoop1 = new Loop_LOC_ORDERS_2();

            //  The second place to which the product is to be delivered is identified by GLN 3312345502000
            locLoop1.LOC = new LOC();
            locLoop1.LOC.Placelocationqualifier_01 = "7";
            locLoop1.LOC.LOCATIONIDENTIFICATION_02 = new C517();
            locLoop1.LOC.LOCATIONIDENTIFICATION_02.Placelocationidentification_01    = "3312345502000";
            locLoop1.LOC.LOCATIONIDENTIFICATION_02.Codelistresponsibleagencycoded_03 = "9";

            //  The quantity to be delivered at this location is 24
            locLoop1.QTY = new QTY();
            locLoop1.QTY.QUANTITYDETAILS_01 = new C186();
            locLoop1.QTY.QUANTITYDETAILS_01.Quantityqualifier_01 = "11";
            locLoop1.QTY.QUANTITYDETAILS_01.Quantity_02          = "24";

            //  Repeating DTM
            locLoop1.DTM = new List <DTM>();

            //  The quantity should be delivered on the 15th of September 2002
            var dtmLoc = new DTM();

            dtmLoc.DATETIMEPERIOD_01 = new C507();
            dtmLoc.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "2";
            dtmLoc.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020915";
            dtmLoc.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            locLoop1.DTM.Add(dtmLoc);

            //  End LOC Group 1
            linLoop1.LOCLoop.Add(locLoop1);

            //  Begin LOC Group 2
            var locLoop2 = new Loop_LOC_ORDERS_2();

            //  The first place to which the product is to be delivered is identified by GLN 3312345501003
            locLoop2.LOC = new LOC();
            locLoop2.LOC.Placelocationqualifier_01 = "7";
            locLoop2.LOC.LOCATIONIDENTIFICATION_02 = new C517();
            locLoop2.LOC.LOCATIONIDENTIFICATION_02.Placelocationidentification_01    = "3312345501003";
            locLoop2.LOC.LOCATIONIDENTIFICATION_02.Codelistresponsibleagencycoded_03 = "9";

            //  The quantity to be delivered at this location is 24
            locLoop2.QTY = new QTY();
            locLoop2.QTY.QUANTITYDETAILS_01 = new C186();
            locLoop2.QTY.QUANTITYDETAILS_01.Quantityqualifier_01 = "11";
            locLoop2.QTY.QUANTITYDETAILS_01.Quantity_02          = "24";

            //  Repeating DTM
            locLoop2.DTM = new List <DTM>();

            //  The quantity should be delivered on the 13th of September 2002
            var dtmLoc2 = new DTM();

            dtmLoc2.DATETIMEPERIOD_01 = new C507();
            dtmLoc2.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "2";
            dtmLoc2.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020913";
            dtmLoc2.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            locLoop2.DTM.Add(dtmLoc2);

            //  End LOC Group 2
            linLoop1.LOCLoop.Add(locLoop2);

            //  Repeating TAX Groups
            linLoop1.TAXLoop = new List <Loop_TAX_ORDERS>();

            //  Begin TAX Group
            var taxLoop = new Loop_TAX_ORDERS();

            //  The product is subject to the standard VAT rate of 17.5%
            taxLoop.TAX = new TAX();
            taxLoop.TAX.Dutytaxfeefunctionqualifier_01 = "7";
            taxLoop.TAX.DUTYTAXFEETYPE_02 = new C241();
            taxLoop.TAX.DUTYTAXFEETYPE_02.Dutytaxfeetypecoded_01 = "VAT";
            taxLoop.TAX.DUTYTAXFEEDETAIL_05 = new C243();
            taxLoop.TAX.DUTYTAXFEEDETAIL_05.Dutytaxfeerate_04 = "17.5";
            taxLoop.TAX.Dutytaxfeecategorycoded_06            = "S";

            //  End TAX Group
            linLoop1.TAXLoop.Add(taxLoop);

            //  End LIN Group 1
            result.LINLoop.Add(linLoop1);

            //  Message detail/summary separator
            result.UNS = new UNS();
            result.UNS.Sectionidentification_01 = "S";

            //  Repeating CNT
            result.CNT = new List <CNT>();

            //  Count of the number of LIN segments in the message
            var cnt = new CNT();

            cnt.CONTROL_01 = new C270();
            cnt.CONTROL_01.Controlqualifier_01 = "2";
            cnt.CONTROL_01.Controlvalue_02     = "1";
            result.CNT.Add(cnt);

            return(result);
        }
示例#14
0
        private void DisplayCharts()
        {
            cnvDisplay.Children.Clear();
            int          width        = 0;
            PathGeometry pathGeometry = new PathGeometry();

            pathGeometry.FillRule = FillRule.Nonzero;
            PathFigure figure = new PathFigure();

            figure.StartPoint = new Point(0, 200);
            figure.IsClosed   = false;


            DateTime dt       = vm.DateStart;
            int      lastFuel = 0;

            for (int d = 0; d < days; d++)
            {
                DTM model = _dtm.Where(p => p.DT >= dt && p.DT < dt + TimeSpan.FromDays(1)).FirstOrDefault();
                if (model != null)
                {
                    int DayWidth = 0;
                    //Если есть какие то данные за эти сутки
                    for (int h = 0; h < 24; h++)
                    {
                        model = _dtm.Where(p => p.DT >= dt && p.DT < dt + TimeSpan.FromHours(1)).FirstOrDefault();
                        if (model != null)
                        {
                            int hourWidth = 0;
                            for (int m = 0; m < 60; m++)
                            {
                                model = _dtm.Where(p => p.DT >= dt && p.DT < dt + TimeSpan.FromMinutes(1)).FirstOrDefault();
                                if (model != null)
                                {
                                    lastFuel         = 200 - model.Vol * 2;
                                    model.WidthPoint = new Point(width + DayWidth + hourWidth, lastFuel);
                                }
                                else
                                {
                                }
                                hourWidth += 1;
                                LineSegment ls = new LineSegment();
                                ls.Point = new Point(width + DayWidth + hourWidth, lastFuel);
                                figure.Segments.Add(ls);
                                dt += TimeSpan.FromMinutes(1);
                            }

                            //create timeline
                            Border b = new Border();
                            b.Background = new SolidColorBrush(Colors.Gray);
                            b.Width      = 1;
                            b.Height     = 200;
                            cnvDisplay.Children.Add(b);
                            Canvas.SetLeft(b, width + DayWidth);

                            TextBlock text = new TextBlock();
                            if (h < 10)
                            {
                                text.Text = "0" + h.ToString() + ":00";
                            }
                            else
                            {
                                text.Text = h.ToString() + ":00";
                            }
                            text.TextAlignment = TextAlignment.Center;
                            text.Width         = hourWidth;
                            cnvDisplay.Children.Add(text);
                            Canvas.SetLeft(text, width + DayWidth);
                            Canvas.SetTop(text, 210);

                            DayWidth += hourWidth;

                            Border b1 = new Border();
                            b1.Background = new SolidColorBrush(Colors.Gray);
                            b1.Width      = 1;
                            b1.Height     = 200;
                            cnvDisplay.Children.Add(b1);
                            Canvas.SetLeft(b1, width + DayWidth);
                        }
                        else
                        {
                            TextBlock text = new TextBlock();
                            if (h < 10)
                            {
                                text.Text = "0" + h.ToString();
                            }
                            else
                            {
                                text.Text = h.ToString();
                            }
                            text.Width = 25;
                            cnvDisplay.Children.Add(text);
                            Canvas.SetLeft(text, width + DayWidth);
                            Canvas.SetTop(text, 210);
                            DayWidth += 25;
                            dt       += TimeSpan.FromHours(1);

                            LineSegment ls = new LineSegment();
                            ls.Point = new Point(width + DayWidth, lastFuel);
                            figure.Segments.Add(ls);
                        }
                    }
                    width = DecorateDay(width, dt - TimeSpan.FromDays(1), DayWidth);
                    //width+=DayWidth;
                }
                else
                {
                    //нет данных по дню, рисуем пустой прочерк
                    width = DecorateDay(width, dt, 50);
                    dt   += TimeSpan.FromDays(1);

                    LineSegment ls = new LineSegment();
                    ls.Point = new Point(width, lastFuel);
                    figure.Segments.Add(ls);
                }
            }

            pathGeometry.Figures.Add(figure);

            Path pth = new Path();

            pth.Stroke          = new SolidColorBrush(Colors.Blue);
            pth.StrokeThickness = 2;
            pth.Data            = pathGeometry;
            cnvDisplay.Children.Add(pth);
            cnvDisplay.Width = width;

            Border brdrH1 = new Border
            {
                Height     = 1,
                Width      = width,
                Background = new SolidColorBrush(Colors.Gray)
            };
            Border brdrH2 = new Border
            {
                Height     = 1,
                Width      = width,
                Background = new SolidColorBrush(Colors.Gray)
            };
            Border brdrH3 = new Border
            {
                Height     = 1,
                Width      = width,
                Background = new SolidColorBrush(Colors.Gray)
            };
            Border brdrH4 = new Border
            {
                Height     = 1,
                Width      = width,
                Background = new SolidColorBrush(Colors.Gray)
            };
            Border brdrH5 = new Border
            {
                Height     = 1,
                Width      = width,
                Background = new SolidColorBrush(Colors.Gray)
            };

            cnvDisplay.Children.Add(brdrH1);
            cnvDisplay.Children.Add(brdrH2);
            cnvDisplay.Children.Add(brdrH3);
            cnvDisplay.Children.Add(brdrH4);
            cnvDisplay.Children.Add(brdrH5);

            Canvas.SetTop(brdrH2, 50);
            Canvas.SetTop(brdrH3, 100);
            Canvas.SetTop(brdrH4, 150);
            Canvas.SetTop(brdrH5, 200);

            //double step = stkFuel.ActualHeight / 100.0f;
            //int lastVol = 0;
            //for (int d = 0; d < days; d++)
            //{
            //    for (int h = 0; h < 24; h++)
            //    {
            //        for (int m = 0; m < 60; m++)
            //        {
            //            Border b = new Border
            //            {
            //                Width = 1,
            //                VerticalAlignment = System.Windows.VerticalAlignment.Bottom
            //            };
            //            DTM model = _dtm.Where(p => p.DT >= dt && p.DT < dt + TimeSpan.FromMinutes(1)).FirstOrDefault();
            //            if (model != null)
            //            {
            //                lastVol = (int)(step * (double)model.Vol);
            //                b.Height = lastVol;
            //                if (b.Height < 1)
            //                    b.Height = lastVol = 1;
            //                b.Background = new SolidColorBrush(Colors.Blue);
            //            }
            //            else
            //            {
            //                b.Height = lastVol;
            //                b.Background = new SolidColorBrush(Colors.LightGray);
            //            }
            //            stkFuel.Children.Add(b);
            //            dt += TimeSpan.FromMinutes(1);

            //        }
            //    }
            //}
        }
示例#15
0
        /// <summary>
        /// Parse the message from EDI_Message and insert into entities.
        /// </summary>
        /// <param name="msg_type">Hard coded as "315"</param>
        /// <param name="msg_body">Message body that needs to be parsed</param>
        /// <param name="msg_idnum"></param>
        /// <returns></returns>
        public bool ParseMessage(string msg_type, string msg_body, int msg_idnum)
        {
            bool result = false;

            #region Initialize Variables
            string   msgType          = msg_type;
            string   msgBody          = msg_body;
            int      msgIdnum         = msg_idnum;
            string[] msgArr           = null;
            string[] currentRowTemp   = null;
            string[] currentRow       = new string[30];
            string   header           = "";
            string   logMsg           = "";
            int      convertToInt     = 0;
            decimal  convertToDecimal = 0;

            EDI_Messages messages  = new EDI_Messages();
            Container    container = new Container();
            #endregion

            msgBody = Regex.Replace(msg_body, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
            msgArr  = msgBody.Split(new[] { Environment.NewLine }, StringSplitOptions.None);

            foreach (string row in msgArr)
            {
                string msg;
                // Clear array before insert new row into array
                if (currentRowTemp != null)
                {
                    Array.Clear(currentRowTemp, 0, currentRowTemp.Length);
                }
                if (currentRow != null)
                {
                    Array.Clear(currentRow, 0, currentRow.Length);
                }

                // Insert data into dynamically allocated memory array, and
                // copy to statically allocated memory array.
                msg            = row.Trim();
                currentRowTemp = msg.Split(new[] { "*" }, StringSplitOptions.None);
                Array.Copy(currentRowTemp, 0, currentRow, 0, currentRowTemp.Length);

                // Begin to parse engine.
                header = "";

                // Check whether the message header is valid or not.
                if (EDI315_headers.Any(x => x.ToUpper() == currentRow[0]))
                {
                    header = currentRow[0];
                }
                else
                {
                    logMsg = util.buildLogMsg("ParseMessage", "Invalid format message.");
                    util.insertLog_text(logMsg);
                    result = false;
                    break;
                }

                //Add parsed message into entity lists.

                if (row != null && row.Length > 0)
                {
                    convertToInt     = 0;
                    convertToDecimal = 0;
                    switch (header)
                    {
                    case "ISA": break;

                    case "GS": break;

                    case "ST":
                        #region ST
                        if (currentRow[1] == "315")
                        {
                            b4      = new B4();
                            q2      = new Q2();
                            n9_list = new List <N9>();
                            r4_list = new List <R4>();
                        }
                        else
                        {
                            logMsg = util.buildLogMsg("ParseMessage", "ST: Invalid Transaction Set Identifier Code (ST01/143).");
                            util.insertLog_text(logMsg);
                        }
                        #endregion
                        break;

                    case "B4":
                        #region
                        b4.special_handling_code = currentRow[1];
                        Int32.TryParse(currentRow[2], out convertToInt);
                        b4.inquiry_request_number = convertToInt;
                        b4.shipment_status_code   = currentRow[3];
                        b4.date                         = currentRow[4];
                        b4.status_time                  = currentRow[5];
                        b4.status_location              = currentRow[6];
                        b4.equipment_initial            = currentRow[7];
                        b4.equipment_number             = currentRow[8];
                        b4.equipment_status_code        = currentRow[9];
                        b4.equipment_type               = currentRow[10];
                        b4.location_identifier          = currentRow[11];
                        b4.location_qualifier           = currentRow[12];
                        b4.equipment_number_check_digit = currentRow[13];
                        #endregion
                        break;

                    case "N9":
                        #region N9
                        N9 n9 = new N9();

                        n9.reference_identification_qualifier = currentRow[1];
                        n9.reference_identification           = currentRow[2];
                        n9.free_form_description = currentRow[3];
                        n9.date      = currentRow[4];
                        n9.time      = currentRow[5];
                        n9.time_code = currentRow[6];

                        n9_list.Add(n9);
                        #endregion
                        break;

                    case "Q2":
                        #region Q2
                        q2.vessel_code              = currentRow[1];
                        q2.country_code             = currentRow[2];
                        q2.date                     = currentRow[3];
                        q2.scheduled_sailing_date   = currentRow[4];
                        q2.scheduled_discharge_date = currentRow[5];
                        Int32.TryParse(currentRow[6], out convertToInt);
                        q2.landing_quantity = convertToInt;
                        Decimal.TryParse(currentRow[7], out convertToDecimal);
                        q2.weight           = convertToDecimal;
                        q2.weight_qualifier = currentRow[8];
                        q2.voyage_number    = currentRow[9];
                        q2.reference_identification_qualifier = currentRow[10];
                        q2.reference_identification           = currentRow[11];
                        q2.vessel_code_qualifier = currentRow[12];
                        q2.vessel_name           = currentRow[13];
                        Decimal.TryParse(currentRow[7], out convertToDecimal);
                        q2.volume = convertToDecimal;
                        q2.volume_unit_qualifier = currentRow[15];
                        q2.weight_unit_code      = currentRow[16];
                        #endregion
                        break;

                    case "R4":
                        #region R4
                        R4 r4 = new R4();
                        r4.port_terminal_function_code = currentRow[1];
                        r4.location_qualifier          = currentRow[2];
                        r4.location_identifier         = currentRow[3];
                        r4.port_name           = currentRow[4];
                        r4.country_code        = currentRow[5];
                        r4.state_province_code = currentRow[6];
                        r4.dtm = new DTM();
                        r4_list.Add(r4);
                        #endregion
                        break;

                    case "DTM":
                        #region DTM
                        DTM dtm = r4_list.Last().dtm;
                        Int32.TryParse(currentRow[1], out convertToInt);
                        dtm.date_time_qualifier = convertToInt;
                        dtm.date      = currentRow[2];
                        dtm.time      = currentRow[3];
                        dtm.time_code = currentRow[4];
                        #endregion
                        break;

                    case "SE":
                        #region SE
                        UpdateDB(msg_idnum);
                        #endregion
                        break;

                    case "GE": break;

                    case "IEA": break;

                    default:
                        logMsg = util.buildLogMsg("ParseMessage", "Invalid header");
                        util.insertLog_text(logMsg);
                        break;
                    }
                }
                if (header == "IEA")
                {
                    result = true;
                    break;
                }
            }
            return(result);
        }
示例#16
0
        public void Should_Serialize_yyyyMMddHH()
        {
            var date = new DTM(2015, 6, 6, 14);
            Assert.AreEqual("201506061400", date.Value);

            date = new DTM(2015, 6, 6, 14, null, null, null, null, 3, 30);
            Assert.AreEqual("201506061400+0330", date.Value);
        }
示例#17
0
        public void Should_Serialize_yyyyMMddHHmm()
        {
            var date = new DTM(2015, 8, 3, 9, 22);
            Assert.AreEqual("201508030922", date.Value);

            date = new DTM(2015, 8, 3, 9, 22, null, null, null, -2);
            Assert.AreEqual("201508030922-0200", date.Value);
        }
示例#18
0
文件: Program.cs 项目: mrtinkz/Sdk
        /// <summary>
        /// Builds ship bill notice.
        /// Original from http://www.bergware.net/bisacwww/857_3060.htm
        /// </summary>
        static TS857 BuildShipBillNotice(string controlNumber)
        {
            var result = new TS857();

            //  Transaction 857
            //  Set control number 12103
            result.ST = new ST();
            result.ST.TransactionSetIdentifierCode_01 = "857";
            result.ST.TransactionSetControlNumber_02  = controlNumber.PadLeft(9, '0');

            //  Hierarchical structure code 0001
            //  Original transaction set
            //  Ship date of 01 / 10 / 98
            result.BHT = new BHT();
            result.BHT.HierarchicalStructureCode_01 = "0001";
            result.BHT.TransactionSetPurposeCode_02 = "00";
            result.BHT.Date_04 = "980110";

            //  Repeating HL Loops
            result.HLLoop = new List <Loop_HL_857>();

            //  Begin HL Loop 1
            var hlLoop1 = new Loop_HL_857();

            //  Hierarchical level 1 shipment
            hlLoop1.HL = new HL();
            hlLoop1.HL.HierarchicalIDNumber_01  = "1";
            hlLoop1.HL.HierarchicalLevelCode_03 = "S";

            //  Begin G05 Loop 1
            hlLoop1.G05Loop = new Loop_G05_857();

            //  3 shipped units
            hlLoop1.G05Loop.G05 = new G05();
            hlLoop1.G05Loop.G05.NumberofUnitsShipped_01          = "3";
            hlLoop1.G05Loop.G05.UnitorBasisforMeasurementCode_02 = "UN";

            //  Repeating DTM
            hlLoop1.G05Loop.DTM = new List <DTM>();

            //  Ship date of
            //  01 / 10 / 98
            //  Century designation of 19
            var dtm1 = new DTM();

            dtm1.DateTimeQualifier_01 = "011";
            dtm1.Date_02 = "980110";
            dtm1.DateTimePeriodFormatQualifier_05 = "19";
            hlLoop1.G05Loop.DTM.Add(dtm1);

            //  Repeating N1 G05 Loops
            hlLoop1.G05Loop.N1Loop = new List <Loop_N1_857>();

            //  Begin N1 G05 Loop 1
            var n1Loop1 = new Loop_N1_857();

            //  Ship from
            //  SAN
            //  216793X
            n1Loop1.N1 = new N1();
            n1Loop1.N1.EntityIdentifierCode_01        = "SF";
            n1Loop1.N1.IdentificationCodeQualifier_03 = "15";
            n1Loop1.N1.IdentificationCode_04          = "216793X";

            //  End N1 G05 Loop 1
            hlLoop1.G05Loop.N1Loop.Add(n1Loop1);

            //  Begin N1 G05 Loop 2
            var n1Loop2 = new Loop_N1_857();

            //  Ship to
            //  SAN
            //  6678157
            n1Loop2.N1 = new N1();
            n1Loop2.N1.EntityIdentifierCode_01        = "ST";
            n1Loop2.N1.IdentificationCodeQualifier_03 = "15";
            n1Loop2.N1.IdentificationCode_04          = "6678157";

            //  End N1 G05 Loop 2
            hlLoop1.G05Loop.N1Loop.Add(n1Loop2);

            //  Begin N1 G05 Loop 3
            var n1Loop3 = new Loop_N1_857();

            //  Bill to
            //  SAN
            //  1135309
            n1Loop3.N1 = new N1();
            n1Loop3.N1.EntityIdentifierCode_01        = "BT";
            n1Loop3.N1.IdentificationCodeQualifier_03 = "15";
            n1Loop3.N1.IdentificationCode_04          = "1135309";

            //  End N1 G05 Loop 3
            hlLoop1.G05Loop.N1Loop.Add(n1Loop3);

            //  Begin N1 G05 Loop 4
            var n1Loop4 = new Loop_N1_857();

            //  Vendor
            //  SAN
            //  2002450
            n1Loop4.N1 = new N1();
            n1Loop4.N1.EntityIdentifierCode_01        = "VN";
            n1Loop4.N1.IdentificationCodeQualifier_03 = "15";
            n1Loop4.N1.IdentificationCode_04          = "2002450";

            //  End N1 G05 Loop 4
            hlLoop1.G05Loop.N1Loop.Add(n1Loop4);

            //  End G05 Loop 1

            //  End HL Loop 1
            result.HLLoop.Add(hlLoop1);

            //  Begin HL Loop 2
            var hlLoop2 = new Loop_HL_857();

            //  Hierarchical level 2 order
            hlLoop2.HL = new HL();
            hlLoop2.HL.HierarchicalIDNumber_01  = "2";
            hlLoop2.HL.HierarchicalLevelCode_03 = "O";

            //  Begin TDS Loop
            hlLoop2.TDSLoop = new Loop_TDS_857();

            //  Total invoice before discount
            //  is applied is $3,837.50
            //  Amount subject to Terms
            //  discount is $3,837.50
            //  Discounted amount due
            //  is $2,187.36
            hlLoop2.TDSLoop.TDS           = new TDS();
            hlLoop2.TDSLoop.TDS.Amount_01 = "383750";
            hlLoop2.TDSLoop.TDS.Amount_02 = "383750";
            hlLoop2.TDSLoop.TDS.Amount_03 = "218736";

            //  Purchase order number
            //  012323456789123
            //  Purchase order date
            //  of 01 / 06 / 98
            hlLoop2.TDSLoop.PRF = new PRF();
            hlLoop2.TDSLoop.PRF.PurchaseOrderNumber_01       = "0123456789123";
            hlLoop2.TDSLoop.PRF.ChangeOrderSequenceNumber_03 = "980106";

            //  End TDS Loop

            //  End HL Loop 2
            result.HLLoop.Add(hlLoop2);

            //  Begin HL Loop 3
            var hlLoop3 = new Loop_HL_857();

            //  Hierarchical level 3 pack
            hlLoop3.HL = new HL();
            hlLoop3.HL.HierarchicalIDNumber_01  = "3";
            hlLoop3.HL.HierarchicalLevelCode_03 = "P";

            //  Begin LX Loop
            hlLoop3.LXLoop = new Loop_LX_857();

            //  Loop start. Mandatory segment
            hlLoop3.LXLoop.LX = new LX();
            hlLoop3.LXLoop.LX.AssignedNumber_01 = "1";

            //  Repeating MAN
            hlLoop3.LXLoop.MAN = new List <MAN>();

            //  UCC/EAN-128 Serial shipping
            //  container code format.
            //  Marks and numbers used to
            //  identify the carton
            //  00097800006400000012
            var man1 = new MAN();

            man1.MarksandNumbersQualifier_01 = "GM";
            man1.MarksandNumbers_02          = "00097800006400000012";
            hlLoop3.LXLoop.MAN.Add(man1);

            //  End LX Loop

            //  End HL Loop 3
            result.HLLoop.Add(hlLoop3);

            //  Begin HL Loop 4
            var hlLoop4 = new Loop_HL_857();

            //  Hierarchical level 4 item
            hlLoop4.HL = new HL();
            hlLoop4.HL.HierarchicalIDNumber_01  = "4";
            hlLoop4.HL.HierarchicalLevelCode_03 = "I";

            //  Begin IT1 Loop
            hlLoop4.IT1Loop = new Loop_IT1_857();

            //  Line item 1
            //  Shipped 2
            //  units
            //  at $8.40
            //  for each unit
            //  ISBN
            //  0835201031
            hlLoop4.IT1Loop.IT1 = new IT1();
            hlLoop4.IT1Loop.IT1.AssignedIdentification_01        = "1";
            hlLoop4.IT1Loop.IT1.QuantityInvoiced_02              = "2";
            hlLoop4.IT1Loop.IT1.UnitorBasisforMeasurementCode_03 = "UN";
            hlLoop4.IT1Loop.IT1.UnitPrice_04                 = "8.4";
            hlLoop4.IT1Loop.IT1.BasisofUnitPriceCode_05      = "PE";
            hlLoop4.IT1Loop.IT1.ProductServiceIDQualifier_06 = "IB";
            hlLoop4.IT1Loop.IT1.ProductServiceID_07          = "0835201031";

            //  Repeating CTP
            hlLoop4.IT1Loop.CTP = new List <CTP>();

            //  Suggested list price of
            //  $10.50
            //  Discount
            //  multiplier of .8
            //  (100 % -80 % = 20 % discount)
            var ctp1 = new CTP();

            ctp1.PriceIdentifierCode_02      = "SLP";
            ctp1.UnitPrice_03                = "10.5";
            ctp1.PriceMultiplierQualifier_06 = "DIS";
            ctp1.Multiplier_07               = ".8";
            hlLoop4.IT1Loop.CTP.Add(ctp1);

            //  End IT1 Loop

            //  End HL Loop 4
            result.HLLoop.Add(hlLoop4);

            //  Begin HL Loop 5
            var hlLoop5 = new Loop_HL_857();

            //  Hierarchical level 5 item
            hlLoop5.HL = new HL();
            hlLoop5.HL.HierarchicalIDNumber_01  = "5";
            hlLoop5.HL.HierarchicalLevelCode_03 = "I";

            //  Begin IT1 Loop
            hlLoop5.IT1Loop = new Loop_IT1_857();

            //  Line item 2
            //  Shipped 1
            //  unit
            //  at $24.00
            //  per each unit
            //  ISBN
            //  0835208338
            hlLoop5.IT1Loop.IT1 = new IT1();
            hlLoop5.IT1Loop.IT1.AssignedIdentification_01        = "2";
            hlLoop5.IT1Loop.IT1.QuantityInvoiced_02              = "1";
            hlLoop5.IT1Loop.IT1.UnitorBasisforMeasurementCode_03 = "UN";
            hlLoop5.IT1Loop.IT1.UnitPrice_04                 = "24";
            hlLoop5.IT1Loop.IT1.BasisofUnitPriceCode_05      = "PE";
            hlLoop5.IT1Loop.IT1.ProductServiceIDQualifier_06 = "IB";
            hlLoop5.IT1Loop.IT1.ProductServiceID_07          = "0835208338";

            //  Repeating CTP
            hlLoop5.IT1Loop.CTP = new List <CTP>();

            //  Suggested list price of
            //  $30.00
            //  Discount
            //  multiplier of .8
            //  (100 % -80 % = 20 % discount)
            var ctp2 = new CTP();

            ctp2.PriceIdentifierCode_02      = "SLP";
            ctp2.UnitPrice_03                = "30";
            ctp2.PriceMultiplierQualifier_06 = "DIS";
            ctp2.Multiplier_07               = ".8";
            hlLoop5.IT1Loop.CTP.Add(ctp2);

            //  End IT1 Loop

            //  End HL Loop 5
            result.HLLoop.Add(hlLoop5);

            return(result);
        }
示例#19
0
        public void Should_Serialize_yyyyMMddHHmmss_ss()
        {
            var date = new DTM(2000, 3, 1, 11, 11, 2, 40);
            Assert.AreEqual("20000301111102.04", date.Value);
            date = new DTM(2000, 3, 1, 11, 11, 2, 240);
            Assert.AreEqual("20000301111102.24", date.Value);

            date = new DTM(2000, 3, 1, 11, 11, 2, 40, null, -5);
            Assert.AreEqual("20000301111102.04-0500", date.Value);
            date = new DTM(2000, 3, 1, 11, 11, 2, 240, null, -8);
            Assert.AreEqual("20000301111102.24-0800", date.Value);
        }
        /// <summary>
        /// Build order response.
        /// Original from https://www.gs1.org/sites/default/files/docs/eancom/s4/ordrsp.pdf
        /// </summary>
        static TSORDRSP BuildOrderResponse(string controlNumber)
        {
            var result = new TSORDRSP();

            //  Message header
            result.UNH = new UNH();
            result.UNH.MessageReferenceNumber_01                      = controlNumber.PadLeft(14, '0');
            result.UNH.MessageIdentifier_02                           = new S009();
            result.UNH.MessageIdentifier_02.MessageType_01            = "ORDRSP";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "96A";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

            //  Order response number ORSP12856, accepted with proposals for change
            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentmessagenamecoded_01 = "231";
            result.BGM.Documentmessagenumber_02 = "ORSP12856";
            result.BGM.Messagefunctioncoded_03  = "4";

            //  Repeating DTM
            result.DTM = new List <DTM>();

            //  Message date is 30th of March 2002
            var dtm1 = new DTM();

            dtm1.DATETIMEPERIOD_01 = new C507();
            dtm1.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "137";
            dtm1.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020330";
            dtm1.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            result.DTM.Add(dtm1);

            //  Repeating RFF Groups
            result.RFFLoop = new List <Loop_RFF_ORDRSP>();

            //  Begin RFF Group
            var rffLoop1 = new Loop_RFF_ORDRSP();

            //  Message is responding to order number 652744
            rffLoop1.RFF = new RFF();
            rffLoop1.RFF.REFERENCE_01 = new C506();
            rffLoop1.RFF.REFERENCE_01.Referencequalifier_01 = "ON";
            rffLoop1.RFF.REFERENCE_01.Referencenumber_02    = "652744";

            //  Repeating DTM
            rffLoop1.DTM = new List <DTM>();

            //  Order date is 25th of March 2002
            var dtmRff1 = new DTM();

            dtmRff1.DATETIMEPERIOD_01 = new C507();
            dtmRff1.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "171";
            dtmRff1.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020325";
            dtmRff1.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            rffLoop1.DTM.Add(dtmRff1);

            //  End RFF Group
            result.RFFLoop.Add(rffLoop1);

            //  Repeating NAD Groups
            result.NADLoop = new List <Loop_NAD_ORDRSP>();

            //  Begin NAD Group 1
            var nadLoop1 = new Loop_NAD_ORDRSP();

            //  Buyer is identified using GLN 5412345000013
            nadLoop1.NAD = new NAD();
            nadLoop1.NAD.Partyqualifier_01             = "BY";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5412345000013";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  Repeating RFF NAD Groups
            nadLoop1.RFFLoop = new List <Loop_RFF_ORDRSP>();

            //  Begin RFF NAD Group
            var rffNadLoop1 = new Loop_RFF_ORDRSP();

            //  Buyer’s VAT number is 452282
            rffNadLoop1.RFF = new RFF();
            rffNadLoop1.RFF.REFERENCE_01 = new C506();
            rffNadLoop1.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffNadLoop1.RFF.REFERENCE_01.Referencenumber_02    = "452282";

            //  End RFF NAD Group
            nadLoop1.RFFLoop.Add(rffNadLoop1);

            //  End NAD Group 1
            result.NADLoop.Add(nadLoop1);

            //  Begin NAD Group 2
            var nadLoop2 = new Loop_NAD_ORDRSP();

            //  Supplier is identified using GLN 4012345500004
            nadLoop2.NAD = new NAD();
            nadLoop2.NAD.Partyqualifier_01             = "SU";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "4012345500004";
            nadLoop2.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

            //  Repeating RFF NAD Groups
            nadLoop2.RFFLoop = new List <Loop_RFF_ORDRSP>();

            //  Begin RFF NAD Group
            var rffNadLoop2 = new Loop_RFF_ORDRSP();

            //  Supplier’s VAT number is 87765432
            rffNadLoop2.RFF = new RFF();
            rffNadLoop2.RFF.REFERENCE_01 = new C506();
            rffNadLoop2.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffNadLoop2.RFF.REFERENCE_01.Referencenumber_02    = "87765432";

            //  End RFF NAD Group
            nadLoop2.RFFLoop.Add(rffNadLoop2);

            //  End NAD Group 2
            result.NADLoop.Add(nadLoop2);

            //  Repeating LIN Groups
            result.LINLoop = new List <Loop_LIN_ORDRSP>();

            //  Begin LIN Group 1
            var linLoop1 = new Loop_LIN_ORDRSP();

            //  First product identified by GTIN 3312345501102 is accepted
            linLoop1.LIN = new LIN();
            linLoop1.LIN.Lineitemnumber_01 = "1";
            linLoop1.LIN.Actionrequestnotificationcoded_02                  = "5";
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03                        = new C212();
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "3312345501102";
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

            //  End LIN Group 1
            result.LINLoop.Add(linLoop1);

            //  Begin LIN Group 2
            var linLoop2 = new Loop_LIN_ORDRSP();

            //  Second product identified by GTIN 3312345501003 is amended
            linLoop2.LIN = new LIN();
            linLoop2.LIN.Lineitemnumber_01 = "2";
            linLoop2.LIN.Actionrequestnotificationcoded_02                  = "3";
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03                        = new C212();
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "3312345501003";
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

            //  Repeating PIA
            linLoop2.PIA = new List <PIA>();

            //  Supplier’s article number ABC1234 is provided as an additional identification
            var piaLin1 = new PIA();

            piaLin1.Productidfunctionqualifier_01                      = "1";
            piaLin1.ITEMNUMBERIDENTIFICATION_02                        = new C212();
            piaLin1.ITEMNUMBERIDENTIFICATION_02.Itemnumber_01          = "ABC1234";
            piaLin1.ITEMNUMBERIDENTIFICATION_02.Itemnumbertypecoded_02 = "SA";
            linLoop2.PIA.Add(piaLin1);

            //  Repeating IMD
            linLoop2.IMD = new List <IMD>();

            //  Product is a traded unit
            var imdLin1 = new IMD();

            imdLin1.Itemdescriptiontypecoded_01 = "C";
            imdLin1.ITEMDESCRIPTION_03          = new C273();
            imdLin1.ITEMDESCRIPTION_03.Itemdescriptionidentification_01  = "TU";
            imdLin1.ITEMDESCRIPTION_03.Codelistresponsibleagencycoded_03 = "9";
            linLoop2.IMD.Add(imdLin1);

            //  Repeating QTY
            linLoop2.QTY = new List <QTY>();

            //  Ordered quantity is 48
            var qtyLin1 = new QTY();

            qtyLin1.QUANTITYDETAILS_01 = new C186();
            qtyLin1.QUANTITYDETAILS_01.Quantityqualifier_01 = "21";
            qtyLin1.QUANTITYDETAILS_01.Quantity_02          = "48";
            linLoop2.QTY.Add(qtyLin1);

            //  Repeating DTM
            linLoop2.DTM = new List <DTM>();

            //  Date of order is 10th of September 2002
            var dtmLin1 = new DTM();

            dtmLin1.DATETIMEPERIOD_01 = new C507();
            dtmLin1.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "2";
            dtmLin1.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020910";
            dtmLin1.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            linLoop2.DTM.Add(dtmLin1);

            //  Repeating MOA
            linLoop2.MOA = new List <MOA>();

            //  Value of ordered line is 26400
            var moaLin1 = new MOA();

            moaLin1.MONETARYAMOUNT_01 = new C516();
            moaLin1.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "203";
            moaLin1.MONETARYAMOUNT_01.Monetaryamount_02 = "26400";
            linLoop2.MOA.Add(moaLin1);

            //  Repeating PRI Groups
            linLoop2.PRILoop = new List <Loop_PRI_ORDRSP>();

            //  Begin PRI LIN Group
            var priLin1 = new Loop_PRI_ORDRSP();

            //  Net calculation price is 550
            priLin1.PRI = new PRI();
            priLin1.PRI.PRICEINFORMATION_01 = new C509();
            priLin1.PRI.PRICEINFORMATION_01.Pricequalifier_01     = "AAA";
            priLin1.PRI.PRICEINFORMATION_01.Price_02              = "550";
            priLin1.PRI.PRICEINFORMATION_01.Pricetypecoded_03     = "CT";
            priLin1.PRI.PRICEINFORMATION_01.Pricetypequalifier_04 = "AAA";

            //  End PRI LIN Group
            linLoop2.PRILoop.Add(priLin1);

            //  Repeating PAC Groups
            linLoop2.PACLoop = new List <Loop_PAC_ORDRSP_2>();

            //  Begin PAC LIN Group
            var pacLin1 = new Loop_PAC_ORDRSP_2();

            //  Product is packaged in a case
            pacLin1.PAC = new PAC();
            pacLin1.PAC.Numberofpackages_01 = "4";
            pacLin1.PAC.PACKAGINGDETAILS_02 = new C531();
            pacLin1.PAC.PACKAGINGDETAILS_02.Packaginglevelcoded_01 = "1";
            pacLin1.PAC.PACKAGETYPE_03 = new C202();
            pacLin1.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01 = "CS";

            //  End PAC LIN Group
            linLoop2.PACLoop.Add(pacLin1);

            //  Repeating TAX Groups
            linLoop2.TAXLoop = new List <Loop_TAX_ORDRSP>();

            //  Begin TAX LIN Group
            var taxLin1 = new Loop_TAX_ORDRSP();

            //  Product is subject to standard VAT rate of 17.5 %
            taxLin1.TAX = new TAX();
            taxLin1.TAX.Dutytaxfeefunctionqualifier_01 = "7";
            taxLin1.TAX.DUTYTAXFEETYPE_02 = new C241();
            taxLin1.TAX.DUTYTAXFEETYPE_02.Dutytaxfeetypecoded_01 = "VAT";
            taxLin1.TAX.DUTYTAXFEEDETAIL_05 = new C243();
            taxLin1.TAX.DUTYTAXFEEDETAIL_05.Dutytaxfeerate_04 = "17.5";
            taxLin1.TAX.Dutytaxfeecategorycoded_06            = "S";

            //  Tax amount for product is 4620
            taxLin1.MOA = new MOA();
            taxLin1.MOA.MONETARYAMOUNT_01 = new C516();
            taxLin1.MOA.MONETARYAMOUNT_01.Monetaryamounttypequalifier_01 = "124";
            taxLin1.MOA.MONETARYAMOUNT_01.Monetaryamount_02 = "4620";

            //  End TAX LIN Group
            linLoop2.TAXLoop.Add(taxLin1);

            //  Repeating TDT Groups
            linLoop2.TDTLoop = new List <Loop_TDT_ORDRSP>();

            //  Begin TDT LIN Group
            var tdtLin1 = new Loop_TDT_ORDRSP();

            //  Main carriage transport for the product is a truck
            tdtLin1.TDT = new TDT();
            tdtLin1.TDT.Transportstagequalifier_01 = "20";
            tdtLin1.TDT.MODEOFTRANSPORT_03         = new C220();
            tdtLin1.TDT.MODEOFTRANSPORT_03.Modeoftransportcoded_01 = "30";
            tdtLin1.TDT.CARRIER_05 = new C040();
            tdtLin1.TDT.CARRIER_05.Carrieridentification_01 = "31";

            //  End TDT LIN Group
            linLoop2.TDTLoop.Add(tdtLin1);

            //  End LIN Group 2
            result.LINLoop.Add(linLoop2);

            //  Begin LIN Group 3
            var linLoop3 = new Loop_LIN_ORDRSP();

            //  Third product identified by GTIN 3312345501096 is not accepted
            linLoop3.LIN = new LIN();
            linLoop3.LIN.Lineitemnumber_01 = "3";
            linLoop3.LIN.Actionrequestnotificationcoded_02                  = "7";
            linLoop3.LIN.ITEMNUMBERIDENTIFICATION_03                        = new C212();
            linLoop3.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "3312345501096";
            linLoop3.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

            //  End LIN Group 3
            result.LINLoop.Add(linLoop3);

            //  Message detail/summary separator
            result.UNS = new UNS();
            result.UNS.Sectionidentification_01 = "S";

            //  Repeating CNT
            result.CNT = new List <CNT>();

            //  Count of the number of LIN segments in the message
            var cnt = new CNT();

            cnt.CONTROL_01 = new C270();
            cnt.CONTROL_01.Controlqualifier_01 = "2";
            cnt.CONTROL_01.Controlvalue_02     = "3";
            result.CNT.Add(cnt);

            return(result);
        }
示例#21
0
        public void Should_Serialize_yyyyMMddHHmmss_ssss()
        {
            var date = new DTM(2000, 3, 1, 11, 11, 2, 364, 5);
            Assert.AreEqual("20000301111102.3645", date.Value);

            date = new DTM(2000, 3, 1, 11, 11, 2, 364, 5, 4);
            Assert.AreEqual("20000301111102.3645+0400", date.Value);
        }
        /// <summary>
        /// Builds receiving advice.
        /// Original from https://ps.extra.chrysler.com/sites/itb-ebus/Documents/861GlobalCoreReturnSystemReceivingAdvice.pdf
        /// </summary>
        static TS861 BuildReceivingAdvice(string controlNumber)
        {
            var result = new TS861();

            //  Transaction Set Identifier Code = “861”
            //  (Receiving Advice / Acceptance Certificate)
            //  Transaction Set Control Number = 0002
            result.ST = new ST();
            result.ST.TransactionSetIdentifierCode_01 = "861";
            result.ST.TransactionSetControlNumber_02  = controlNumber.PadLeft(9, '0');

            //  Reference Identification = C000548241
            //  Date = 02 / 24 / 2009
            //  Transaction Set Purpose Code = “00” (Original)
            //  Receiving Advice or Acceptance Certificate
            //  = “3” (Disposition Advice)
            result.BRA = new BRA();
            result.BRA.ReferenceIdentification_01 = "C000548241";
            result.BRA.Date_02 = "20090224";
            result.BRA.TransactionSetPurposeCode_03 = "00";
            result.BRA.ReceivingAdviceorAcceptanceCertificateTypeCode_04 = "3";

            //  Repeating DTM
            result.DTM = new List <DTM>();

            //  Date/Time Qualifier = “050” (Received)
            //  Date = 01 / 02 / 2009
            //  Time = 8:55 AM
            //  Time Code = “ET” (Eastern Time)
            var dtm1 = new DTM();

            dtm1.DateTimeQualifier_01 = "050";
            dtm1.Date_02     = "20090102";
            dtm1.Time_03     = "0855";
            dtm1.TimeCode_04 = "ET";
            result.DTM.Add(dtm1);

            //  Repeating N1 Loops
            result.N1Loop = new List <Loop_N1_861>();

            //  Begin N1 Loop
            var n1Loop1 = new Loop_N1_861();

            //  Entity Identifier Code
            //  = “SU” (Supplier / Manufacturer)
            //  Identification Code Qualifier
            //  = “92” (Assigned by Buyer or Buyer's Agent)
            //  Identification Code = 43677
            n1Loop1.N1 = new N1();
            n1Loop1.N1.EntityIdentifierCode_01        = "SU";
            n1Loop1.N1.IdentificationCodeQualifier_03 = "92";
            n1Loop1.N1.IdentificationCode_04          = "43677";

            //  End N1 Loop
            result.N1Loop.Add(n1Loop1);

            //  Repeating RCD Loops
            result.RCDLoop = new List <Loop_RCD_861>();

            //  Begin RCD Loop
            var rcdLoop = new Loop_RCD_861();

            //  Quantity in Question = 1
            //  Unit or Basis for Measurement Code
            //  = “EA” (Each)
            //  Receiving Condition Code = 09
            rcdLoop.RCD = new RCD();
            rcdLoop.RCD.QuantityinQuestion_06     = "1";
            rcdLoop.RCD.CompositeUnitofMeasure_07 = new C001();
            rcdLoop.RCD.CompositeUnitofMeasure_07.UnitorBasisforMeasurementCode_01 = "EA";
            rcdLoop.RCD.ReceivingConditionCode_08 = "09";

            //  Repeating LIN
            rcdLoop.LIN = new List <LIN>();

            //  Product/Service ID Qualifier
            //  = “BP” (Buyer's Part Number)
            //  Product / Service ID = U0070062
            var lin1 = new LIN();

            lin1.ProductServiceIDQualifier_02 = "BP";
            lin1.ProductServiceID_03          = "U0070062";
            rcdLoop.LIN.Add(lin1);

            //  Repeating REF
            rcdLoop.REF = new List <REF>();

            //  Reference Identification Qualifier
            //  = “ACC” (Status)
            //  Reference Identification = A
            var ref1 = new REF();

            ref1.ReferenceIdentificationQualifier_01 = "ACC";
            ref1.ReferenceIdentification_02          = "A";
            rcdLoop.REF.Add(ref1);

            //  Repeating DTM
            rcdLoop.DTM = new List <DTM>();

            //  Date/Time Qualifier = “945” (Activity)
            //  Date = 01 / 02 / 2009
            //  Time = 8:55 AM
            //  Time Code = “ET” (Eastern Time)
            var dtm2 = new DTM();

            dtm2.DateTimeQualifier_01 = "945";
            dtm2.Date_02     = "20090102";
            dtm2.Time_03     = "0855";
            dtm2.TimeCode_04 = "ET";
            rcdLoop.DTM.Add(dtm2);

            //  End RCD Loop
            result.RCDLoop.Add(rcdLoop);

            return(result);
        }
示例#23
0
		/// <summary> Creates a TS.</summary>
		/// <param name="message">the Message to which this Type belongs
		/// </param>
		public TS(Message message):base(message)
		{
			data = new Type[2];
			data[0] = new DTM(message);
			data[1] = new ID(message, 529);
		}
示例#24
0
        /// <summary>
        /// Builds Purchase Orders Acknowledgement.
        /// Original from http://www.jobisez.com/edi/tp/guide.aspx?doc=/edi-igs/Kohls/edi_855.pdf
        /// </summary>
        static TS855 BuildPurchaseOrdersAcknowledgement(string controlNumber)
        {
            var result = new TS855();

            //  855 is the Transaction Set Identifier Code for the Purchase Orders Acknowledgement
            //  0001 is the Transaction Set Control Number
            result.ST = new ST();
            result.ST.TransactionSetIdentifierCode_01 = "855";
            result.ST.TransactionSetControlNumber_02  = controlNumber.PadLeft(9, '0');


            //  Purchase Order Number 1234567
            //  Purchase Order Date 01 / 02 / 05
            result.BAK = new BAK();
            result.BAK.TransactionSetPurposeCode_01 = "16";
            result.BAK.AcknowledgmentType_02        = "AP";
            result.BAK.PurchaseOrderNumber_03       = "1234567";
            result.BAK.Date_04 = "20050102";

            //  Repeating DTM
            result.DTM = new List <DTM>();

            //  Scheduled Ship Date 02 / 03 / 05
            var dtm1 = new DTM();

            dtm1.DateTimeQualifier_01 = "068";
            dtm1.Date_02 = "20050203";
            result.DTM.Add(dtm1);

            //  Repeating N1 Loops
            result.N1Loop = new List <Loop_N1_855>();

            //  Begin N1 Loop 1
            var n1Loop1 = new Loop_N1_855();

            //  Vendor Name XYZ MANUFACTURING CO
            //  Vendor DUNS 987654321
            n1Loop1.N1 = new N1();
            n1Loop1.N1.EntityIdentifierCode_01 = "SF";
            n1Loop1.N1.Name_02 = "XYZ MANUFACTURING CO";
            n1Loop1.N1.IdentificationCodeQualifier_03 = "01";
            n1Loop1.N1.IdentificationCode_04          = "987654321";

            //  End N1 Loop 1
            result.N1Loop.Add(n1Loop1);

            //  Begin N1 Loop 2
            var n1Loop2 = new Loop_N1_855();

            //  Ship to Distribution Center 0085 in Menomonee Falls WI
            n1Loop2.N1 = new N1();
            n1Loop2.N1.EntityIdentifierCode_01 = "ST";
            n1Loop2.N1.Name_02 = "KOHLS DEPARTMENT STORES";
            n1Loop2.N1.IdentificationCodeQualifier_03 = "92";
            n1Loop2.N1.IdentificationCode_04          = "0085";

            //  End N1 Loop 2
            result.N1Loop.Add(n1Loop2);

            //  Repeating PO1 Loops
            result.PO1Loop = new List <Loop_PO1_855>();

            //  Begin PO1 Loop 1
            var po1Loop1 = new Loop_PO1_855();

            //  UPC 1-23456-78901-2
            //  Quantity Ordered 3(Each)
            //  Kohl’s SKU NONE
            //  Vendor Style BLU89Z012
            //  NRMA Color Code(CM) 123
            //  Vendor Color(VE) BLUESKY
            //  NRMA Size Code(SM) 12345
            //  Vendor Size(SZ) W32XL34
            po1Loop1.PO1 = new PO1();
            po1Loop1.PO1.AssignedIdentification_01        = "000001";
            po1Loop1.PO1.QuantityOrdered_02               = "3";
            po1Loop1.PO1.UnitorBasisforMeasurementCode_03 = "EA";
            po1Loop1.PO1.ProductServiceIDQualifier_06     = "UP";
            po1Loop1.PO1.ProductServiceID_07              = "123456789012";
            po1Loop1.PO1.ProductServiceIDQualifier_08     = "VA";
            po1Loop1.PO1.ProductServiceID_09              = "BLU89Z012";
            po1Loop1.PO1.ProductServiceIDQualifier_10     = "CM";
            po1Loop1.PO1.ProductServiceID_11              = "123";
            po1Loop1.PO1.ProductServiceIDQualifier_12     = "SM";
            po1Loop1.PO1.ProductServiceID_13              = "12345";

            //  End PO1 Loop 1
            result.PO1Loop.Add(po1Loop1);

            //  Begin PO1 Loop 2
            var po1Loop2 = new Loop_PO1_855();

            //   UPC 1-23456-79812-3
            //   Quantity Ordered 5(Each)
            //   Kohl’s SKU NONE
            //   Vendor Style BLK98A023
            //   NRMA Color Code(CM) 321
            //   Vendor Color(VE) BLACK - COAL
            //   NRMA Size Code(SM) 12345
            //   Vendor Size(SZ) W32XL34
            po1Loop2.PO1 = new PO1();
            po1Loop2.PO1.AssignedIdentification_01        = "000002";
            po1Loop2.PO1.QuantityOrdered_02               = "5";
            po1Loop2.PO1.UnitorBasisforMeasurementCode_03 = "EA";
            po1Loop2.PO1.ProductServiceIDQualifier_06     = "UP";
            po1Loop2.PO1.ProductServiceID_07              = "123456798123";
            po1Loop2.PO1.ProductServiceIDQualifier_08     = "VA";
            po1Loop2.PO1.ProductServiceID_09              = "BLK98A023";
            po1Loop2.PO1.ProductServiceIDQualifier_10     = "CM";
            po1Loop2.PO1.ProductServiceID_11              = "321";
            po1Loop2.PO1.ProductServiceIDQualifier_12     = "SM";
            po1Loop2.PO1.ProductServiceID_13              = "12345";

            //  End PO1 Loop 2
            result.PO1Loop.Add(po1Loop2);

            //  Begin PO1 Loop 3
            var po1Loop3 = new Loop_PO1_855();

            //  UPC 9-99988-88800-1
            //  Quantity Ordered 1(Each)
            //  Kohl’s SKU NONE
            //  Vendor Style 981RACK
            //  NRMA Color Code(CM) NONE
            //  Vendor Color(VE) NONE
            //  NRMA Size Code(SM) NONE
            //  Vendor Size(SZ) NONE
            po1Loop3.PO1 = new PO1();
            po1Loop3.PO1.AssignedIdentification_01        = "000003";
            po1Loop3.PO1.QuantityOrdered_02               = "1";
            po1Loop3.PO1.UnitorBasisforMeasurementCode_03 = "EA";
            po1Loop3.PO1.ProductServiceIDQualifier_06     = "UP";
            po1Loop3.PO1.ProductServiceID_07              = "999988888001";
            po1Loop3.PO1.ProductServiceIDQualifier_08     = "VA";
            po1Loop3.PO1.ProductServiceID_09              = "981RACK";

            //  End PO1 Loop 3
            result.PO1Loop.Add(po1Loop3);

            //  3 is the Number of Items
            result.CTTLoop     = new Loop_CTT_855();
            result.CTTLoop.CTT = new CTT();
            result.CTTLoop.CTT.NumberofLineItems_01 = "3";

            return(result);
        }