Exemplo n.º 1
0
        protected void MontarMea(string calificadorAplicacionMedida6311, string calificadorUnidadMedida6411, string valorMedida6314)
        {
            var mea = new MEA(calificadorAplicacionMedida6311, null,
                              new ValorAmplitud(calificadorUnidadMedida6411, valorMedida6314, null, null),
                              null);

            Segmentos.Add(mea);
            Mensaje += mea.getSegmento();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Build purchase order.
        /// Original example from http://www.x12.org/examples/004010X357/tax-exempt-purchase-order/
        /// </summary>
        public static TS850 BuildPurchaseOrder(string controlNumber)
        {
            var result = new TS850();

            //  Indicates the start of a purchase order transaction set and assigns a control number.
            result.ST = new ST();
            result.ST.TransactionSetIdentifierCode_01 = "850";
            result.ST.TransactionSetControlNumber_02  = controlNumber.PadLeft(9, '0');

            //  Indicates that this is original purchase order number XX-1234, dated March 1, 2017, and that no acknowledgment is necessary.
            result.BEG = new BEG();
            result.BEG.TransactionSetPurposeCode_01 = "00";
            result.BEG.PurchaseOrderTypeCode_02     = "SA";
            result.BEG.PurchaseOrderNumber_03       = "XX-1234";
            result.BEG.Date_05 = "20170301";
            result.BEG.AcknowledgmentType_07 = "NA";

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

            //  Indicates that the name of the Buyer is Ed Smith, and his telephone number is (800) 123-4567.
            var per = new PER();

            per.ContactFunctionCode_01 = "BD";
            per.Name_02 = "ED SMITH";
            per.CommunicationNumberQualifier_03 = "TE";
            per.CommunicationNumber_04          = "8001234567";
            result.PER.Add(per);

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

            //  Provides state tax exempt ID 53247765.
            var tax = new TAX();

            tax.TaxIdentificationNumber_01 = "53247765";
            tax.LocationQualifier_02       = "SP";
            tax.LocationIdentifier_03      = "CA";
            tax.TaxExemptCode_12           = "9";
            result.TAX.Add(tax);

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

            //  Begin N1 Loop
            var n1Loop = new Loop_N1_850();

            //  Indicates that the buyer is ABC Aerospace. ABC's D-U-N-S+4 number is 123456789-0101.
            n1Loop.N1 = new N1();
            n1Loop.N1.EntityIdentifierCode_01 = "BY";
            n1Loop.N1.Name_02 = "ABC AEROSPACE";
            n1Loop.N1.IdentificationCodeQualifier_03 = "9";
            n1Loop.N1.IdentificationCode_04          = "1234567890101";

            //  Repeating N2
            n1Loop.N2 = new List <N2>();

            //  Provides additional name content for the buyer.
            var n2 = new N2();

            n2.Name_01 = "AIRCRAFT DIVISION";
            n1Loop.N2.Add(n2);

            //  Repeating N3
            n1Loop.N3 = new List <N3>();

            //  The buyer’s street address is 2000 Jet Blvd.
            var n3 = new N3();

            n3.AddressInformation_01 = "2000 JET BLVD";
            n1Loop.N3.Add(n3);

            //  Repeating N4
            n1Loop.N4 = new List <N4>();

            //  The buyer’s city, state, and ZIP is Fighter Town, CA 98898.
            var n4 = new N4();

            n4.CityName_01            = "FIGHTER TOWN";
            n4.StateorProvinceCode_02 = "CA";
            n4.PostalCode_03          = "98898";
            n1Loop.N4.Add(n4);

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

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

            //  Begin PO1 Loop
            var pO1Loop = new Loop_PO1_850();

            //  Indicates Baseline item 1 is a request to purchase 25 units, with a price of $36.00 each, of manufacturer's part number XYZ-1234.
            pO1Loop.PO1 = new PO1();
            pO1Loop.PO1.AssignedIdentification_01        = "1";
            pO1Loop.PO1.QuantityOrdered_02               = "25";
            pO1Loop.PO1.UnitorBasisforMeasurementCode_03 = "EA";
            pO1Loop.PO1.UnitPrice_04                 = "36";
            pO1Loop.PO1.BasisofUnitPriceCode_05      = "PE";
            pO1Loop.PO1.ProductServiceIDQualifier_06 = "MG";
            pO1Loop.PO1.ProductServiceID_07          = "XYZ-1234";

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

            //  Indicates that each unit in the order weighs 10 ounces.
            var mea = new MEA();

            mea.MeasurementReferenceIDCode_01 = "WT";
            mea.MeasurementQualifier_02       = "WT";
            mea.MeasurementValue_03           = "10";
            mea.CompositeUnitofMeasure_04     = new C001();
            mea.CompositeUnitofMeasure_04.UnitorBasisforMeasurementCode_01 = "OZ";
            pO1Loop.MEA.Add(mea);

            //  Indicates that no product substitution is allowed.
            pO1Loop.IT8 = new IT8();
            pO1Loop.IT8.ProductServiceSubstitutionCode_07 = "B0";

            //  Repeating SCH Loops
            pO1Loop.SCHLoop = new List <Loop_SCH_850>();

            //  Begin SCH Loop
            var schLoop = new Loop_SCH_850();

            //  Indicates that the 25 units are required to arrive by June 15, 2017.
            schLoop.SCH             = new SCH();
            schLoop.SCH.Quantity_01 = "25";
            schLoop.SCH.UnitorBasisforMeasurementCode_02 = "EA";
            schLoop.SCH.DateTimeQualifier_05             = "106";
            schLoop.SCH.Date_06 = "20170615";

            //  End SCH Loop
            pO1Loop.SCHLoop.Add(schLoop);

            //  End PO1 Loop
            result.PO1Loop.Add(pO1Loop);

            //  Begin CTT Loop
            result.CTTLoop = new Loop_CTT_850();

            //  Indicates that the purchase order contains 1 line item.
            result.CTTLoop.CTT = new CTT();
            result.CTTLoop.CTT.NumberofLineItems_01 = "1";

            //  Indicates that the total amount of the purchase order is $900.
            result.CTTLoop.AMT = new AMT();
            result.CTTLoop.AMT.AmountQualifierCode_01 = "TT";
            result.CTTLoop.AMT.MonetaryAmount_02      = "900";

            //  End CTT Loop

            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Build price catalogue.
        /// Original from https://www.gs1.org/sites/default/files/docs/eancom/s4/pricat.pdf
        /// </summary>
        static TSPRICAT BuildPriceCatalogue(string controlNumber)
        {
            var result = new TSPRICAT();

            //  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            = "PRICAT";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "96A";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

            //  Price/sales catalogue number PC32458
            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentmessagenamecoded_01 = "9";
            result.BGM.Documentmessagenumber_02 = "PC32458";
            result.BGM.Messagefunctioncoded_03  = "9";

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

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

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

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

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

            //  Price list is related to contract number 5622ABE
            rffLoop1.RFF = new RFF();
            rffLoop1.RFF.REFERENCE_01 = new C506();
            rffLoop1.RFF.REFERENCE_01.Referencequalifier_01 = "CT";
            rffLoop1.RFF.REFERENCE_01.Referencenumber_02    = "5622ABE";

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

            //  Contract date 10th of August 2002
            var dtmRff1 = new DTM();

            dtmRff1.DATETIMEPERIOD_01 = new C507();
            dtmRff1.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "171";
            dtmRff1.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020810";
            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_PRICAT>();

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

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

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

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

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

            //  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_PRICAT();

            //  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 NAD Groups
            nadLoop2.RFFLoop = new List <Loop_RFF_PRICAT>();

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

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

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

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

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

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

            //  Price list 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        = "8";

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

            //  Repeating PGI Groups
            result.PGILoop = new List <Loop_PGI_PRICAT>();

            //  Begin PGI Group
            var pgiLoop1 = new Loop_PGI_PRICAT();

            //  Product group containing no price group
            pgiLoop1.PGI = new PGI();
            pgiLoop1.PGI.Productgrouptypecoded_01 = "2";

            //  Repeating LIN PGI Groups
            pgiLoop1.LINLoop = new List <Loop_LIN_PRICAT>();

            //  Begin LIN PGI Group 1
            var linPgiLoop1 = new Loop_LIN_PRICAT();

            //  Line item 1, an addition, is identified by GTIN 5410738377131
            linPgiLoop1.LIN = new LIN();
            linPgiLoop1.LIN.Lineitemnumber_01 = "1";
            linPgiLoop1.LIN.Actionrequestnotificationcoded_02                  = "1";
            linPgiLoop1.LIN.ITEMNUMBERIDENTIFICATION_03                        = new C212();
            linPgiLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738377131";
            linPgiLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

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

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

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

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

            //  Current line item is a consumer unit
            var imdLin1 = new IMD();

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

            //  Product description
            var imdLin2 = new IMD();

            imdLin2.Itemdescriptiontypecoded_01           = "F";
            imdLin2.ITEMDESCRIPTION_03                    = new C273();
            imdLin2.ITEMDESCRIPTION_03.Itemdescription_04 = "HEALTHIEST CORN CRISPIES";
            imdLin2.ITEMDESCRIPTION_03.Itemdescription_05 = "BOX";
            linPgiLoop1.IMD.Add(imdLin2);

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

            //  The net weight of the consumer unit is 250 grms
            var mea = new MEA();

            mea.Measurementapplicationqualifier_01 = "PD";
            mea.MEASUREMENTDETAILS_02 = new C502();
            mea.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01    = "AAA";
            mea.MEASUREMENTDETAILS_02.Measurementsignificancecoded_02 = "4";
            mea.VALUERANGE_03 = new C174();
            mea.VALUERANGE_03.Measureunitqualifier_01 = "GRM";
            mea.VALUERANGE_03.Measurementvalue_02     = "250";
            linPgiLoop1.MEA.Add(mea);

            //  Repeating HAN
            linPgiLoop1.HAN = new List <HAN>();

            //  The product is foodstuffs
            var hanLin1 = new HAN();

            hanLin1.HANDLINGINSTRUCTIONS_01 = new C524();
            hanLin1.HANDLINGINSTRUCTIONS_01.Handlinginstructionscoded_01      = "EAT";
            hanLin1.HANDLINGINSTRUCTIONS_01.Codelistresponsibleagencycoded_03 = "9";
            linPgiLoop1.HAN.Add(hanLin1);

            //  Repeating TAX LIN Groups
            linPgiLoop1.TAXLoop = new List <Loop_TAX_PRICAT>();

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

            //  The product is subject to the standard rate of 21% VAT
            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 = "21";
            taxLin1.TAX.Dutytaxfeecategorycoded_06            = "S";

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

            //  Repeating PRI LIN Groups
            linPgiLoop1.PRILoop = new List <Loop_PRI_PRICAT_2>();

            //  Begin PRI LIN Group
            var priLinLoop1 = new Loop_PRI_PRICAT_2();

            //  The suggested retail information price, including allowances / charges and taxes, is 40
            priLinLoop1.PRI = new PRI();
            priLinLoop1.PRI.PRICEINFORMATION_01 = new C509();
            priLinLoop1.PRI.PRICEINFORMATION_01.Pricequalifier_01     = "AAE";
            priLinLoop1.PRI.PRICEINFORMATION_01.Price_02              = "40";
            priLinLoop1.PRI.PRICEINFORMATION_01.Pricetypecoded_03     = "CA";
            priLinLoop1.PRI.PRICEINFORMATION_01.Pricetypequalifier_04 = "SRP";

            //  End PRI LIN Group
            linPgiLoop1.PRILoop.Add(priLinLoop1);

            //  Repeating PAC LIN Groups
            linPgiLoop1.PACLoop = new List <Loop_PAC_PRICAT>();

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

            //  The consumer unit is packaged in a box
            pacLin1.PAC = new PAC();
            pacLin1.PAC.PACKAGETYPE_03 = new C202();
            pacLin1.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01 = "BX";

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

            //  The height of the box is 200 mm
            var meaPac1 = new MEA();

            meaPac1.Measurementapplicationqualifier_01 = "PD";
            meaPac1.MEASUREMENTDETAILS_02 = new C502();
            meaPac1.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01 = "HT";
            meaPac1.VALUERANGE_03 = new C174();
            meaPac1.VALUERANGE_03.Measureunitqualifier_01 = "MMT";
            meaPac1.VALUERANGE_03.Measurementvalue_02     = "200";
            pacLin1.MEA.Add(meaPac1);

            //  The length of the box is 80 mm
            var meaPac2 = new MEA();

            meaPac2.Measurementapplicationqualifier_01 = "PD";
            meaPac2.MEASUREMENTDETAILS_02 = new C502();
            meaPac2.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01 = "LN";
            meaPac2.VALUERANGE_03 = new C174();
            meaPac2.VALUERANGE_03.Measureunitqualifier_01 = "MMT";
            meaPac2.VALUERANGE_03.Measurementvalue_02     = "80";
            pacLin1.MEA.Add(meaPac2);

            //  The width of the box is 30 mm
            var meaPac3 = new MEA();

            meaPac3.Measurementapplicationqualifier_01 = "PD";
            meaPac3.MEASUREMENTDETAILS_02 = new C502();
            meaPac3.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01 = "WD";
            meaPac3.VALUERANGE_03 = new C174();
            meaPac3.VALUERANGE_03.Measureunitqualifier_01 = "MMT";
            meaPac3.VALUERANGE_03.Measurementvalue_02     = "30";
            pacLin1.MEA.Add(meaPac3);

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

            //  End LIN PGI Group 1
            pgiLoop1.LINLoop.Add(linPgiLoop1);

            //  Begin LIN PGI Group 2
            var linPgiLoop2 = new Loop_LIN_PRICAT();

            //  Line item 2, an addition, is identified by GTIN 5410738377117
            linPgiLoop2.LIN = new LIN();
            linPgiLoop2.LIN.Lineitemnumber_01 = "2";
            linPgiLoop2.LIN.Actionrequestnotificationcoded_02                  = "1";
            linPgiLoop2.LIN.ITEMNUMBERIDENTIFICATION_03                        = new C212();
            linPgiLoop2.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738377117";
            linPgiLoop2.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

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

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

            piaLin2.Productidfunctionqualifier_01                      = "1";
            piaLin2.ITEMNUMBERIDENTIFICATION_02                        = new C212();
            piaLin2.ITEMNUMBERIDENTIFICATION_02.Itemnumber_01          = "TU32555";
            piaLin2.ITEMNUMBERIDENTIFICATION_02.Itemnumbertypecoded_02 = "SA";
            linPgiLoop2.PIA.Add(piaLin2);

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

            //  Current line item is a trade unit
            var imdLin3 = new IMD();

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

            //  Product description
            var imdLin4 = new IMD();

            imdLin4.Itemdescriptiontypecoded_01           = "F";
            imdLin4.ITEMDESCRIPTION_03                    = new C273();
            imdLin4.ITEMDESCRIPTION_03.Itemdescription_04 = "CORN CRISPIES";
            imdLin4.ITEMDESCRIPTION_03.Itemdescription_05 = "CASE";
            linPgiLoop2.IMD.Add(imdLin4);

            //  Repeating HAN
            linPgiLoop2.HAN = new List <HAN>();

            //  The product is foodstuffs
            var hanLin2 = new HAN();

            hanLin2.HANDLINGINSTRUCTIONS_01 = new C524();
            hanLin2.HANDLINGINSTRUCTIONS_01.Handlinginstructionscoded_01      = "EAT";
            hanLin2.HANDLINGINSTRUCTIONS_01.Codelistresponsibleagencycoded_03 = "9";
            linPgiLoop2.HAN.Add(hanLin2);

            //  Repeating ALI
            linPgiLoop2.ALI = new List <ALI>();

            //  Country of origin is Belgium
            var aliLin1 = new ALI();

            aliLin1.Countryoforigincoded_01 = "BE";
            linPgiLoop2.ALI.Add(aliLin1);

            //  Repeating TAX LIN Groups
            linPgiLoop2.TAXLoop = new List <Loop_TAX_PRICAT>();

            //  Begin TAX LIN Group
            var taxLin2 = new Loop_TAX_PRICAT();

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

            //  End TAX LIN Group
            linPgiLoop2.TAXLoop.Add(taxLin2);

            //  Repeating PRI LIN Groups
            linPgiLoop2.PRILoop = new List <Loop_PRI_PRICAT_2>();

            //  Begin PRI LIN Group
            var priLinLoop2 = new Loop_PRI_PRICAT_2();

            //  The calculation gross price for the product is 500
            priLinLoop2.PRI = new PRI();
            priLinLoop2.PRI.PRICEINFORMATION_01 = new C509();
            priLinLoop2.PRI.PRICEINFORMATION_01.Pricequalifier_01 = "AAB";
            priLinLoop2.PRI.PRICEINFORMATION_01.Price_02          = "500";
            priLinLoop2.PRI.PRICEINFORMATION_01.Pricetypecoded_03 = "CA";

            //  Repeating ALC LIN Groups
            linPgiLoop2.ALCLoop = new List <Loop_ALC_PRICAT>();

            //  Begin ALC LIN Group
            var alcLin1 = new Loop_ALC_PRICAT();

            //  An allowance exists for this product
            alcLin1.ALC = new ALC();
            alcLin1.ALC.Allowanceorchargequalifier_01        = "A";
            alcLin1.ALC.Calculationsequenceindicatorcoded_04 = "1";

            //  PCD Group
            alcLin1.PCDLoop = new Loop_PCD_PRICAT();

            //  Allowance of 8%
            alcLin1.PCDLoop.PCD = new PCD();
            alcLin1.PCDLoop.PCD.PERCENTAGEDETAILS_01 = new C501();
            alcLin1.PCDLoop.PCD.PERCENTAGEDETAILS_01.Percentagequalifier_01 = "3";
            alcLin1.PCDLoop.PCD.PERCENTAGEDETAILS_01.Percentage_02          = "8";

            //  Is available on purchase of a minimum quantity of 48
            alcLin1.PCDLoop.RNG = new RNG();
            alcLin1.PCDLoop.RNG.Rangetypequalifier_01 = "1";
            alcLin1.PCDLoop.RNG.RANGE_02 = new C280();
            alcLin1.PCDLoop.RNG.RANGE_02.Measureunitqualifier_01 = "PCE";
            alcLin1.PCDLoop.RNG.RANGE_02.Rangeminimum_02         = "48";

            //  End ALC LIN Group
            linPgiLoop2.ALCLoop.Add(alcLin1);

            //  End PRI LIN Group
            linPgiLoop2.PRILoop.Add(priLinLoop2);

            //  Repeating PAC LIN Groups
            linPgiLoop2.PACLoop = new List <Loop_PAC_PRICAT>();

            //  Begin PAC LIN Group
            var pacLin2 = new Loop_PAC_PRICAT();

            //  The product is packaged in a carton
            pacLin2.PAC = new PAC();
            pacLin2.PAC.PACKAGETYPE_03 = new C202();
            pacLin2.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01 = "CT";

            //  End PAC LIN Group
            linPgiLoop2.PACLoop.Add(pacLin2);

            //  End LIN PGI Group 2
            pgiLoop1.LINLoop.Add(linPgiLoop2);

            //  Begin LIN PGI Group 3
            var linPgiLoop3 = new Loop_LIN_PRICAT();

            //  Line number 3, identified by GTIN 5410738377131, is a sub-line of line number 2
            linPgiLoop3.LIN = new LIN();
            linPgiLoop3.LIN.Lineitemnumber_01 = "3";
            linPgiLoop3.LIN.Actionrequestnotificationcoded_02                  = "1";
            linPgiLoop3.LIN.ITEMNUMBERIDENTIFICATION_03                        = new C212();
            linPgiLoop3.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738377131";
            linPgiLoop3.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";
            linPgiLoop3.LIN.SUBLINEINFORMATION_04 = new C829();
            linPgiLoop3.LIN.SUBLINEINFORMATION_04.Sublineindicatorcoded_01 = "1";
            linPgiLoop3.LIN.SUBLINEINFORMATION_04.Lineitemnumber_02        = "2";

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

            //  Number of consumer units in trade unit is 48
            var qtyLin1 = new QTY();

            qtyLin1.QUANTITYDETAILS_01 = new C186();
            qtyLin1.QUANTITYDETAILS_01.Quantityqualifier_01 = "45E";
            qtyLin1.QUANTITYDETAILS_01.Quantity_02          = "48";
            linPgiLoop3.QTY.Add(qtyLin1);

            //  End LIN PGI Group 3
            pgiLoop1.LINLoop.Add(linPgiLoop3);

            //  Begin LIN PGI Group 4
            var linPgiLoop4 = new Loop_LIN_PRICAT();

            //  Line item 4, an addition, is identified by GTIN 5410738251028
            linPgiLoop4.LIN = new LIN();
            linPgiLoop4.LIN.Lineitemnumber_01 = "4";
            linPgiLoop4.LIN.Actionrequestnotificationcoded_02                  = "1";
            linPgiLoop4.LIN.ITEMNUMBERIDENTIFICATION_03                        = new C212();
            linPgiLoop4.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738251028";
            linPgiLoop4.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

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

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

            piaLin3.Productidfunctionqualifier_01                      = "1";
            piaLin3.ITEMNUMBERIDENTIFICATION_02                        = new C212();
            piaLin3.ITEMNUMBERIDENTIFICATION_02.Itemnumber_01          = "PN32555";
            piaLin3.ITEMNUMBERIDENTIFICATION_02.Itemnumbertypecoded_02 = "SA";
            linPgiLoop4.PIA.Add(piaLin3);

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

            //  Product is a despatch unit
            var imdLin5 = new IMD();

            imdLin5.Itemdescriptiontypecoded_01 = "C";
            imdLin5.ITEMDESCRIPTION_03          = new C273();
            imdLin5.ITEMDESCRIPTION_03.Itemdescriptionidentification_01 = "DU";
            imdLin5.ITEMDESCRIPTION_03.Codelistqualifier_02             = "9";
            linPgiLoop4.IMD.Add(imdLin5);

            //  Product description
            var imdLin6 = new IMD();

            imdLin6.Itemdescriptiontypecoded_01           = "F";
            imdLin6.ITEMDESCRIPTION_03                    = new C273();
            imdLin6.ITEMDESCRIPTION_03.Itemdescription_04 = "CORN CRISPIES";
            imdLin6.ITEMDESCRIPTION_03.Itemdescription_05 = "PALLET";
            linPgiLoop4.IMD.Add(imdLin6);

            //  Repeating HAN
            linPgiLoop4.HAN = new List <HAN>();

            //  The product is foodstuffs
            var hanLin3 = new HAN();

            hanLin3.HANDLINGINSTRUCTIONS_01 = new C524();
            hanLin3.HANDLINGINSTRUCTIONS_01.Handlinginstructionscoded_01      = "EAT";
            hanLin3.HANDLINGINSTRUCTIONS_01.Codelistresponsibleagencycoded_03 = "9";
            linPgiLoop4.HAN.Add(hanLin3);

            //  The product is susceptible to frost damage
            var hanLin4 = new HAN();

            hanLin4.HANDLINGINSTRUCTIONS_01 = new C524();
            hanLin4.HANDLINGINSTRUCTIONS_01.Handlinginstructionscoded_01      = "FTD";
            hanLin4.HANDLINGINSTRUCTIONS_01.Codelistresponsibleagencycoded_03 = "9";
            linPgiLoop4.HAN.Add(hanLin4);

            //  Repeating TAX LIN Groups
            linPgiLoop4.TAXLoop = new List <Loop_TAX_PRICAT>();

            //  Begin TAX LIN Group
            var taxLin3 = new Loop_TAX_PRICAT();

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

            //  End TAX LIN Group
            linPgiLoop4.TAXLoop.Add(taxLin3);

            //  Repeating PRI LIN Groups
            linPgiLoop4.PRILoop = new List <Loop_PRI_PRICAT_2>();

            //  Begin PRI LIN Group
            var priLinLoop3 = new Loop_PRI_PRICAT_2();

            //  The calculation net price for the product is 24000
            priLinLoop3.PRI = new PRI();
            priLinLoop3.PRI.PRICEINFORMATION_01 = new C509();
            priLinLoop3.PRI.PRICEINFORMATION_01.Pricequalifier_01 = "AAA";
            priLinLoop3.PRI.PRICEINFORMATION_01.Price_02          = "24000";
            priLinLoop3.PRI.PRICEINFORMATION_01.Pricetypecoded_03 = "CA";

            //  End PRI LIN Group
            linPgiLoop4.PRILoop.Add(priLinLoop3);

            //  Repeating ALC LIN Groups
            linPgiLoop4.ALCLoop = new List <Loop_ALC_PRICAT>();

            //  Begin ALC LIN Group
            var alcLin2 = new Loop_ALC_PRICAT();

            //  An allowance exists for this product
            alcLin2.ALC = new ALC();
            alcLin2.ALC.Allowanceorchargequalifier_01        = "A";
            alcLin2.ALC.Calculationsequenceindicatorcoded_04 = "1";

            //  PCD Group
            alcLin2.PCDLoop = new Loop_PCD_PRICAT();

            //  Allowance of 10%
            alcLin2.PCDLoop.PCD = new PCD();
            alcLin2.PCDLoop.PCD.PERCENTAGEDETAILS_01 = new C501();
            alcLin2.PCDLoop.PCD.PERCENTAGEDETAILS_01.Percentagequalifier_01 = "1";
            alcLin2.PCDLoop.PCD.PERCENTAGEDETAILS_01.Percentage_02          = "10";

            //  Is available on purchases of a minimum quantity of 50
            alcLin2.PCDLoop.RNG = new RNG();
            alcLin2.PCDLoop.RNG.Rangetypequalifier_01 = "1";
            alcLin2.PCDLoop.RNG.RANGE_02 = new C280();
            alcLin2.PCDLoop.RNG.RANGE_02.Measureunitqualifier_01 = "PCE";
            alcLin2.PCDLoop.RNG.RANGE_02.Rangeminimum_02         = "50";

            //  End ALC LIN Group
            linPgiLoop4.ALCLoop.Add(alcLin2);

            //  Repeating PAC LIN Groups
            linPgiLoop4.PACLoop = new List <Loop_PAC_PRICAT>();

            //  Begin PAC LIN Group
            var pacLin3 = new Loop_PAC_PRICAT();

            //  The product is packaged on an ISO 1 pallet
            pacLin3.PAC = new PAC();
            pacLin3.PAC.PACKAGETYPE_03 = new C202();
            pacLin3.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01   = "201";
            pacLin3.PAC.PACKAGETYPE_03.Codelistresponsibleagencycoded_03 = "9";

            //  End PAC LIN Group
            linPgiLoop4.PACLoop.Add(pacLin3);

            //  End LIN PGI Group 4
            pgiLoop1.LINLoop.Add(linPgiLoop4);

            //  Begin LIN PGI Group 5
            var linPgiLoop5 = new Loop_LIN_PRICAT();

            //  Line number 5, identified by GTIN 5410738377117 , is a sub-line of line number 4
            linPgiLoop5.LIN = new LIN();
            linPgiLoop5.LIN.Lineitemnumber_01 = "5";
            linPgiLoop5.LIN.Actionrequestnotificationcoded_02                  = "1";
            linPgiLoop5.LIN.ITEMNUMBERIDENTIFICATION_03                        = new C212();
            linPgiLoop5.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738377117";
            linPgiLoop5.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";
            linPgiLoop5.LIN.SUBLINEINFORMATION_04 = new C829();
            linPgiLoop5.LIN.SUBLINEINFORMATION_04.Sublineindicatorcoded_01 = "1";
            linPgiLoop5.LIN.SUBLINEINFORMATION_04.Lineitemnumber_02        = "4";

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

            //  Number of traded units in despatch unit is 24
            var qtyLin2 = new QTY();

            qtyLin2.QUANTITYDETAILS_01 = new C186();
            qtyLin2.QUANTITYDETAILS_01.Quantityqualifier_01 = "45E";
            qtyLin2.QUANTITYDETAILS_01.Quantity_02          = "24";
            linPgiLoop5.QTY.Add(qtyLin2);

            //  End LIN PGI Group 5
            pgiLoop1.LINLoop.Add(linPgiLoop5);

            //  End PGI Group
            result.PGILoop.Add(pgiLoop1);

            return(result);
        }
        /// <summary>
        /// Build bayplan.
        /// Original from http://www.smdg.org/assets/assets/BAPLIE3.1.1-02.pdf?
        /// </summary>
        static TSBAPLIE BuildBayplan(string controlNumber)
        {
            var result = new TSBAPLIE();

            //  Message header (ref id = M-EX1/1)
            result.UNH = new UNH();
            result.UNH.MessageReferenceNumber_01                       = controlNumber.PadLeft(14, '0');
            result.UNH.MessageIdentifier_02                            = new S009();
            result.UNH.MessageIdentifier_02.MessageType_01             = "BAPLIE";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02    = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03    = "13B";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04  = "UN";
            result.UNH.MessageIdentifier_02.AssociationAssignedCode_05 = "SMDG31";

            //  Partial BAPLIE(code 659), loaded containers only(LOADONLY), final stage(code 38)
            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentnamecode_01 = "659";
            result.BGM.DOCUMENTMESSAGENAME_01.Codelistresponsibleagencycode_03 = "LOADONLY";
            result.BGM.DOCUMENTMESSAGEIDENTIFICATION_02 = new C106();
            result.BGM.DOCUMENTMESSAGEIDENTIFICATION_02.Documentidentifier_01 = "M-EX1/1";
            result.BGM.Responsetypecode_04 = "38";

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

            //  Date/time (UTC) when message has been prepared
            var dtm1 = new DTM();

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

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

            //  Begin NAD Group
            var nadLoop1 = new Loop_NAD_BAPLIE();

            //  Function of sender (terminal)
            nadLoop1.NAD = new NAD();
            nadLoop1.NAD.Partyfunctioncodequalifier_01 = "WZ";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyidentifier_01               = "HNE";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistidentificationcode_02    = "TERMINALS";
            nadLoop1.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycode_03 = "306";

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

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

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

            //  Discharge voyage number, vessel operator, vessel identification
            tdtLoop1.TDT = new TDT();
            tdtLoop1.TDT.Transportstagecodequalifier_01       = "20";
            tdtLoop1.TDT.Meansoftransportjourneyidentifier_02 = "123W45";
            tdtLoop1.TDT.CARRIER_05 = new C040();
            tdtLoop1.TDT.CARRIER_05.Carrieridentifier_01             = "HLC";
            tdtLoop1.TDT.CARRIER_05.Codelistidentificationcode_02    = "LINES";
            tdtLoop1.TDT.CARRIER_05.Codelistresponsibleagencycode_03 = "306";
            tdtLoop1.TDT.EXCESSTRANSPORTATIONINFORMATION_07          = new C401();
            tdtLoop1.TDT.EXCESSTRANSPORTATIONINFORMATION_07.Excesstransportationreasoncode_01          = "9354351";
            tdtLoop1.TDT.EXCESSTRANSPORTATIONINFORMATION_07.Excesstransportationresponsibilitycode_02  = "11";
            tdtLoop1.TDT.EXCESSTRANSPORTATIONINFORMATION_07.Customershipmentauthorisationidentifier_03 = "ANINA";

            //  Loading voyage number
            tdtLoop1.RFF = new RFF();
            tdtLoop1.RFF.REFERENCE_01 = new C506();
            tdtLoop1.RFF.REFERENCE_01.Referencecodequalifier_01 = "VON";
            tdtLoop1.RFF.REFERENCE_01.Referenceidentifier_02    = "123E38";

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

            //  Begin LOC TDT Group 1
            var locTdtLoop1 = new Loop_LOC_BAPLIE_2();

            //  Place of departure
            locTdtLoop1.LOC = new LOC();
            locTdtLoop1.LOC.Locationfunctioncodequalifier_01 = "5";
            locTdtLoop1.LOC.LOCATIONIDENTIFICATION_02        = new C517();
            locTdtLoop1.LOC.LOCATIONIDENTIFICATION_02.Locationidentifier_01 = "BEANR";

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

            //  Actual departure time
            var dtmLoc1 = new DTM();

            dtmLoc1.DATETIMEPERIOD_01 = new C507();
            dtmLoc1.DATETIMEPERIOD_01.Dateortimeorperiodfunctioncodequalifier_01 = "136";
            dtmLoc1.DATETIMEPERIOD_01.Dateortimeorperiodtext_02       = "201304301048";
            dtmLoc1.DATETIMEPERIOD_01.Dateortimeorperiodformatcode_03 = "203";
            locTdtLoop1.DTM.Add(dtmLoc1);

            //  End LOC TDT Group 1
            tdtLoop1.LOCLoop.Add(locTdtLoop1);

            //  Begin LOC TDT Group 2
            var locTdtLoop2 = new Loop_LOC_BAPLIE_2();

            //  Next port of call
            locTdtLoop2.LOC = new LOC();
            locTdtLoop2.LOC.Locationfunctioncodequalifier_01 = "61";
            locTdtLoop2.LOC.LOCATIONIDENTIFICATION_02        = new C517();
            locTdtLoop2.LOC.LOCATIONIDENTIFICATION_02.Locationidentifier_01 = "FRLEH";

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

            //  Estimated arrival time
            var dtmLoc2 = new DTM();

            dtmLoc2.DATETIMEPERIOD_01 = new C507();
            dtmLoc2.DATETIMEPERIOD_01.Dateortimeorperiodfunctioncodequalifier_01 = "178";
            dtmLoc2.DATETIMEPERIOD_01.Dateortimeorperiodtext_02       = "201305012100";
            dtmLoc2.DATETIMEPERIOD_01.Dateortimeorperiodformatcode_03 = "203";
            locTdtLoop2.DTM.Add(dtmLoc2);

            //  End LOC TDT Group 2
            tdtLoop1.LOCLoop.Add(locTdtLoop2);

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

            //  End of message header
            result.UNS = new UNS();
            result.UNS.Sectionidentification_01 = "D";

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

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

            //  Stowage location (used)
            locLoop1.LOC = new LOC();
            locLoop1.LOC.Locationfunctioncodequalifier_01 = "147";
            locLoop1.LOC.LOCATIONIDENTIFICATION_02        = new C517();
            locLoop1.LOC.LOCATIONIDENTIFICATION_02.Locationidentifier_01            = "0200688";
            locLoop1.LOC.LOCATIONIDENTIFICATION_02.Codelistidentificationcode_02    = "9711";
            locLoop1.LOC.LOCATIONIDENTIFICATION_02.Codelistresponsibleagencycode_03 = "5";

            //  Repeating EQD Groups
            locLoop1.EQDLoop = new List <Loop_EQD_BAPLIE>();

            //  Begin EQD Group
            var eqdLocLoop1 = new Loop_EQD_BAPLIE();

            //  40' open top container
            eqdLocLoop1.EQD = new EQD();
            eqdLocLoop1.EQD.Equipmenttypecodequalifier_01 = "CN";
            eqdLocLoop1.EQD.EQUIPMENTIDENTIFICATION_02    = new C237();
            eqdLocLoop1.EQD.EQUIPMENTIDENTIFICATION_02.Equipmentidentifier_01           = "SUDU1234569";
            eqdLocLoop1.EQD.EQUIPMENTIDENTIFICATION_02.Codelistidentificationcode_02    = "6346";
            eqdLocLoop1.EQD.EQUIPMENTIDENTIFICATION_02.Codelistresponsibleagencycode_03 = "5";
            eqdLocLoop1.EQD.EQUIPMENTSIZEANDTYPE_03 = new C224();
            eqdLocLoop1.EQD.EQUIPMENTSIZEANDTYPE_03.Equipmentsizeandtypedescriptioncode_01 = "42U0";
            eqdLocLoop1.EQD.EQUIPMENTSIZEANDTYPE_03.Codelistidentificationcode_02          = "6346";
            eqdLocLoop1.EQD.EQUIPMENTSIZEANDTYPE_03.Codelistresponsibleagencycode_03       = "5";
            eqdLocLoop1.EQD.Fulloremptyindicatorcode_06 = "5";

            //  Repeating NAD
            eqdLocLoop1.NAD = new List <NAD>();

            //  Container operator (HSD)
            var nadEqd1 = new NAD();

            nadEqd1.Partyfunctioncodequalifier_01 = "CF";
            nadEqd1.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadEqd1.PARTYIDENTIFICATIONDETAILS_02.Partyidentifier_01               = "HSD";
            nadEqd1.PARTYIDENTIFICATIONDETAILS_02.Codelistidentificationcode_02    = "LINES";
            nadEqd1.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycode_03 = "306";
            eqdLocLoop1.NAD.Add(nadEqd1);

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

            //  Gross weight (22.6 t)
            var meaEqd1 = new MEA();

            meaEqd1.Measurementpurposecodequalifier_01 = "AAE";
            meaEqd1.MEASUREMENTDETAILS_02 = new C502();
            meaEqd1.MEASUREMENTDETAILS_02.Measuredattributecode_01 = "AET";
            meaEqd1.VALUERANGE_03 = new C174();
            meaEqd1.VALUERANGE_03.Measurementunitcode_01 = "KGM";
            meaEqd1.VALUERANGE_03.Measure_02             = "22600";
            eqdLocLoop1.MEA.Add(meaEqd1);

            //  Repeating DIM
            eqdLocLoop1.DIM = new List <DIM>();

            //  Overheight (92 cm)
            var dimEqd1 = new DIM();

            dimEqd1.Dimensiontypecodequalifier_01 = "13";
            dimEqd1.DIMENSIONS_02 = new C211();
            dimEqd1.DIMENSIONS_02.Measurementunitcode_01 = "CMT";
            dimEqd1.DIMENSIONS_02.Heightmeasure_04       = "92";
            eqdLocLoop1.DIM.Add(dimEqd1);

            //  End EQD Group
            locLoop1.EQDLoop.Add(eqdLocLoop1);

            //  Control total
            locLoop1.CNT            = new CNT();
            locLoop1.CNT.CONTROL_01 = new C270();
            locLoop1.CNT.CONTROL_01.Controlqualifier_01 = "8";
            locLoop1.CNT.CONTROL_01.Controlvalue_02     = "1";

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

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

            //  Stowage location (blocked)
            locLoop2.LOC = new LOC();
            locLoop2.LOC.Locationfunctioncodequalifier_01 = "147";
            locLoop2.LOC.LOCATIONIDENTIFICATION_02        = new C517();
            locLoop2.LOC.LOCATIONIDENTIFICATION_02.Locationidentifier_01            = "0200690";
            locLoop2.LOC.LOCATIONIDENTIFICATION_02.Codelistidentificationcode_02    = "9711";
            locLoop2.LOC.LOCATIONIDENTIFICATION_02.Codelistresponsibleagencycode_03 = "5";

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

            //  Lost slot
            var ftxLoc1 = new FTX();

            ftxLoc1.Textsubjectcodequalifier_01 = "AGW";
            ftxLoc1.TEXTREFERENCE_03            = new C107();
            ftxLoc1.TEXTREFERENCE_03.Freetextdescriptioncode_01       = "LOST";
            ftxLoc1.TEXTREFERENCE_03.Codelistidentificationcode_02    = "STOWLOC";
            ftxLoc1.TEXTREFERENCE_03.Codelistresponsibleagencycode_03 = "306";
            locLoop2.FTX.Add(ftxLoc1);

            //  Equipment causing lost slot
            locLoop2.RFF = new RFF();
            locLoop2.RFF.REFERENCE_01 = new C506();
            locLoop2.RFF.REFERENCE_01.Referencecodequalifier_01 = "EQ";
            locLoop2.RFF.REFERENCE_01.Referenceidentifier_02    = "SUDU123459";

            //  Control total
            locLoop2.CNT            = new CNT();
            locLoop2.CNT.CONTROL_01 = new C270();
            locLoop2.CNT.CONTROL_01.Controlqualifier_01 = "8";
            locLoop2.CNT.CONTROL_01.Controlvalue_02     = "0";

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

            return(result);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Build despatch advice.
        /// Original from https://www.gs1.org/sites/default/files/docs/eancom/s3/desadv.pdf
        /// </summary>
        static TSDESADV BuildDespatchAdvice(string controlNumber)
        {
            var result = new TSDESADV();

            //  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            = "DESADV";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "D";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "96A";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

            //  Despatch advice number DES587441
            result.BGM = new BGM();
            result.BGM.DOCUMENTMESSAGENAME_01 = new C002();
            result.BGM.DOCUMENTMESSAGENAME_01.Documentmessagenamecoded_01 = "351";
            result.BGM.Documentmessagenumber_02 = "DES587441";
            result.BGM.Messagefunctioncoded_03  = "9";

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

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

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

            //  Despatch date 3rd April 2002
            var dtm2 = new DTM();

            dtm2.DATETIMEPERIOD_01 = new C507();
            dtm2.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "11";
            dtm2.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020403";
            dtm2.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            result.DTM.Add(dtm2);

            //  Due date to arrive on or after the 3rd of April
            var dtm3 = new DTM();

            dtm3.DATETIMEPERIOD_01 = new C507();
            dtm3.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "358";
            dtm3.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020403";
            dtm3.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";
            result.DTM.Add(dtm3);

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

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

            //  Consignment is related to order number 12332
            rffLoop1.RFF = new RFF();
            rffLoop1.RFF.REFERENCE_01 = new C506();
            rffLoop1.RFF.REFERENCE_01.Referencequalifier_01 = "ON";
            rffLoop1.RFF.REFERENCE_01.Referencenumber_02    = "12332";

            //  Date of order 25th of March 2002
            rffLoop1.DTM = new DTM();
            rffLoop1.DTM.DATETIMEPERIOD_01 = new C507();
            rffLoop1.DTM.DATETIMEPERIOD_01.Datetimeperiodqualifier_01       = "171";
            rffLoop1.DTM.DATETIMEPERIOD_01.Datetimeperiod_02                = "20020325";
            rffLoop1.DTM.DATETIMEPERIOD_01.Datetimeperiodformatqualifier_03 = "102";

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

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

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

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

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

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

            //  Supplier's VAT number 6558774
            rffNadLoop1.RFF = new RFF();
            rffNadLoop1.RFF.REFERENCE_01 = new C506();
            rffNadLoop1.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffNadLoop1.RFF.REFERENCE_01.Referencenumber_02    = "6558774";

            //  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_DESADV();

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

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

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

            //  Buyer's VAT number 7002474
            rffNadLoop2.RFF = new RFF();
            rffNadLoop2.RFF.REFERENCE_01 = new C506();
            rffNadLoop2.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffNadLoop2.RFF.REFERENCE_01.Referencenumber_02    = "7002474";

            //  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_DESADV();

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

            //  Repeating RFF Groups
            nadLoop3.RFFLoop = new List <Loop_RFF_DESADV>();

            //  Begin RFF Group 1
            var rffNadLoop3 = new Loop_RFF_DESADV();

            //  Delivery party's VAT number 800800
            rffNadLoop3.RFF = new RFF();
            rffNadLoop3.RFF.REFERENCE_01 = new C506();
            rffNadLoop3.RFF.REFERENCE_01.Referencequalifier_01 = "VA";
            rffNadLoop3.RFF.REFERENCE_01.Referencenumber_02    = "800800";

            //  End RFF Group 1
            nadLoop3.RFFLoop.Add(rffNadLoop3);

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

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

            //  Shipper identified by GLN 5412345000105
            nadLoop4.NAD = new NAD();
            nadLoop4.NAD.Partyqualifier_01             = "SH";
            nadLoop4.NAD.PARTYIDENTIFICATIONDETAILS_02 = new C082();
            nadLoop4.NAD.PARTYIDENTIFICATIONDETAILS_02.Partyididentification_01          = "5412345000105";
            nadLoop4.NAD.PARTYIDENTIFICATIONDETAILS_02.Codelistresponsibleagencycoded_03 = "9";

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

            //  Repeating CPS Groups
            result.CPSLoop = new List <Loop_CPS_DESADV>();

            //  Begin CPS Group 1
            var cpsLoop1 = new Loop_CPS_DESADV();

            //  First level description of consignment packing
            cpsLoop1.CPS = new CPS();
            cpsLoop1.CPS.Hierarchicalidnumber_01 = "1";

            //  Repeating PAC Groups
            cpsLoop1.PACLoop = new List <Loop_PAC_DESADV>();

            //  Begin PAC Group 1
            var pacLoop1 = new Loop_PAC_DESADV();

            //  Two ISO 1 pallets
            pacLoop1.PAC = new PAC();
            pacLoop1.PAC.Numberofpackages_01 = "2";
            pacLoop1.PAC.PACKAGETYPE_03      = new C202();
            pacLoop1.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01   = "201";
            pacLoop1.PAC.PACKAGETYPE_03.Codelistresponsibleagencycoded_03 = "9";

            //  End PAC Group 1
            cpsLoop1.PACLoop.Add(pacLoop1);

            //  End CPS Group 1
            result.CPSLoop.Add(cpsLoop1);

            //  Begin CPS Group 2
            var cpsLoop2 = new Loop_CPS_DESADV();

            //  Second level description of the first pallet
            cpsLoop2.CPS = new CPS();
            cpsLoop2.CPS.Hierarchicalidnumber_01 = "2";
            cpsLoop2.CPS.Hierarchicalparentid_02 = "1";

            //  Repeating PAC Groups
            cpsLoop2.PACLoop = new List <Loop_PAC_DESADV>();

            //  Begin PAC Group 1
            var pacLoop2 = new Loop_PAC_DESADV();

            //  One ISO 1 pallet
            pacLoop2.PAC = new PAC();
            pacLoop2.PAC.Numberofpackages_01 = "1";
            pacLoop2.PAC.PACKAGETYPE_03      = new C202();
            pacLoop2.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01   = "201";
            pacLoop2.PAC.PACKAGETYPE_03.Codelistresponsibleagencycoded_03 = "9";

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

            //  Pallet weight 263.2 Kilos including goods packages
            var mea1 = new MEA();

            mea1.Measurementapplicationqualifier_01 = "PD";
            mea1.MEASUREMENTDETAILS_02 = new C502();
            mea1.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01 = "AAB";
            mea1.VALUERANGE_03 = new C174();
            mea1.VALUERANGE_03.Measureunitqualifier_01 = "KGM";
            mea1.VALUERANGE_03.Measurementvalue_02     = "263.2";
            pacLoop2.MEA.Add(mea1);

            //  Pallet width 800 millimeters
            var mea2 = new MEA();

            mea2.Measurementapplicationqualifier_01 = "PD";
            mea2.MEASUREMENTDETAILS_02 = new C502();
            mea2.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01 = "WD";
            mea2.VALUERANGE_03 = new C174();
            mea2.VALUERANGE_03.Measureunitqualifier_01 = "MMT";
            mea2.VALUERANGE_03.Measurementvalue_02     = "800";
            pacLoop2.MEA.Add(mea2);

            //  Pallet length 1200 millimeters
            var mea3 = new MEA();

            mea3.Measurementapplicationqualifier_01 = "PD";
            mea3.MEASUREMENTDETAILS_02 = new C502();
            mea3.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01 = "LN";
            mea3.VALUERANGE_03 = new C174();
            mea3.VALUERANGE_03.Measureunitqualifier_01 = "MMT";
            mea3.VALUERANGE_03.Measurementvalue_02     = "1200";
            pacLoop2.MEA.Add(mea3);

            //  Repeating PCI Groups
            pacLoop2.PCILoop = new List <Loop_PCI_DESADV>();

            //  Begin PCI Group
            var pciLoop1 = new Loop_PCI_DESADV();

            //  Pallet marked with SSCC
            pciLoop1.PCI = new PCI();
            pciLoop1.PCI.Markinginstructionscoded_01 = "33E";

            //  Repeating GIN Groups
            pciLoop1.GINLoop = new List <Loop_GIN_DESADV>();

            //  Begin GIN Group
            var ginLoop1 = new Loop_GIN_DESADV();

            //  Serial Shipping Container Code 354107380000001051
            ginLoop1.GIN = new GIN();
            ginLoop1.GIN.Identitynumberqualifier_01 = "BJ";
            ginLoop1.GIN.IDENTITYNUMBERRANGE_02     = new C208();
            ginLoop1.GIN.IDENTITYNUMBERRANGE_02.Identitynumber_01 = "354107380000001051";

            //  End GIN Group
            pciLoop1.GINLoop.Add(ginLoop1);

            //  End PCI Group
            pacLoop2.PCILoop.Add(pciLoop1);

            //  End PAC Group 1
            cpsLoop2.PACLoop.Add(pacLoop2);

            //  Begin PAC Group 2
            var pacLoop3 = new Loop_PAC_DESADV();

            //  Twenty cartons
            pacLoop3.PAC = new PAC();
            pacLoop3.PAC.Numberofpackages_01 = "20";
            pacLoop3.PAC.PACKAGETYPE_03      = new C202();
            pacLoop3.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01 = "CT";

            //  End PAC Group 2
            cpsLoop2.PACLoop.Add(pacLoop3);

            //  Repeating LIN Groups
            cpsLoop2.LINLoop = new List <Loop_LIN_DESADV>();

            //  Begin LIN Group
            var linLoop1 = new Loop_LIN_DESADV();

            //  Product contained in this package is identified by GTIN 5410738000152
            linLoop1.LIN = new LIN();
            linLoop1.LIN.Lineitemnumber_01           = "1";
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03 = new C212();
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738000152";
            linLoop1.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

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

            //  Despatch quantity 20
            var qty1 = new QTY();

            qty1.QUANTITYDETAILS_01 = new C186();
            qty1.QUANTITYDETAILS_01.Quantityqualifier_01 = "12";
            qty1.QUANTITYDETAILS_01.Quantity_02          = "20";
            linLoop1.QTY.Add(qty1);

            //  End LIN Group
            cpsLoop2.LINLoop.Add(linLoop1);

            //  End CPS Group 2
            result.CPSLoop.Add(cpsLoop2);

            //  Begin CPS Group 3
            var cpsLoop3 = new Loop_CPS_DESADV();

            //  Second level description of the second pallet
            cpsLoop3.CPS = new CPS();
            cpsLoop3.CPS.Hierarchicalidnumber_01 = "3";
            cpsLoop3.CPS.Hierarchicalparentid_02 = "1";

            //  Repeating PAC Groups
            cpsLoop3.PACLoop = new List <Loop_PAC_DESADV>();

            //  Begin PAC Group 1
            var pacLoop4 = new Loop_PAC_DESADV();

            //  One ISO 1 pallet
            pacLoop4.PAC = new PAC();
            pacLoop4.PAC.Numberofpackages_01 = "1";
            pacLoop4.PAC.PACKAGETYPE_03      = new C202();
            pacLoop4.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01   = "201";
            pacLoop4.PAC.PACKAGETYPE_03.Codelistresponsibleagencycoded_03 = "9";

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

            //  Pallet weight 305.1 Kilos
            var mea4 = new MEA();

            mea4.Measurementapplicationqualifier_01 = "PD";
            mea4.MEASUREMENTDETAILS_02 = new C502();
            mea4.MEASUREMENTDETAILS_02.Measurementdimensioncoded_01 = "AAB";
            mea4.VALUERANGE_03 = new C174();
            mea4.VALUERANGE_03.Measureunitqualifier_01 = "KGM";
            mea4.VALUERANGE_03.Measurementvalue_02     = "305.1";
            pacLoop4.MEA.Add(mea4);

            //  Repeating PCI Groups
            pacLoop4.PCILoop = new List <Loop_PCI_DESADV>();

            //  Begin PCI Group
            var pciLoop2 = new Loop_PCI_DESADV();

            //  Pallet marked with SSCC
            pciLoop2.PCI = new PCI();
            pciLoop2.PCI.Markinginstructionscoded_01 = "33E";

            //  Repeating GIN Groups
            pciLoop2.GINLoop = new List <Loop_GIN_DESADV>();

            //  Begin GIN Group
            var ginLoop2 = new Loop_GIN_DESADV();

            //  Serial Shipping Container Code 354107380000001068
            ginLoop2.GIN = new GIN();
            ginLoop2.GIN.Identitynumberqualifier_01 = "BJ";
            ginLoop2.GIN.IDENTITYNUMBERRANGE_02     = new C208();
            ginLoop2.GIN.IDENTITYNUMBERRANGE_02.Identitynumber_01 = "354107380000001068";

            //  End GIN Group
            pciLoop2.GINLoop.Add(ginLoop2);

            //  End PCI Group
            pacLoop4.PCILoop.Add(pciLoop2);

            //  End PAC Group 1
            cpsLoop3.PACLoop.Add(pacLoop4);

            //  Begin PAC Group 2
            var pacLoop5 = new Loop_PAC_DESADV();

            //  Twenty cartons
            pacLoop5.PAC = new PAC();
            pacLoop5.PAC.Numberofpackages_01 = "20";
            pacLoop5.PAC.PACKAGETYPE_03      = new C202();
            pacLoop5.PAC.PACKAGETYPE_03.Typeofpackagesidentification_01 = "CT";

            //  End PAC Group 2
            cpsLoop3.PACLoop.Add(pacLoop5);

            //  Repeating LIN Groups
            cpsLoop3.LINLoop = new List <Loop_LIN_DESADV>();

            //  Begin LIN Group 1
            var linLoop2 = new Loop_LIN_DESADV();

            //  First product contained in this package is identified by GTIN 5410738000169
            linLoop2.LIN = new LIN();
            linLoop2.LIN.Lineitemnumber_01           = "2";
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03 = new C212();
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738000169";
            linLoop2.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

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

            // Despatch quantity 5
            var qty2 = new QTY();

            qty2.QUANTITYDETAILS_01 = new C186();
            qty2.QUANTITYDETAILS_01.Quantityqualifier_01 = "12";
            qty2.QUANTITYDETAILS_01.Quantity_02          = "5";
            linLoop2.QTY.Add(qty2);

            //  End LIN Group 1
            cpsLoop3.LINLoop.Add(linLoop2);

            //  Begin LIN Group 2
            var linLoop3 = new Loop_LIN_DESADV();

            //  Second product contained in this package is identified by GTIN 5410738000176
            linLoop3.LIN = new LIN();
            linLoop3.LIN.Lineitemnumber_01           = "3";
            linLoop3.LIN.ITEMNUMBERIDENTIFICATION_03 = new C212();
            linLoop3.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738000176";
            linLoop3.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

            linLoop3.QTY = new List <QTY>();

            // Despatch quantity 3
            var qty3 = new QTY();

            qty3.QUANTITYDETAILS_01 = new C186();
            qty3.QUANTITYDETAILS_01.Quantityqualifier_01 = "12";
            qty3.QUANTITYDETAILS_01.Quantity_02          = "3";
            linLoop3.QTY.Add(qty3);

            //  End LIN Group 2
            cpsLoop3.LINLoop.Add(linLoop3);

            //  Begin LIN Group 3
            var linLoop4 = new Loop_LIN_DESADV();

            //  Third product contained in this package is identified by GTIN 5410738000183
            linLoop4.LIN = new LIN();
            linLoop4.LIN.Lineitemnumber_01           = "4";
            linLoop4.LIN.ITEMNUMBERIDENTIFICATION_03 = new C212();
            linLoop4.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01          = "5410738000183";
            linLoop4.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumbertypecoded_02 = "SRV";

            linLoop4.QTY = new List <QTY>();

            // Despatch quantity 12
            var qty4 = new QTY();

            qty4.QUANTITYDETAILS_01 = new C186();
            qty4.QUANTITYDETAILS_01.Quantityqualifier_01 = "12";
            qty4.QUANTITYDETAILS_01.Quantity_02          = "12";
            linLoop4.QTY.Add(qty4);

            //  End LIN Group 3
            cpsLoop3.LINLoop.Add(linLoop4);

            //  End CPS Group 3
            result.CPSLoop.Add(cpsLoop3);

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

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

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

            return(result);
        }