Esempio n. 1
0
        /// <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);
        }
        /// <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);
        }
Esempio n. 3
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);
        }