//-----------------------------------------------------------------------------------------------------
        private void BtnTestClick(object sender, EventArgs e)
        {
            var strOut = @"D:\Temp\X12\214\GLO\Out";
            var strErr = @"D:\Temp\X12\214\GLO\Err";
            var strPrs = @"D:\Temp\X12\214\GLO\Prs";
            var strFilename = @"D:\Temp\X12\214\GLO\Inp\XUS_214GLO_S00010208_OOP_FMA_201508261622479030.xml";

            var fileStatus = new FileAnalysis();
            var fileProcessor = new FileProcessor(this.cboInstance.Text);

            fileProcessor.Func_CWO_XUS_SHP_X12_214_GLO(strFilename, strOut, strPrs, strErr);

            if (fileProcessor.FileStatus.Status)
            {
                this.txtMessage.AppendText(strFilename + "\t Output:" + fileProcessor.FileStatus.FileOutName);
                //fileProcessor.FileStatus = fileProcessor.Func_File_SendToCargowise(
                //this.strAdpUrl,
                //fileProcessor.FileStatus.FileOutName,
                //this.strAdpRcp,
                //this.strAdpSnd,
                //this.strAdpPwd,
                //this.txt300GLOOut.Text);
            }
            else
            {
                this.txtMessage.AppendText(strFilename + "\t Output:" + fileProcessor.FileStatus.FileErrName + "\n");
                this.txtMessage.AppendText(fileProcessor.FileStatus.ExcpMessage);
            }
        }
 //-----------------------------------------------------------------------------------------------------
 public FileAnalysis Func_X12_810_GLO_CWO_XMS_CIV(
     string filename,
     string errorOut,
     string validOut,
     string processOut)
 {
     this.FileStatus = new FileAnalysis();
     try
     {
         if (File.Exists(filename))
         {
             int j;
             DateTime dteInvDate;
             var strBN = string.Empty;
             var strBM = string.Empty;
             var strPO = string.Empty;
             var edi810 = Interchange.LoadFrom(File.OpenRead(filename));
             var ediInt = new XmlInterchange();
             for (var g = 0; g < edi810.Groups.Count; g++)
             {
                 ediInt.Version = "1";
                 ediInt.InterchangeInfo = new InterchangeInfo
                 {
                     Date = DateTime.Now,
                     XmlType = XmlType.LightWeight,
                     EDIOrganisation =
                     {
                         EDICode = "WALINTJFK",
                         OwnerCode = "WALINTJFK"
                     },
                     Source =
                         new InterchangeInfoSource
                         {
                             EnterpriseCode
                                 = "WLT",
                             CompanyCode =
                                 "JFK",
                             OriginServer =
                                 "JFK",
                             LoginName =
                                 "jerry.mabasa",
                             LoginUserEmailAddress
                                 =
                                 "*****@*****.**"
                         },
                     Target = {BranchCode = "JFK"}
                 };
                 ediInt.Payload = new XmlInterchangePayload {Invoices = new Invoices()};
                 for (var m = 0; m < edi810.Groups[g].Messages.Count; m++)
                 {
                     if (edi810.Groups[g].Messages[m].Context.Tag != "810")
                     {
                         this.FileStatus.ExcpMessage = string.Concat("Invalid 810: ", Path.GetFileName(filename));
                     }
                     else
                     {
                         var ediMsg = edi810.Groups[g].Messages[m].DeserializeItem<M_810>();
                         var ediInvH = new InvoiceHeader {InvoiceNumber = ediMsg.S_BIG.D_76_2};
                         var decInvAmnt = new decimal(0);
                         decimal.TryParse(ediMsg.S_TDS.D_610_1, out decInvAmnt);
                         ediInvH.InvoiceAmount.Value = decInvAmnt/new decimal(100);
                         ediInvH.InvoiceAmount.CurrencyCode = ediMsg.S_CUR.D_100_2;
                         string[] strArrays =
                         {
                             ediMsg.S_BIG.D_373_1.Substring(4, 2), "/",
                             ediMsg.S_BIG.D_373_1.Substring(6, 2), "/",
                             ediMsg.S_BIG.D_373_1.Substring(0, 4)
                         };
                         if (DateTime.TryParse(string.Concat(strArrays), out dteInvDate))
                         {
                             ediInvH.InvoiceDate = dteInvDate;
                         }
                         ediInvH.Consignor = new Organisation();
                         ediInvH.Consignee = new Organisation();
                         var clsOrgBuy = new Organisation();
                         var clsOrgSel = new Organisation();
                         for (j = 0; j < ediMsg.G_N1.Count; j++)
                         {
                             if (ediMsg.G_N1[j].S_N1.D_98_1.ToString() == "SF")
                             {
                                 ediInvH.Consignor.EDICode = ediMsg.G_N1[j].S_N1.D_67_4;
                                 ediInvH.Consignor.OwnerCode = ediMsg.G_N1[j].S_N1.D_67_4;
                                 var clsCnrAdd = new OrganisationDetailAddress();
                                 if (ediMsg.G_N1[j].S_N3.Count != 0)
                                 {
                                     clsCnrAdd.AddressLine1 = ediMsg.G_N1[j].S_N3[0].D_166_1;
                                     clsCnrAdd.AddressLine2 = ediMsg.G_N1[j].S_N3[0].D_166_2;
                                 }
                                 if (ediMsg.G_N1[j].S_N4 != null)
                                 {
                                     clsCnrAdd.CityOrSuburb = ediMsg.G_N1[j].S_N4.D_19_1;
                                 }
                                 ediInvH.Consignee.OrganisationDetails.Addresses.Add(clsCnrAdd);
                                 clsOrgSel = ediInvH.Consignor;
                             }
                             if (ediMsg.G_N1[j].S_N1.D_98_1.ToString() == "ST")
                             {
                                 ediInvH.Consignee.EDICode = ediMsg.G_N1[j].S_N1.D_67_4;
                                 ediInvH.Consignee.OwnerCode = ediMsg.G_N1[j].S_N1.D_67_4;
                                 ediInvH.Consignee.OrganisationDetails.Name = ediMsg.G_N1[j].S_N1.D_93_2;
                                 var clsCneAdd = new OrganisationDetailAddress();
                                 if (ediMsg.G_N1[j].S_N3.Count != 0)
                                 {
                                     if (ediMsg.G_N1[j].S_N3[0].D_166_1 != null)
                                     {
                                         clsCneAdd.AddressLine1 = ediMsg.G_N1[j].S_N3[0].D_166_1;
                                     }
                                     if (ediMsg.G_N1[j].S_N3[0].D_166_2 != null)
                                     {
                                         clsCneAdd.AddressLine2 = ediMsg.G_N1[j].S_N3[0].D_166_2;
                                     }
                                 }
                                 if (ediMsg.G_N1[j].S_N4 != null)
                                 {
                                     clsCneAdd.CityOrSuburb = ediMsg.G_N1[j].S_N4.D_19_1;
                                 }
                                 ediInvH.Consignee.OrganisationDetails.Addresses.Add(clsCneAdd);
                             }
                             if (ediMsg.G_N1[j].S_N1.D_98_1.ToString() == "BT")
                             {
                                 clsOrgBuy.EDICode = ediMsg.G_N1[j].S_N1.D_67_4;
                                 clsOrgBuy.OwnerCode = ediMsg.G_N1[j].S_N1.D_67_4;
                                 var clsBuyAdd = new OrganisationDetailAddress();
                                 if (ediMsg.G_N1[j].S_N3.Count != 0)
                                 {
                                     if (ediMsg.G_N1[j].S_N3[0].D_166_1 != null)
                                     {
                                         clsBuyAdd.AddressLine1 = ediMsg.G_N1[j].S_N3[0].D_166_1;
                                     }
                                     if (ediMsg.G_N1[j].S_N3[0].D_166_2 != null)
                                     {
                                         clsBuyAdd.AddressLine2 = ediMsg.G_N1[j].S_N3[0].D_166_2;
                                     }
                                 }
                                 if (ediMsg.G_N1[j].S_N4 != null)
                                 {
                                     clsBuyAdd.CityOrSuburb = ediMsg.G_N1[j].S_N4.D_19_1;
                                 }
                             }
                             if (ediMsg.G_N1[j].S_REF_2.Count > 0)
                             {
                                 for (var h = 0; h < ediMsg.G_N1[j].S_REF_2.Count; h++)
                                 {
                                     if (ediMsg.G_N1[j].S_REF_2[h].D_128_1.ToString() == "BN")
                                     {
                                         if (ediMsg.G_N1[j].S_REF_2[h].D_127_2 != null)
                                         {
                                             strBN = ediMsg.G_N1[j].S_REF_2[h].D_127_2;
                                         }
                                     }
                                     if (ediMsg.G_N1[j].S_REF_2[h].D_128_1.ToString() == "BM")
                                     {
                                         if (ediMsg.G_N1[j].S_REF_2[h].D_127_2 != null)
                                         {
                                             strBM = ediMsg.G_N1[j].S_REF_2[h].D_127_2;
                                         }
                                     }
                                 }
                             }
                         }
                         ediInvH.IsGroupInvoice = TrueFalse.@false;
                         ediInvH.Incoterm = ediMsg.S_FOB.D_335_5.ToString();
                         var decVol = new decimal(0);
                         ediInvH.Volume.Value = decVol;
                         ediInvH.Volume.DimensionType = "M3";
                         var decWgt = new decimal(0);
                         decimal.TryParse(ediMsg.S_CTT.D_81_3, out decWgt);
                         ediInvH.Weight.Value = decWgt;
                         ediInvH.Weight.DimensionType = ediMsg.S_CTT.D_355_4.ToString();
                         ediInvH.StandAloneInvoiceDirection = "EXP";
                         var clsInvRef = new InvoiceReference {Type = ediMsg.S_CAD_2.D_128_7.ToString()};
                         if (clsInvRef.Type == "BM")
                         {
                             clsInvRef.Type = "MB";
                         }
                         clsInvRef.Value = ediMsg.S_CAD_2.D_127_8;
                         ediInvH.References.Add(clsInvRef);
                         var clsPORef = new InvoiceReference {Type = "PO", Value = ediMsg.S_BIG.D_324_4};
                         ediInvH.References.Add(clsPORef);
                         strPO = clsPORef.Value;
                         for (j = 0; j < ediMsg.G_IT1.Count; j++)
                         {
                             var clsInvLine = new InvoiceLine
                             {
                                 InvoiceLineNumber = ediMsg.G_IT1[j].S_IT1.D_350_1
                             };
                             var decInvQty = new decimal(0);
                             decimal.TryParse(ediMsg.G_IT1[j].S_IT1.D_358_2, out decInvQty);
                             clsInvLine.InvoiceQty.Value = decInvQty;
                             clsInvLine.InvoiceQty.DimensionType = ediMsg.G_IT1[j].S_IT1.D_355_3.ToString();
                             if (clsInvLine.InvoiceQty.DimensionType == "CA")
                             {
                                 clsInvLine.InvoiceQty.DimensionType = "CAS";
                             }
                             if (clsInvLine.InvoiceQty.DimensionType == "EA")
                             {
                                 clsInvLine.InvoiceQty.DimensionType = "PCS";
                             }
                             var decLinPrc = new decimal(0);
                             decimal.TryParse(ediMsg.G_IT1[j].S_IT1.D_212_4, out decLinPrc);
                             clsInvLine.LinePrice.Value = decLinPrc*decInvQty;
                             if (ediMsg.G_IT1[j].S_IT1.D_234_7 != null)
                             {
                                 clsInvLine.ProductNumber = ediMsg.G_IT1[j].S_IT1.D_234_7;
                             }
                             clsInvLine.ProductDescription = ediMsg.G_IT1[j].S_IT1.D_234_11;
                             var decCusQty = new decimal(0);
                             decimal.TryParse(ediMsg.G_IT1[j].S_IT1.D_358_2, out decCusQty);
                             clsInvLine.CustomsInvoiceQty.Value = decCusQty;
                             clsInvLine.CustomsInvoiceQty.DimensionType =
                                 ediMsg.G_IT1[j].S_IT1.D_355_3.ToString();
                             if (ediMsg.G_IT1[j].S_IT1.D_235_12.ToString() == "CH")
                             {
                                 clsInvLine.LineClassification.OriginOfGoods = ediMsg.G_IT1[j].S_IT1.D_234_13;
                             }
                             if (ediMsg.G_IT1[j].S_IT1.D_235_14.ToString() == "HD")
                             {
                                 clsInvLine.LineClassification.TariffCode.Type = "HTS";
                             }
                             clsInvLine.LineClassification.TariffCode.Value = ediMsg.G_IT1[j].S_IT1.D_234_15;
                             var decNetWgt = new decimal(0);
                             decimal.TryParse(ediMsg.G_IT1[j].S_PO4.D_384_6, out decNetWgt);
                             clsInvLine.NetWeight.Value = decNetWgt;
                             clsInvLine.NetWeight.DimensionType = ediMsg.G_IT1[j].S_PO4.D_355_7.ToString();
                             clsInvLine.CustomText1 = strBN;
                             clsInvLine.CustomText2 = strBM;
                             clsInvLine.CustomText3 = strPO;
                             var clsUSInv = new USInvoice
                             {
                                 Organisations =
                                 {
                                     Buyer = clsOrgBuy,
                                     Seller = clsOrgSel
                                 }
                             };
                             ediInvH.CountryPayload.USInvoice = new USInvoice();
                             ediInvH.CountryPayload.USInvoice = clsUSInv;
                             clsInvLine.OrderNumber = clsPORef.Value;
                             ediInvH.InvoiceLines.Add(clsInvLine);
                         }
                         ediInt.Payload.Invoices.InvoiceHeader.Add(ediInvH);
                     }
                 }
             }
             ediInt.Serialize();
             if (
                 File.Exists(
                     string.Concat(validOut, "\\810_JNJ_", Path.GetFileNameWithoutExtension(filename), ".xml")))
             {
                 File.Delete(
                     string.Concat(validOut, "\\810_JNJ_", Path.GetFileNameWithoutExtension(filename), ".xml"));
             }
             ediInt.SaveToFile(
                 string.Concat(validOut, "\\810_JNJ_", Path.GetFileNameWithoutExtension(filename), ".xml"));
             if (File.Exists(string.Concat(processOut, "\\", Path.GetFileName(filename))))
             {
                 File.Delete(string.Concat(processOut, "\\", Path.GetFileName(filename)));
             }
             File.Move(filename, string.Concat(processOut, "\\", Path.GetFileName(filename)));
         }
     }
     catch (Exception exception)
     {
         this.FileStatus.ExcpMessage = exception.Message;
     }
     return this.FileStatus;
 }
        //-----------------------------------------------------------------------------------------------------
        public FileAnalysis Func_CWO_XUS_SHP_X12_310_GLO(
            string filename,
            string fileOut,
            string filePrs,
            string fileErr)
        {
            this.FileStatus = new FileAnalysis();
            if (File.Exists(filename))
            {
                var controlNum = this.Func_SQL_GetControlNumber();
                var doc = new XmlDocument();
                doc.Load(filename);
                XmlNode root = doc.DocumentElement;
                var nsmgr = new XmlNamespaceManager(doc.NameTable);
                nsmgr.AddNamespace("ns", "http://www.cargowise.com/Schemas/Universal/2011/11");
                var myInterchange = new MyINT(controlNum, "12", "3023254180", "ZZ", "FMXJ310", true);
                var myGroup = myInterchange.CreateGroup(controlNum, "IO", "3023254180", "FMXJ310");
                var myMessage = new X12_4010_310(controlNum);
                var statusCode = this.Func_XML_GetResultString(doc, nsmgr, @"//ns:ActionPurpose/ns:Code");
                if (statusCode == "INV")
                {
                    var invTerms = this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:ShipmentCollection/ns:Shipment/ns:PaymentMethod/ns:Code");
                    var invCode = new X12_ID_146();
                    invCode = invTerms == "PPD" ? X12_ID_146.PP : X12_ID_146.CC;
                    var invAmnt = this.Func_XML_GetResultString(doc, nsmgr, @"//ns:LocalTotal");
                    invAmnt = invAmnt.Substring(0, invAmnt.Length - 2).Replace(".", string.Empty);
                    myMessage.Add_B3(
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:Number"),
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:TransactionInfo/ns:Description"),
                        invCode,
                        this.Func_XML_GetResultDate(doc, nsmgr, @"//ns:TransactionDate"),
                        invAmnt,
                        "WINA",
                        this.Func_XML_GetResultDate(doc, nsmgr, @"//ns:DueDate"));
                    myMessage.Add_B2A(X12_ID_353.Item00, X12_ID_346.BN);
                    var refList =
                        doc.SelectNodes(
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type/ns:Code",
                            nsmgr);
                    if (refList != null && refList.Count > 0)
                    {
                        foreach (XmlNode refItem in refList)
                        {
                            switch (refItem.InnerText)
                            {
                                case "LID":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.OL,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='LID']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='LID']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;

                                case "BKG":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.MB,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='BKG']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='BKG']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;

                                case "UCR":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.SI,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='UCR']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='UCR']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;

                                case "CON":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.TS,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='CON']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='CON']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;

                                case "OAG":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.FN,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='OAG']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='OAG']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;
                            }
                        }
                    }

                    myMessage.Add_N9(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.BN,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:Shipment/ns:WayBillNumber"), "");

                    myMessage.Add_N9(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.FN,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:Shipment/ns:DataContext/ns:DataSourceCollection/ns:DataSource[ns:Type='ForwardingShipment']/ns:Key"),
                        "");

                    myMessage.Add_N9(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.X9,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:WayBillNumber"), "");

                    myMessage.Add_N9(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.IV,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:Number"), "");

                    myMessage.Add_N9(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_128.VR,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:DataProvider"), "");

                    var ordList =
                        doc.SelectNodes(
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:LocalProcessing/ns:OrderNumberCollection/ns:OrderNumber",
                            nsmgr);

                    if (ordList != null && ordList.Count > 0)
                    {
                        int intCnt = 1;

                        foreach (XmlNode ordItem in ordList)
                        {
                            myMessage.Add_N9(
                                EdiFabric.Definitions.X12_004010_310.X12_ID_128.PO,
                                this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:LocalProcessing/ns:OrderNumberCollection/ns:OrderNumber[" +
                                    intCnt.ToString() +
                                    "]/ns:OrderReference"), "");

                            intCnt += 1;
                        }
                    }

                    var transLeg = this.Func_XML_GetResultCount(
                        doc,
                        nsmgr,
                        @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg");
                    for (var i = 1; i <= transLeg; i++)
                    {
                        myMessage.Add_V1(
                            this.Func_XML_GetResultString(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=" + i
                                + "]/ns:VesselName"),
                            this.Func_XML_GetResultString(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=" + i
                                + "]/ns:VoyageFlightNo"),
                            this.Func_XML_GetResultString(
                                doc,
                                nsmgr,
                                @"//SubShipment/TransportLegCollection/TransportLeg[LegOrder=" + i
                                +
                                "]/Carrier/RegistrationNumberCollection/RegistrationNumber/Type[Code='CCC']/parent::RegistrationNumber/Value"));
                    }
                    var dtmR4R = new List<S_DTM>();
                    var estR = new S_DTM
                    {
                        D_374_1 = X12_ID_374.Item139,
                        D_373_2 =
                            this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:DateCollection/ns:Date[ns:Type='Departure']/ns:Value/parent::ns:Date[ns:IsEstimate='true']/ns:Value"),
                        D_337_3 =
                            this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:DateCollection/ns:Date[ns:Type='Departure']/ns:Value/parent::ns:Date[ns:IsEstimate='true']/ns:Value"),
                        D_623_4 = EdiFabric.Definitions.X12_004010_310.X12_ID_623.LT,
                        D_623_4Specified = true
                    };

                    if (estR.D_373_2 != string.Empty && estR.D_337_3 != string.Empty)
                    {
                        dtmR4R.Add(estR);
                    }

                    var actR = new S_DTM
                    {
                        D_374_1 = X12_ID_374.Item140,
                        D_373_2 =
                            this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:ActualDeparture"),
                        D_337_3 =
                            this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:ActualDeparture"),
                        D_623_4 = EdiFabric.Definitions.X12_004010_310.X12_ID_623.LT,
                        D_623_4Specified = true
                    };
                    if (actR.D_373_2 != string.Empty && actR.D_337_3 != string.Empty)
                    {
                        dtmR4R.Add(actR);
                    }

                    myMessage.Add_R4(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_115.R,
                        EdiFabric.Definitions.X12_004010_310.X12_ID_309.UN,
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:SubShipment/ns:PortOfOrigin/ns:Code"),
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:SubShipment/ns:PortOfOrigin/ns:Name"),
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:SubShipment/ns:PortOfOrigin/ns:Code")
                            .Substring(0, 2),
                        dtmR4R);

                    var dtmR4E = new List<S_DTM>();
                    var estE = new S_DTM
                    {
                        D_374_1 = X12_ID_374.Item139,
                        D_373_2 =
                            this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:DateCollection/ns:Date[ns:Type='Arrival']/ns:Value/parent::ns:Date[ns:IsEstimate='true']/ns:Value"),
                        D_337_3 =
                            this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:DateCollection/ns:Date[ns:Type='Arrival']/ns:Value/parent::ns:Date[ns:IsEstimate='true']/ns:Value"),
                        D_623_4 = EdiFabric.Definitions.X12_004010_310.X12_ID_623.LT,
                        D_623_4Specified = true
                    };
                    if (estE.D_373_2 != string.Empty && estE.D_337_3 != string.Empty)
                    {
                        dtmR4E.Add(estE);
                    }

                    var actE = new S_DTM
                    {
                        D_374_1 = X12_ID_374.Item140,
                        D_373_2 =
                            this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                + transLeg + "]/ns:ActualArrival"),
                        D_337_3 =
                            this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                + transLeg + "]/ns:ActualArrival"),
                        D_623_4 = EdiFabric.Definitions.X12_004010_310.X12_ID_623.LT,
                        D_623_4Specified = true
                    };
                    if (actE.D_373_2 != string.Empty && actE.D_337_3 != string.Empty)
                    {
                        dtmR4E.Add(actE);
                    }

                    myMessage.Add_R4(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_115.E,
                        EdiFabric.Definitions.X12_004010_310.X12_ID_309.UN,
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:SubShipment/ns:PortOfDestination/ns:Code"),
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:SubShipment/ns:PortOfDestination/ns:Name"),
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:SubShipment/ns:PortOfDestination/ns:Code")
                            .Substring(0, 2),
                        dtmR4E);

                    var dtmR4L = new List<S_DTM>();
                    var estL = new S_DTM
                    {
                        D_374_1 = X12_ID_374.Item139,
                        D_373_2 =
                            this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:EstimatedDeparture"),
                        D_337_3 =
                            this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:EstimatedDeparture"),
                        D_623_4 = EdiFabric.Definitions.X12_004010_310.X12_ID_623.LT,
                        D_623_4Specified = true
                    };
                    if (estL.D_373_2 != string.Empty && estL.D_337_3 != string.Empty)
                    {
                        dtmR4L.Add(estL);
                    }

                    var actL = new S_DTM
                    {
                        D_374_1 = X12_ID_374.Item140,
                        D_373_2 =
                            this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                + transLeg + "]/ns:ActualDeparture"),
                        D_337_3 =
                            this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                + transLeg + "]/ns:ActualDeparture"),
                        D_623_4 = EdiFabric.Definitions.X12_004010_310.X12_ID_623.LT,
                        D_623_4Specified = true
                    };
                    if (actL.D_373_2 != string.Empty && actL.D_337_3 != string.Empty)
                    {
                        dtmR4L.Add(actL);
                    }

                    myMessage.Add_R4(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_115.L,
                        EdiFabric.Definitions.X12_004010_310.X12_ID_309.UN,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Code"),
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Name"),
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Code")
                            .Substring(0, 2),
                        dtmR4L);

                    var dtmR4D = new List<S_DTM>();
                    var estD = new S_DTM
                    {
                        D_374_1 = X12_ID_374.Item139,
                        D_373_2 =
                            this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                + transLeg + "]/ns:EstimatedArrival"),
                        D_337_3 =
                            this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                + transLeg + "]/ns:EstimatedArrival"),
                        D_623_4 = EdiFabric.Definitions.X12_004010_310.X12_ID_623.LT,
                        D_623_4Specified = true
                    };
                    if (estD.D_373_2 != string.Empty && estD.D_337_3 != string.Empty)
                    {
                        dtmR4D.Add(estD);
                    }

                    var actD = new S_DTM
                    {
                        D_374_1 = X12_ID_374.Item140,
                        D_337_3 =
                            this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                + transLeg + "]/ns:ActualArrival"),
                        D_373_2 =
                            this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                + transLeg + "]/ns:ActualArrival"),
                        D_623_4 = EdiFabric.Definitions.X12_004010_310.X12_ID_623.LT,
                        D_623_4Specified = true
                    };
                    if (actD.D_373_2 != string.Empty && actD.D_337_3 != string.Empty)
                    {
                        dtmR4D.Add(actD);
                    }

                    myMessage.Add_R4(
                        EdiFabric.Definitions.X12_004010_310.X12_ID_115.D,
                        EdiFabric.Definitions.X12_004010_310.X12_ID_309.UN,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                            + transLeg + "]/ns:PortOfDischarge/ns:Code"),
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                            + transLeg + "]/ns:PortOfDischarge/ns:Name"),
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                            + transLeg + "]/ns:PortOfDischarge/ns:Code").Substring(0, 2),
                        dtmR4D);

                    myMessage.Add_LX(doc, nsmgr);
                    myMessage.Add_L3(
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:ShipmentCollection/ns:Shipment/ns:DocumentedWeight"),
                        invAmnt,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:ShipmentCollection/ns:Shipment/ns:DocumentedVolume"),
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:ShipmentCollection/ns:Shipment/ns:DocumentedChargeable"));
                    myGroup.AddMessage(myMessage.m310);
                    myInterchange.SaveEdi(
                        string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                    //this.FileStatus.HasError =
                    //    Func_File_Validate(
                    //        string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                    if (!this.FileStatus.HasError)
                    {
                        this.Func_SQL_SubmitControlNumber(
                            controlNum,
                            "310GLO",
                            string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                        Func_File_Move(filename, string.Concat(filePrs, "\\", Path.GetFileName(filename)));
                        this.FileStatus.Created = true;
                        this.FileStatus.Status = true;
                        this.FileStatus.FileOutName = string.Concat(
                            fileOut,
                            "\\",
                            Path.GetFileNameWithoutExtension(filename),
                            ".edi");
                    }
                    else
                    {
                        Func_File_Move(
                            string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"),
                            string.Concat(fileErr, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                        Func_File_Move(filename, string.Concat(fileErr, "\\", Path.GetFileName(filename)));
                        this.FileStatus.Created = false;
                        this.FileStatus.Status = false;
                        this.FileStatus.FileErrName = string.Concat(fileOut, "\\", Path.GetFileName(filename));
                    }
                }
            }
            return this.FileStatus;
        }
        //-----------------------------------------------------------------------------------------------------
        public FileAnalysis Func_CWO_XUS_SHP_X12_301_GLO(
            string filename,
            string fileOut,
            string filePrs,
            string fileErr,
            X12_ID_558 codeX12Id558)
        {
            this.FileStatus = new FileAnalysis();
            if (File.Exists(filename))
            {
                var controlNum = this.Func_SQL_GetControlNumber();
                var doc = new XmlDocument();
                doc.Load(filename);
                XmlNode root = doc.DocumentElement;
                var nsmgr = new XmlNamespaceManager(doc.NameTable);
                nsmgr.AddNamespace("ns", "http://www.cargowise.com/Schemas/Universal/2011/11");
                var bookingConfirmed =
                    DateTime.Parse(
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:EventType[ns:Code='ATC']/parent::ns:DataContext/ns:TriggerDate"));
                var myInterchange = new MyINT(controlNum, "12", "3023254180", "ZZ", "FMXJ301", true);
                var myGroup = myInterchange.CreateGroup(controlNum, "RO", "3023254180", "FMXJ301");
                var myMessage = new X12_4010_301(
                    controlNum,
                    this.Func_XML_GetResultString(doc, nsmgr, @"//ns:SubShipment/ns:WayBillNumber"),
                    bookingConfirmed);
                var svl =
                    this.Func_SQL_TranslateCWOTariffServiceLevel(
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:ServiceLevel/ns:Code")).Trim();
                var SvcLvl = X12_ID_375.Item1A;
                if (svl.Any())
                {
                    switch (svl)
                    {
                        case "DD":
                        {
                            SvcLvl = X12_ID_375.DD;
                        }
                            break;

                        case "DP":
                        {
                            SvcLvl = X12_ID_375.DP;
                        }
                            break;

                        case "PD":
                        {
                            SvcLvl = X12_ID_375.PD;
                        }
                            break;

                        case "PP":
                        {
                            SvcLvl = X12_ID_375.PP;
                        }
                            break;
                    }
                }
                myMessage.Add_Y3(
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"/ns:UniversalInterchange/ns:Body/ns:UniversalShipment/ns:Shipment/ns:BookingConfirmationReference"),
                    this.Func_XML_GetResultDate(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:DateCollection/ns:Date[ns:Type='Departure'][ns:IsEstimate='true']/ns:Value"),
                    this.Func_XML_GetResultDate(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:DateCollection/ns:Date[ns:Type='Arrival'][ns:IsEstimate='true']/ns:Value"),
                    this.Func_XML_GetResultDate(
                        doc,
                        nsmgr,
                        @"/ns:UniversalInterchange/ns:Body/ns:UniversalShipment/ns:Shipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder='1']/ns:FCLCutOff"),
                    this.Func_XML_GetResultTime(
                        doc,
                        nsmgr,
                        @"/ns:UniversalInterchange/ns:Body/ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container/ns:DepartureSlotDateTime"),
                    SvcLvl,
                    "WINA",
                    string.Empty,
                    string.Empty,
                    X12_ID_91.O,
                    X12_ID_623.LT);
                myMessage.Add_Y4(
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"/ns:UniversalInterchange/ns:Body/ns:UniversalShipment/ns:Shipment/ns:BookingConfirmationReference"),
                    this.Func_XML_GetResultDate(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:LocalProcessing/ns:EstimatedPickup"),
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:ContainerCollection/ns:Container/ns:ContainerType/ns:ISOCode"),
                    int.Parse(
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:ContainerCount")));
                var refList =
                    doc.SelectNodes(
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type/ns:Code",
                        nsmgr);
                if (refList != null && refList.Count > 0)
                {
                    foreach (XmlNode refItem in refList)
                    {
                        switch (refItem.InnerText)
                        {
                            case "LID":
                            {
                                myMessage.Add_N9(
                                    X12_ID_128.OL,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='LID']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='LID']/parent::ns:AdditionalReference/ns:ContextInformation"));
                            }
                                break;

                            case "BKG":
                            {
                                myMessage.Add_N9(
                                    X12_ID_128.MB,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='BKG']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='BKG']/parent::ns:AdditionalReference/ns:ContextInformation"));
                            }
                                break;

                            case "UCR":
                            {
                                myMessage.Add_N9(
                                    X12_ID_128.SI,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='UCR']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='UCR']/parent::ns:AdditionalReference/ns:ContextInformation"));
                            }
                                break;

                            case "CON":
                            {
                                myMessage.Add_N9(
                                    X12_ID_128.TS,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='CON']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='CON']/parent::ns:AdditionalReference/ns:ContextInformation"));
                            }
                                break;

                            case "OAG":
                            {
                                myMessage.Add_N9(
                                    X12_ID_128.FN,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='OAG']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='OAG']/parent::ns:AdditionalReference/ns:ContextInformation"));
                            }
                                break;
                        }
                    }
                }
                myMessage.Add_R4(
                    X12_ID_115.R,
                    X12_ID_309.UN,
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:PortOfOrigin/ns:Code"),
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:PortOfOrigin/ns:Name"),
                    string.Empty,
                    string.Empty);
                myMessage.Add_R4(
                    X12_ID_115.L,
                    X12_ID_309.UN,
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:PortOfLoading/ns:Code"),
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:PortOfLoading/ns:Name"),
                    string.Empty,
                    string.Empty);
                myMessage.Add_R4(
                    X12_ID_115.D,
                    X12_ID_309.UN,
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:PortOfDischarge/ns:Code"),
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:PortOfDischarge/ns:Name"),
                    string.Empty,
                    string.Empty);
                myMessage.Add_R4(
                    X12_ID_115.E,
                    X12_ID_309.UN,
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:PortOfDestination/ns:Code"),
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:PortOfDestination/ns:Name"),
                    string.Empty,
                    string.Empty);
                myMessage.Add_LX("1");
                myMessage.Add_V1(
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"/ns:UniversalInterchange/ns:Body/ns:UniversalShipment/ns:Shipment/ns:VesselName"),
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"/ns:UniversalInterchange/ns:Body/ns:UniversalShipment/ns:Shipment/ns:VoyageFlightNo"),
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:Carrier/ns:RegistrationNumberCollection/ns:RegistrationNumber/ns:Type[ns:Code='CCC']/parent::ns:RegistrationNumber/ns:Value"),
                    X12_ID_854.GC);
                myGroup.AddMessage(myMessage.m301);
                myInterchange.SaveEdi(string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                this.FileStatus.HasError =
                    Func_File_Validate(string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                if (!this.FileStatus.HasError)
                {
                    this.Func_SQL_SubmitControlNumber(
                        controlNum,
                        "301GLO",
                        string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                    Func_File_Move(filename, string.Concat(filePrs, "\\", Path.GetFileName(filename)));
                    this.FileStatus.Created = true;
                    this.FileStatus.Status = true;
                    this.FileStatus.FileOutName = string.Concat(
                        fileOut,
                        "\\",
                        Path.GetFileNameWithoutExtension(filename),
                        ".edi");
                }
                else
                {
                    Func_File_Move(
                        string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"),
                        string.Concat(fileErr, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                    Func_File_Move(filename, string.Concat(fileErr, "\\", Path.GetFileName(filename)));
                    this.FileStatus.Created = false;
                    this.FileStatus.Status = false;
                    this.FileStatus.FileErrName = string.Concat(fileOut, "\\", Path.GetFileName(filename));
                }
            }
            return this.FileStatus;
        }
        //-----------------------------------------------------------------------------------------------------
        public FileAnalysis Func_X12_300_GLO_CWO_XUS_SHP_01(
            string filename,
            string errorOut,
            string validOut,
            string processOut = "")
        {
            this.FileStatus = new FileAnalysis();
            if (File.Exists(filename))
            {
                var ediInt = Interchange.LoadFrom(File.OpenRead(filename));
                var xmlInt = new UniversalInterchange();
                if (ediInt.Groups != null)
                {
                    for (var g = 0; g < ediInt.Groups.Count; g++)
                    {
                        xmlInt.Header = new UniversalInterchangeHeader
                        {
                            SenderID = ediInt.Groups[g].Gs.D_142_2,
                            RecipientID = ediInt.Groups[g].Gs.D_124_3
                        };
                        xmlInt.Body = new UniversalInterchangeBody
                        {
                            UniversalShipment =
                                new UniversalShipmentData {version = "1.1"}
                        };
                        for (var m = 0; m < ediInt.Groups[g].Messages.Count; m++)
                        {
                            if (ediInt.Groups[g].Messages[m].Context.Tag == "300")
                            {
                                try
                                {
                                    var objMsg = ediInt.Groups[g].Messages[m].DeserializeItem<M_300>();
                                    var objShp = new Shipment
                                    {
                                        AdditionalTerms = string.Empty,
                                        AgentsReference = string.Empty,
                                        AWBServiceLevel =
                                            new CodeDescriptionPair
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        CartageWaybillNumber = string.Empty,
                                        CFSReference = string.Empty,
                                        FirstBuyerContact = string.Empty,
                                        Folio = string.Empty,
                                        OwnerRef = string.Empty,
                                        QuoteNumber = string.Empty,
                                        SecondBuyerContact = string.Empty,
                                        VesselName = string.Empty,
                                        VoyageFlightNo = string.Empty,
                                        WarehouseLocation = string.Empty,
                                        DataContext =
                                            new DataContext
                                            {
                                                DataSourceCollection =
                                                    new List<DataSource>
                                                    {
                                                        new DataSource
                                                        {
                                                            Type
                                                                =
                                                                "ForwardingBooking",
                                                            Key
                                                                =
                                                                string
                                                                    .Empty
                                                        }
                                                    },
                                                DataTargetCollection =
                                                    new List<DataTarget>
                                                    {
                                                        new DataTarget
                                                        {
                                                            Type
                                                                =
                                                                "ForwardingBooking"
                                                        }
                                                    },
                                                ActionPurpose =
                                                    new CodeDescriptionPair
                                                    {
                                                        Code
                                                            =
                                                            "APP",
                                                        Description
                                                            =
                                                            "As Per Payload"
                                                    },
                                                Company =
                                                    new Company
                                                    {
                                                        Code = "JFK",
                                                        Country =
                                                            new Country
                                                            {
                                                                Code
                                                                    =
                                                                    "US",
                                                                Name
                                                                    =
                                                                    "United States"
                                                            },
                                                        Name =
                                                            "Walker International Transportation LLC"
                                                    },
                                                DataProvider = "X12300GLO",
                                                EnterpriseID = "WLT",
                                                EventBranch =
                                                    new Branch
                                                    {
                                                        Code = "JFK",
                                                        Name =
                                                            "USJFK - Valley Stream, NY"
                                                    },
                                                EventDepartment =
                                                    new Department
                                                    {
                                                        Code =
                                                            "FES",
                                                        Name =
                                                            "Forwarding Export Sea"
                                                    },
                                                EventType =
                                                    new CodeDescriptionPair
                                                    {
                                                        Code
                                                            =
                                                            "ADD"
                                                    },
                                                EventUser =
                                                    new Staff
                                                    {
                                                        Code = "JSM",
                                                        Name =
                                                            "Jerry S. Mabasa"
                                                    },
                                                ServerID = "JNJ",
                                                CodesMappedToTarget = true,
                                                CodesMappedToTargetSpecified =
                                                    true
                                            },
                                        ActualChargeable = 0M,
                                        ActualChargeableSpecified = true,
                                        BookingConfirmationReference = string.Empty,
                                        IsBooking = true,
                                        IsBookingSpecified = true,
                                        ContainerCount = 0,
                                        ContainerCountSpecified = true,
                                        ContainerMode = new ContainerMode(),
                                        FreightRate = 0M,
                                        FreightRateSpecified = true,
                                        FreightRateCurrency =
                                            new Currency
                                            {
                                                Code = "USD",
                                                Description = "United States Dollar"
                                            },
                                        GoodsDescription = string.Empty,
                                        GoodsValue = 0M,
                                        GoodsValueCurrency =
                                            new Currency
                                            {
                                                Code = "USD",
                                                Description = "United States Dollar"
                                            },
                                        HBLAWBChargesDisplay =
                                            new CodeDescriptionPair
                                            {
                                                Code = "SHW",
                                                Description =
                                                    "Show Collect Charges"
                                            },
                                        InsuranceValue = 0M,
                                        InsuranceValueCurrency =
                                            new Currency
                                            {
                                                Code = "USD",
                                                Description = "United States Dollar"
                                            },
                                        InterimReceiptNumber = string.Empty,
                                        IsDirectBooking = false,
                                        IsForwardRegistered = false,
                                        IsNeutralMaster = new IsNeutralMaster {Value = false},
                                        JobCosting =
                                            new ShipmentJobCosting
                                            {
                                                Branch =
                                                    new Branch
                                                    {
                                                        Code =
                                                            "JFK",
                                                        Name =
                                                            "USJFK - Valley Stream, NY"
                                                    },
                                                Currency =
                                                    new Currency
                                                    {
                                                        Code
                                                            =
                                                            "USD",
                                                        Description
                                                            =
                                                            "United States Dollar"
                                                    },
                                                Department =
                                                    new Department
                                                    {
                                                        Code
                                                            =
                                                            "FES",
                                                        Name
                                                            =
                                                            "Forwarding Export Sea"
                                                    },
                                                HomeBranch =
                                                    new Branch
                                                    {
                                                        Code =
                                                            "JFK",
                                                        Name =
                                                            "USJFK - Valley Stream, NY"
                                                    },
                                                OperationsStaff =
                                                    new Staff
                                                    {
                                                        Code =
                                                            "JSM"
                                                    },
                                                AccrualNotRecognized = 0M,
                                                AccrualNotRecognizedSpecified
                                                    = true,
                                                AccrualRecognized = 0M,
                                                AccrualRecognizedSpecified
                                                    = true,
                                                AgentRevenue = 0M,
                                                AgentRevenueSpecified =
                                                    true,
                                                LocalClientRevenue = 0M,
                                                LocalClientRevenueSpecified
                                                    = true,
                                                OtherDebtorRevenue = 0M,
                                                OtherDebtorRevenueSpecified
                                                    = true,
                                                SalesStaff =
                                                    new Staff
                                                    {
                                                        Code =
                                                            "JSM",
                                                        Name =
                                                            "Jerry S. Mabasa"
                                                    },
                                                TotalAccrual = 0M,
                                                TotalAccrualSpecified =
                                                    true,
                                                TotalCost = 0M,
                                                TotalCostSpecified = true,
                                                TotalJobProfit = 0M,
                                                TotalJobProfitSpecified =
                                                    true,
                                                TotalRevenue = 0M,
                                                TotalRevenueSpecified =
                                                    true,
                                                TotalWIP = 0M,
                                                TotalWIPSpecified = true,
                                                WIPNotRecognized = 0M,
                                                WIPNotRecognizedSpecified
                                                    = true,
                                                WIPRecognized = 0M,
                                                WIPRecognizedSpecified =
                                                    true,
                                                ChargeLineCollection =
                                                    new List
                                                        <
                                                            ShipmentJobCostingChargeLine
                                                            >()
                                            },
                                        OuterPacks = 0,
                                        OuterPacksSpecified = true,
                                        OuterPacksPackageType =
                                            new PackageType
                                            {
                                                Code = "PCS",
                                                Description = "Pieces"
                                            },
                                        PackingOrder = 0,
                                        ReleaseType =
                                            new CodeDescriptionPair
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        ServiceLevel =
                                            new ServiceLevel
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        ShipmentIncoTerm =
                                            new IncoTerm
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        ShippedOnBoard =
                                            new CodeDescriptionPair
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        TotalVolume = 0M,
                                        TotalVolumeSpecified = true,
                                        TotalVolumeUnit =
                                            new UnitOfVolume
                                            {
                                                Code = "M3",
                                                Description = "Cubic Meters"
                                            },
                                        TotalWeight = 0M,
                                        TotalWeightUnit =
                                            new UnitOfWeight
                                            {
                                                Code = "KG",
                                                Description = "Kilograms"
                                            },
                                        TotalWeightSpecified = true,
                                        TransportMode =
                                            new CodeDescriptionPair
                                            {
                                                Code = "SEA",
                                                Description =
                                                    "Sea Freight"
                                            },
                                        WayBillNumber = string.Empty,
                                        WayBillType =
                                            new WayBillType
                                            {
                                                Code = "HWB",
                                                Description = "House Waybill"
                                            },
                                        LocalProcessing =
                                            new ShipmentLocalProcessing
                                            {
                                                DeliveryRequiredBy =
                                                    string.Empty,
                                                EstimatedDelivery =
                                                    string.Empty,
                                                EstimatedPickup =
                                                    string.Empty,
                                                FCLDeliveryEquipmentNeeded
                                                    =
                                                    new CodeDescriptionPair
                                                    {
                                                        Code
                                                            =
                                                            "WUP",
                                                        Description
                                                            =
                                                            "Wait for Pack/Unpack"
                                                    },
                                                FCLPickupEquipmentNeeded
                                                    =
                                                    new CodeDescriptionPair
                                                    {
                                                        Code
                                                            =
                                                            "WUP",
                                                        Description
                                                            =
                                                            "Wait for Pack/Unpack"
                                                    },
                                                InsuranceRequired =
                                                    false,
                                                PickupRequiredBy =
                                                    string.Empty,
                                                OrderNumberCollection
                                                    =
                                                    new List
                                                        <
                                                            ShipmentLocalProcessingOrderNumber
                                                            >()
                                            },
                                        ContainerCollection = new ShipmentContainerCollection(),
                                        DateCollection = new List<Date>(),
                                        OrganizationAddressCollection =
                                            new List<OrganizationAddress>(),
                                        NoteCollection = new List<Note>()
                                    };
                                    if (objMsg.S_Y1.D_375_8Specified)
                                    {
                                        objShp.ServiceLevel.Code =
                                            this.Func_SQL_TranslateX12TariffServiceLevel(objMsg.S_Y1.D_375_8.ToString());
                                    }
                                    if ((objMsg.S_B1.D_145_2 != null) || (objMsg.S_B1.D_145_2 != string.Empty))
                                    {
                                        objShp.WayBillNumber = objMsg.S_B1.D_145_2;
                                        objShp.DataContext.DataSourceCollection[0].Key = objMsg.S_B1.D_145_2;
                                    }
                                    var cntCount = 0;
                                    for (var y = 0; y < objMsg.G_Y2.Count; y++)
                                    {
                                        int value;
                                        int.TryParse(objMsg.G_Y2[y].S_Y2.D_95_1, out value);
                                        cntCount += value;
                                    }
                                    objShp.ContainerCount = cntCount;
                                    if (objShp.ContainerCount > 0)
                                    {
                                        objShp.ContainerMode.Code = "FCL";
                                        objShp.ContainerMode.Description = "Full Container Load";
                                    }
                                    else
                                    {
                                        objShp.ContainerMode.Code = "LCL";
                                        objShp.ContainerMode.Description = "Less Container Load";
                                    }
                                    int cntPgk;
                                    int.TryParse(objMsg.G_LX[0].S_L0.D_80_8, out cntPgk);
                                    objShp.OuterPacks = cntPgk;
                                    if (objMsg.G_LX[0].S_L0.D_211_14Specified)
                                    {
                                        objShp.OuterPacksPackageType.Code = objMsg.G_LX[0].S_L0.D_211_14.ToString();
                                        objShp.OuterPacksSpecified = true;
                                    }
                                    else
                                    {
                                        objShp.OuterPacksPackageType.Code = string.Empty;
                                        objShp.OuterPacksSpecified = false;
                                    }
                                    for (var r = 0; r < objMsg.G_R4.Count; r++)
                                    {
                                        switch (objMsg.G_R4[r].S_R4.D_115_1)
                                        {
                                            case EdiFabric.Definitions.X12_004010_300.X12_ID_115.D:
                                            {
                                                objShp.PortOfDischarge = new UNLOCO();
                                                if (objMsg.G_R4[r].S_R4.D_309_2Specified)
                                                {
                                                    if (objMsg.G_R4[r].S_R4.D_309_2
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_309.AC)
                                                    {
                                                        objShp.PortOfDischarge.Code =
                                                            this.Func_SQL_GetPortCodeFromCityName(
                                                                objMsg.G_R4[r].S_R4.D_310_3,
                                                                objMsg.G_R4[r].S_R4.D_156_8,
                                                                objMsg.G_R4[r].S_R4.D_26_5);
                                                        objShp.PortOfDischarge.Name =
                                                            this.Func_SQL_GetPortNameFromCityName(
                                                                objMsg.G_R4[r].S_R4.D_310_3,
                                                                objMsg.G_R4[r].S_R4.D_156_8,
                                                                objMsg.G_R4[r].S_R4.D_26_5);
                                                    }
                                                }
                                                if (objMsg.G_R4[r].S_R4.D_309_2Specified)
                                                {
                                                    if (objMsg.G_R4[r].S_R4.D_309_2
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_309.UN)
                                                    {
                                                        objShp.PortOfDischarge.Code =
                                                            objMsg.G_R4[r].S_R4.D_310_3.Replace(" ", string.Empty);
                                                        objShp.PortOfDischarge.Name = objMsg.G_R4[r].S_R4.D_114_4;
                                                    }
                                                }
                                                foreach (var t in objMsg.G_R4[r].S_DTM)
                                                {
                                                    if (t.D_374_1
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_374.Item371)
                                                    {
                                                        var arv = new Date
                                                        {
                                                            Type = DateType.Arrival,
                                                            Value =
                                                                this.Func_CON_ToISODate_STR(
                                                                    t.D_373_2,
                                                                    t.D_337_3),
                                                            IsEstimate = true,
                                                            IsEstimateSpecified = true
                                                        };
                                                        objShp.DateCollection.Add(arv);
                                                    }
                                                }
                                            }
                                                break;

                                            case EdiFabric.Definitions.X12_004010_300.X12_ID_115.J:
                                            case EdiFabric.Definitions.X12_004010_300.X12_ID_115.L:
                                            {
                                                objShp.PortOfLoading = new UNLOCO();
                                                if (objMsg.G_R4[r].S_R4.D_309_2Specified)
                                                {
                                                    if (objMsg.G_R4[r].S_R4.D_309_2
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_309.AC)
                                                    {
                                                        objShp.PortOfLoading.Code =
                                                            this.Func_SQL_GetPortCodeFromCityName(
                                                                objMsg.G_R4[r].S_R4.D_310_3,
                                                                objMsg.G_R4[r].S_R4.D_156_8,
                                                                objMsg.G_R4[r].S_R4.D_26_5);
                                                        objShp.PortOfLoading.Name =
                                                            this.Func_SQL_GetPortNameFromCityName(
                                                                objMsg.G_R4[r].S_R4.D_310_3,
                                                                objMsg.G_R4[r].S_R4.D_156_8,
                                                                objMsg.G_R4[r].S_R4.D_26_5);
                                                    }
                                                }
                                                if (objMsg.G_R4[r].S_R4.D_309_2Specified)
                                                {
                                                    if (objMsg.G_R4[r].S_R4.D_309_2
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_309.UN)
                                                    {
                                                        objShp.PortOfLoading.Code =
                                                            objMsg.G_R4[r].S_R4.D_310_3.Replace(" ", string.Empty);
                                                        objShp.PortOfLoading.Name = objMsg.G_R4[r].S_R4.D_114_4;
                                                    }
                                                }
                                                foreach (var t in objMsg.G_R4[r].S_DTM)
                                                {
                                                    if (t.D_374_1
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_374.Item010)
                                                    {
                                                        var dep = new Date
                                                        {
                                                            Type = DateType.Departure,
                                                            Value =
                                                                this.Func_CON_ToISODate_STR(
                                                                    t.D_373_2,
                                                                    t.D_337_3),
                                                            IsEstimate = true,
                                                            IsEstimateSpecified = true
                                                        };
                                                        objShp.DateCollection.Add(dep);
                                                    }
                                                }
                                            }
                                                break;

                                            case EdiFabric.Definitions.X12_004010_300.X12_ID_115.R:
                                            {
                                                objShp.PortOfOrigin = new UNLOCO();
                                                if (objMsg.G_R4[r].S_R4.D_309_2Specified)
                                                {
                                                    if (objMsg.G_R4[r].S_R4.D_309_2
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_309.AC)
                                                    {
                                                        objShp.PortOfOrigin.Code =
                                                            this.Func_SQL_GetPortCodeFromCityName(
                                                                objMsg.G_R4[r].S_R4.D_310_3,
                                                                objMsg.G_R4[r].S_R4.D_156_8,
                                                                objMsg.G_R4[r].S_R4.D_26_5);
                                                        objShp.PortOfOrigin.Name =
                                                            this.Func_SQL_GetPortNameFromCityName(
                                                                objMsg.G_R4[r].S_R4.D_310_3,
                                                                objMsg.G_R4[r].S_R4.D_156_8,
                                                                objMsg.G_R4[r].S_R4.D_26_5);
                                                    }
                                                }
                                                if (objMsg.G_R4[r].S_R4.D_309_2Specified)
                                                {
                                                    if (objMsg.G_R4[r].S_R4.D_309_2
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_309.UN)
                                                    {
                                                        objShp.PortOfOrigin.Code =
                                                            objMsg.G_R4[r].S_R4.D_310_3.Replace(" ", string.Empty);
                                                        objShp.PortOfOrigin.Name = objMsg.G_R4[r].S_R4.D_114_4;
                                                    }
                                                }
                                                foreach (var t in objMsg.G_R4[r].S_DTM)
                                                {
                                                    if (t.D_374_1
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_374.Item118)
                                                    {
                                                        objShp.LocalProcessing.EstimatedPickup =
                                                            this.Func_CON_ToISODate_STR(t.D_373_2, t.D_337_3);
                                                        objShp.LocalProcessing.PickupRequiredBy =
                                                            this.Func_CON_ToISODate_STR(t.D_373_2, t.D_337_3);
                                                        var pic = new Date
                                                        {
                                                            Type = DateType.Pickup,
                                                            Value =
                                                                this.Func_CON_ToISODate_STR(
                                                                    t.D_373_2,
                                                                    t.D_337_3),
                                                            IsEstimate = true,
                                                            IsEstimateSpecified = true
                                                        };
                                                        objShp.DateCollection.Add(pic);
                                                    }
                                                }
                                            }
                                                break;

                                            case EdiFabric.Definitions.X12_004010_300.X12_ID_115.E:
                                            {
                                                objShp.PortOfDestination = new UNLOCO();
                                                if (objMsg.G_R4[r].S_R4.D_309_2Specified)
                                                {
                                                    if (objMsg.G_R4[r].S_R4.D_309_2
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_309.AC)
                                                    {
                                                        objShp.PortOfDestination.Code =
                                                            this.Func_SQL_GetPortCodeFromCityName(
                                                                objMsg.G_R4[r].S_R4.D_310_3,
                                                                objMsg.G_R4[r].S_R4.D_156_8,
                                                                objMsg.G_R4[r].S_R4.D_26_5);
                                                        objShp.PortOfDestination.Name =
                                                            this.Func_SQL_GetPortNameFromCityName(
                                                                objMsg.G_R4[r].S_R4.D_310_3,
                                                                objMsg.G_R4[r].S_R4.D_156_8,
                                                                objMsg.G_R4[r].S_R4.D_26_5);
                                                    }
                                                }
                                                if (objMsg.G_R4[r].S_R4.D_309_2Specified)
                                                {
                                                    if (objMsg.G_R4[r].S_R4.D_309_2
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_309.UN)
                                                    {
                                                        objShp.PortOfDestination.Code =
                                                            objMsg.G_R4[r].S_R4.D_310_3.Replace(" ", string.Empty);
                                                        objShp.PortOfDestination.Name = objMsg.G_R4[r].S_R4.D_114_4;
                                                    }
                                                }
                                                foreach (var t in objMsg.G_R4[r].S_DTM)
                                                {
                                                    if (t.D_374_1
                                                        == EdiFabric.Definitions.X12_004010_300.X12_ID_374.Item074)
                                                    {
                                                        objShp.LocalProcessing.DeliveryRequiredBy =
                                                            this.Func_CON_ToISODate_STR(t.D_373_2, t.D_337_3);
                                                        objShp.LocalProcessing.EstimatedDelivery =
                                                            this.Func_CON_ToISODate_STR(t.D_373_2, t.D_337_3);
                                                        var dlv = new Date
                                                        {
                                                            Type = DateType.Delivery,
                                                            Value =
                                                                this.Func_CON_ToISODate_STR(
                                                                    t.D_373_2,
                                                                    t.D_337_3),
                                                            IsEstimate = true,
                                                            IsEstimateSpecified = true
                                                        };
                                                        objShp.DateCollection.Add(dlv);
                                                        var dlvR = new Date
                                                        {
                                                            Type = DateType.DeliveryRequiredBy,
                                                            Value =
                                                                this.Func_CON_ToISODate_STR(
                                                                    t.D_373_2,
                                                                    t.D_337_3),
                                                            IsEstimate = true,
                                                            IsEstimateSpecified = true
                                                        };
                                                        objShp.DateCollection.Add(dlvR);
                                                    }
                                                }
                                            }
                                                break;
                                        }
                                    }
                                    for (var n9 = 0; n9 < objMsg.S_N9.Count; n9++)
                                    {
                                        var str = objMsg.S_N9[n9].D_128_1.ToString();
                                        if (str != string.Empty)
                                        {
                                            switch (str)
                                            {
                                                case "PO":
                                                {
                                                    var objRef = new ShipmentLocalProcessingOrderNumber
                                                    {
                                                        OrderReference
                                                            =
                                                            objMsg
                                                                .S_N9
                                                                //-----------------------------------------------------------------------------------------------------
                                                                [n9]
                                                                .D_127_2
                                                    };
                                                    objShp.LocalProcessing.OrderNumberCollection.Add(objRef);
                                                }
                                                    break;

                                                case "BN":
                                                {
                                                    var objRef =
                                                        new ShipmentAdditionalReferenceCollectionAdditionalReference
                                                        {
                                                            Type
                                                                =
                                                            {
                                                                Code
                                                                    =
                                                                    "BKG"
                                                            },
                                                            ReferenceNumber
                                                                =
                                                                objMsg
                                                                    .S_N9
                                                                    [
                                                                        n9
                                                                    ]
                                                                    .D_127_2
                                                        };
                                                    objShp.AdditionalReferenceCollection.AdditionalReference.Add(
                                                        objRef);
                                                }
                                                    break;

                                                case "SI":
                                                {
                                                    var objRef =
                                                        new ShipmentAdditionalReferenceCollectionAdditionalReference
                                                        {
                                                            Type
                                                                =
                                                            {
                                                                Code
                                                                    =
                                                                    "UCR"
                                                            },
                                                            ReferenceNumber
                                                                =
                                                                objMsg
                                                                    .S_N9
                                                                    [
                                                                        n9
                                                                    ]
                                                                    .D_127_2
                                                        };
                                                    objShp.AdditionalReferenceCollection.AdditionalReference.Add(
                                                        objRef);
                                                }
                                                    break;

                                                case "TS":
                                                {
                                                    var objRef =
                                                        new ShipmentAdditionalReferenceCollectionAdditionalReference
                                                        {
                                                            Type
                                                                =
                                                            {
                                                                Code
                                                                    =
                                                                    "CON"
                                                            },
                                                            ReferenceNumber
                                                                =
                                                                objMsg
                                                                    .S_N9
                                                                    [
                                                                        n9
                                                                    ]
                                                                    .D_127_2
                                                        };
                                                    objShp.AdditionalReferenceCollection.AdditionalReference.Add(
                                                        objRef);
                                                }
                                                    break;

                                                case "OL":
                                                {
                                                    var objRef =
                                                        new ShipmentAdditionalReferenceCollectionAdditionalReference
                                                        {
                                                            Type
                                                                =
                                                            {
                                                                Code
                                                                    =
                                                                    "LID"
                                                            },
                                                            ReferenceNumber
                                                                =
                                                                objMsg
                                                                    .S_N9
                                                                    [
                                                                        n9
                                                                    ]
                                                                    .D_127_2,
                                                            ContextInformation
                                                                =
                                                                objMsg
                                                                    .S_N9
                                                                    [
                                                                        n9
                                                                    ]
                                                                    .D_369_3
                                                        };
                                                    objShp.AdditionalReferenceCollection.AdditionalReference.Add(
                                                        objRef);
                                                }
                                                    break;

                                                case "MB":
                                                {
                                                    var objRef =
                                                        new ShipmentAdditionalReferenceCollectionAdditionalReference
                                                        {
                                                            Type
                                                                =
                                                            {
                                                                Code
                                                                    =
                                                                    "BKG"
                                                            },
                                                            ReferenceNumber
                                                                =
                                                                objMsg
                                                                    .S_N9
                                                                    [
                                                                        n9
                                                                    ]
                                                                    .D_127_2,
                                                            ContextInformation
                                                                =
                                                                objMsg
                                                                    .S_N9
                                                                    [
                                                                        n9
                                                                    ]
                                                                    .D_369_3
                                                        };
                                                    objShp.AdditionalReferenceCollection.AdditionalReference.Add(
                                                        objRef);
                                                }
                                                    break;
                                            }
                                        }
                                    }
                                    for (var cc = 0; cc < objMsg.G_Y2.Count; cc++)
                                    {
                                        var objCnt = new ShipmentContainerCollectionContainer
                                        {
                                            AirVentFlow = 0,
                                            Commodity =
                                                new Commodity
                                                {
                                                    Code
                                                        =
                                                        string
                                                            .Empty,
                                                    Description
                                                        =
                                                        string
                                                            .Empty
                                                },
                                            ContainerType =
                                                new ShipmentContainerCollectionContainerContainerType
                                                {
                                                    Code
                                                        =
                                                        objMsg
                                                            .G_Y2
                                                            [
                                                                cc
                                                            ]
                                                            .S_Y2
                                                            .D_24_4,
                                                    Category
                                                        =
                                                        new ShipmentContainerCollectionContainerContainerTypeCategory
                                                        {
                                                            Code
                                                                =
                                                                string
                                                                    .Empty,
                                                            Description
                                                                =
                                                                string
                                                                    .Empty
                                                        },
                                                    Description
                                                        =
                                                        string
                                                            .Empty,
                                                    ISOCode
                                                        =
                                                        string
                                                            .Empty
                                                },
                                            DepartureEstimatedPickup
                                                = string.Empty,
                                            DepartureSlotDateTime =
                                                string.Empty,
                                            DepartureSlotReference =
                                                string.Empty,
                                            EmptyRequired =
                                                string.Empty,
                                            FCL_LCL_AIR =
                                                new ContainerMode
                                                {
                                                    Code
                                                        =
                                                        Enum
                                                            .GetName
                                                            (
                                                                typeof
                                                                    (
                                                                    X12_ID_102
                                                                    ),
                                                                objMsg
                                                                    .G_Y2
                                                                    [
                                                                        cc
                                                                    ]
                                                                    .S_Y2
                                                                    .D_91_5)
                                                },
                                            ReleaseNum =
                                                string.Empty,
                                            SetPointTemp = 0M,
                                            TempRecorderSerialNo =
                                                string.Empty
                                        };
                                        int intCnt;
                                        int.TryParse(objMsg.G_Y2[cc].S_Y2.D_95_1, out intCnt);
                                        objCnt.ContainerCount = intCnt;
                                        objShp.ContainerCollection.Container.Add(objCnt);
                                    }
                                    objShp.ContainerCollection.Content = CollectionContent.Complete;
                                    objShp.ContainerCollection.ContentSpecified = true;
                                    for (var n1 = 0; n1 < objMsg.G_N1.Count; n1++)
                                    {
                                        var objAdd = new OrganizationAddress();
                                        var str = objMsg.G_N1[n1].S_N1.D_98_1.ToString();
                                        switch (str)
                                        {
                                            case "BT":
                                            {
                                                objAdd.AddressType = "LocalClient";
                                            }
                                                break;

                                            case "SH":
                                            {
                                                objAdd.AddressType = "ConsignorDocumentaryAddress";
                                            }
                                                break;

                                            case "AB":
                                            case "SF":
                                            {
                                                objAdd.AddressType = "ConsignorPickupDeliveryAddress";
                                            }
                                                break;

                                            case "AE":
                                            {
                                                objAdd.AddressType = "ConsigneePickupDeliveryAddress";
                                            }
                                                break;

                                            case "ST":
                                            {
                                                objAdd.AddressType = "ConsigneePickupDeliveryAddress";
                                            }
                                                break;

                                            case "CN":
                                            {
                                                objAdd.AddressType = "ConsigneeDocumentaryAddress";
                                            }
                                                break;
                                        }
                                        if (objAdd.AddressType != string.Empty)
                                        {
                                            if (objMsg.G_N1[n1].S_N1 != null)
                                            {
                                                if (objMsg.G_N1[n1].S_N1.D_67_4 != null)
                                                {
                                                    objAdd.OrganizationCode = objMsg.G_N1[n1].S_N1.D_67_4;
                                                }
                                                if (objMsg.G_N1[n1].S_N1.D_93_2 != null)
                                                {
                                                    objAdd.CompanyName = objMsg.G_N1[n1].S_N1.D_93_2;
                                                }
                                            }
                                            if (objMsg.G_N1[n1].S_N3.Count >= 1)
                                            {
                                                if (objMsg.G_N1[n1].S_N3[0].D_166_1 != null)
                                                {
                                                    objAdd.Address1 = objMsg.G_N1[n1].S_N3[0].D_166_1;
                                                }
                                            }
                                            if (objMsg.G_N1[n1].S_N3.Count >= 2)
                                            {
                                                if (objMsg.G_N1[n1].S_N3[1].D_166_2 != null)
                                                {
                                                    objAdd.Address2 = objMsg.G_N1[n1].S_N3[1].D_166_2;
                                                }
                                            }
                                            objAdd.City = objMsg.G_N1[n1].S_N4.D_19_1;
                                            if (objMsg.G_N1[n1].S_N4 != null)
                                            {
                                                if (objMsg.G_N1[n1].S_N4.D_19_1 != null)
                                                {
                                                    objAdd.City = objMsg.G_N1[n1].S_N4.D_19_1;
                                                }
                                                if (objMsg.G_N1[n1].S_N4.D_156_2 != null)
                                                {
                                                    objAdd.State = objMsg.G_N1[n1].S_N4.D_156_2;
                                                }
                                                if (objMsg.G_N1[n1].S_N4 != null)
                                                {
                                                    if (objMsg.G_N1[n1].S_N4.D_156_2 != null)
                                                    {
                                                        if ((objMsg.G_N1[n1].S_N4.D_19_1 != null)
                                                            && (objMsg.G_N1[n1].S_N4.D_156_2 != null)
                                                            && (objMsg.G_N1[n1].S_N4.D_26_4 != null))
                                                        {
                                                            objAdd.State =
                                                                this.Func_SQL_GetPortStateFromCityName(
                                                                    objMsg.G_N1[n1].S_N4.D_19_1,
                                                                    objMsg.G_N1[n1].S_N4.D_156_2,
                                                                    objMsg.G_N1[n1].S_N4.D_26_4) ?? string.Empty;
                                                        }
                                                    }
                                                }
                                                if (objMsg.G_N1[n1].S_N4.D_116_3 != null)
                                                {
                                                    objAdd.Postcode = objMsg.G_N1[n1].S_N4.D_116_3;
                                                }
                                                if (objMsg.G_N1[n1].S_N4.D_26_4 != null)
                                                {
                                                    objAdd.Country.Code = objMsg.G_N1[n1].S_N4.D_26_4;
                                                }
                                            }
                                            for (var g61 = 0; g61 < objMsg.G_N1[n1].S_G61_2.Count; g61++)
                                            {
                                                if (objMsg.G_N1[n1].S_G61_2[g61].D_93_2 != null)
                                                {
                                                    objAdd.Contact = objMsg.G_N1[n1].S_G61_2[g61].D_93_2;
                                                }
                                                if (objMsg.G_N1[n1].S_G61_2[g61].D_365_3Specified)
                                                {
                                                    if (objMsg.G_N1[n1].S_G61_2[g61].D_365_3 == X12_ID_365.TE)
                                                    {
                                                        objAdd.Phone = objMsg.G_N1[n1].S_G61_2[g61].D_364_4;
                                                    }
                                                    if (objMsg.G_N1[n1].S_G61_2[g61].D_365_3 == X12_ID_365.EM)
                                                    {
                                                        objAdd.Email = objMsg.G_N1[n1].S_G61_2[g61].D_364_4;
                                                    }
                                                }
                                            }
                                            objShp.OrganizationAddressCollection.Add(objAdd);
                                        }
                                    }
                                    var CNE = false;
                                    foreach (var org in objShp.OrganizationAddressCollection)
                                    {
                                        if (org.AddressType == "ConsigneeDocumentaryAddress")
                                        {
                                            CNE = true;
                                        }
                                    }
                                    if (CNE == false)
                                    {
                                        for (var o = 0; o < objShp.OrganizationAddressCollection.Count; o++)
                                        {
                                            if (objShp.OrganizationAddressCollection[o].AddressType
                                                == "ConsigneePickupDeliveryAddress")
                                            {
                                                var objAdd = new OrganizationAddress
                                                {
                                                    AddressType =
                                                        "ConsigneeDocumentaryAddress",
                                                    OrganizationCode =
                                                        objShp
                                                            .OrganizationAddressCollection
                                                            [o].OrganizationCode,
                                                    CompanyName =
                                                        objShp
                                                            .OrganizationAddressCollection
                                                            [o].CompanyName,
                                                    Address1 =
                                                        objShp
                                                            .OrganizationAddressCollection
                                                            [o].Address1,
                                                    Address2 =
                                                        objShp
                                                            .OrganizationAddressCollection
                                                            [o].Address2,
                                                    City =
                                                        objShp
                                                            .OrganizationAddressCollection
                                                            [o].City,
                                                    State =
                                                        objShp
                                                            .OrganizationAddressCollection
                                                            [o].State,
                                                    Postcode =
                                                        objShp
                                                            .OrganizationAddressCollection
                                                            [o].Postcode,
                                                    Country =
                                                        objShp
                                                            .OrganizationAddressCollection
                                                            [o].Country
                                                };
                                                objShp.OrganizationAddressCollection.Add(objAdd);
                                            }
                                        }
                                    }
                                    if (objMsg.G_LX[0].S_L1 != null)
                                    {
                                        var decAmnt = 0M;
                                        var chgLine = new ShipmentJobCostingChargeLine
                                        {
                                            Branch =
                                                new Branch
                                                {
                                                    Code = "JFK",
                                                    Name =
                                                        "USJFK - Valley Stream, NY"
                                                },
                                            ChargeCode =
                                                new ChargeCode
                                                {
                                                    Code =
                                                        objMsg
                                                            .G_LX
                                                            [0
                                                            ]
                                                            .S_L1
                                                            .D_150_8
                                                            .ToString
                                                            (),
                                                    Description
                                                        =
                                                        objMsg
                                                            .G_LX
                                                            [0
                                                            ]
                                                            .S_L1
                                                            .D_150_8
                                                            .ToString
                                                            ()
                                                },
                                            ChargeCodeGroup =
                                                new CodeDescriptionPair
                                                {
                                                    Code
                                                        =
                                                        "FRT",
                                                    Description
                                                        =
                                                        "Freight"
                                                },
                                            CostApportionmentConsolNumber
                                                = new EntityReference(),
                                            CostGSTVATID = new TaxID(),
                                            CostIsPosted = false,
                                            CostLocalAmount = 0M,
                                            CostLocalAmountSpecified =
                                                true,
                                            CostOSAmount = 0M,
                                            CostOSAmountSpecified = true,
                                            CostOSCurrency =
                                                new Currency
                                                {
                                                    Code =
                                                        "USD",
                                                    Description
                                                        =
                                                        "United States Dollar"
                                                },
                                            CostOSGSTVATAmount = 0M,
                                            CostOSGSTVATAmountSpecified =
                                                true,
                                            Creditor =
                                                new OrganizationReference
                                                    (),
                                            Debtor =
                                                new OrganizationReference
                                                {
                                                    Key
                                                        =
                                                        "Organization",
                                                    Type
                                                        =
                                                        "GLOX12300"
                                                },
                                            Department =
                                                new Department
                                                {
                                                    Code =
                                                        "FES",
                                                    Name =
                                                        "Forwarding Export Sea"
                                                },
                                            Description =
                                                objMsg.G_LX[0].S_L1
                                                    .D_150_8.ToString(),
                                            ExternalDebtorCode = "JJSLC",
                                            SellInvoiceType = "FIN",
                                            SellIsPosted = false,
                                            SellLocalAmount = 0M,
                                            SellLocalAmountSpecified =
                                                true,
                                            SellOSAmount = 0M,
                                            SellOSCurrency =
                                                new Currency
                                                {
                                                    Code =
                                                        "USD",
                                                    Description
                                                        =
                                                        "United States Dollar"
                                                },
                                            SellOSGSTVATAmount = 0M,
                                            SellOSGSTVATAmountSpecified =
                                                true,
                                            DisplaySequence = 1
                                        };
                                        decimal.TryParse(objMsg.G_LX[0].S_L1.D_58_4, out decAmnt);
                                        chgLine.SellLocalAmount = decAmnt;
                                        objShp.JobCosting.ChargeLineCollection.Add(chgLine);
                                    }
                                    for (var k1 = 0; k1 < objMsg.S_K1.Count; k1++)
                                    {
                                        var note = new Note
                                        {
                                            IsCustomDescription = true,
                                            Description = "Imported Notes",
                                            NoteText =
                                                objMsg.S_K1[k1].D_61_1 + Environment.NewLine
                                                + objMsg.S_K1[k1].D_61_2
                                        };
                                        objShp.NoteCollection.Add(note);
                                    }

                                    var ediList = this.Func_EDI_GetOriginalMessage(filename, '*', '~');
                                    if (ediList.Count > 0)
                                    {
                                        var ediNote = new Note
                                        {
                                            IsCustomDescription = true,
                                            Description = "Original EDI Message"
                                        };
                                        foreach (var item in ediList)
                                        {
                                            if (ediNote.NoteText == string.Empty)
                                            {
                                                ediNote.NoteText = item;
                                            }
                                            else
                                            {
                                                ediNote.NoteText = ediNote.NoteText + Environment.NewLine + item;
                                            }
                                        }
                                        objShp.NoteCollection.Add(ediNote);
                                    }
                                    xmlInt.Body.UniversalShipment.Shipment = objShp;
                                }
                                catch (Exception exc)
                                {
                                    Debug.Print(exc.Message);
                                    throw;
                                }
                            }
                        }
                        xmlInt.Serialize();
                        xmlInt.SaveToFile(
                            string.Concat(validOut, "\\300_GLO_", Path.GetFileNameWithoutExtension(filename), ".xml"));
                        this.FileStatus.FileOutName = string.Concat(
                            validOut,
                            "\\300_GLO_",
                            Path.GetFileNameWithoutExtension(filename),
                            ".xml");
                        this.FileStatus.Status = true;
                        Func_File_Move(filename, string.Concat(processOut, "\\", Path.GetFileName(filename)));
                    }
                }
            }
            else
            {
                this.FileStatus.ExcpMessage = "Cannot Find: " + filename;
            }
            return this.FileStatus;
        }
        public FileAnalysis Func_CWO_XUS_SHP_X12_214_GLO(
            string filename,
            string fileOut,
            string filePrs,
            string fileErr)
        {
            this.FileStatus = new FileAnalysis();
            if (File.Exists(filename))
            {
                var controlNum = this.Func_SQL_GetControlNumber();
                var doc = new XmlDocument();
                doc.Load(filename);
                XmlNode root = doc.DocumentElement;
                var nsmgr = new XmlNamespaceManager(doc.NameTable);
                nsmgr.AddNamespace("ns", "http://www.cargowise.com/Schemas/Universal/2011/11");
                var myInterchange = new MyINT(controlNum, "12", "3023254180", "ZZ", "FMXJ214", true);
                var myGroup = myInterchange.CreateGroup(controlNum, "QM", "3023254180", "FMXJ214");
                var myMessage = new X12_4010_214(controlNum);
                var statusCode = this.Func_XML_GetResultString(doc, nsmgr, @"//ns:ActionPurpose/ns:Code");
                if (statusCode != string.Empty)
                {
                    myMessage.Add_B10(
                        this.Func_XML_GetResultString(doc, nsmgr,
                            @"//ns:Shipment/ns:DataContext/ns:DataSourceCollection/ns:DataSource[ns:Type='ForwardingShipment']/ns:Key"),
                        this.Func_XML_GetResultString(doc, nsmgr, @"//ns:SubShipmentCollection/ns:SubShipment/ns:WayBillNumber"),
                        "WINA"
                        );

                    switch (statusCode)
                    {
                        case "AAP":
                        {
                        }
                            break;

                        case "ABD":
                        {
                        }
                            break;

                        case "X3P":
                        {
                            myMessage.Add_LX("1", X12_ID_1650.X3, X12_ID_1651.NS, X12_ID_1652.AA, X12_ID_1651.NS,
                                this.Func_XML_GetResultDate(doc, nsmgr,
                                    @"//ns:LocalProcessing/ns:PickupCartageCompleted"),
                                this.Func_XML_GetResultTime(doc, nsmgr,
                                    @"//ns:LocalProcessing/ns:PickupCartageCompleted"),
                                EdiFabric.Definitions.X12_004010_214.X12_ID_623.LT,
                                this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:OrganizationAddressCollection/ns:OrganizationAddress[ns:AddressType='ConsignorPickupDeliveryAddress']/ns:City"),
                                this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:OrganizationAddressCollection/ns:OrganizationAddress[ns:AddressType='ConsignorPickupDeliveryAddress']/ns:State"),
                                this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:OrganizationAddressCollection/ns:OrganizationAddress[ns:AddressType='ConsignorPickupDeliveryAddress']/ns:Country/ns:Code")
                                );
                        }
                            break;

                        case "AFP":
                        {
                            myMessage.Add_LX("1", X12_ID_1650.AF, X12_ID_1651.NS, X12_ID_1652.AA, X12_ID_1651.NS,
                                this.Func_XML_GetResultDate(doc, nsmgr,
                                    @"//ns:LocalProcessing/ns:PickupCartageCompleted"),
                                this.Func_XML_GetResultTime(doc, nsmgr,
                                    @"//ns:LocalProcessing/ns:PickupCartageCompleted"),
                                EdiFabric.Definitions.X12_004010_214.X12_ID_623.LT,
                                this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:OrganizationAddressCollection/ns:OrganizationAddress[ns:AddressType='ConsignorPickupDeliveryAddress']/ns:City"),
                                this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:OrganizationAddressCollection/ns:OrganizationAddress[ns:AddressType='ConsignorPickupDeliveryAddress']/ns:State"),
                                this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:OrganizationAddressCollection/ns:OrganizationAddress[ns:AddressType='ConsignorPickupDeliveryAddress']/ns:Country/ns:Code")
                                );
                        }
                            break;

                        case "X1D":
                        {
                        }
                            break;

                        case "D1D":
                        {
                        }
                            break;

                        case "AGP":
                        {
                        }
                            break;

                        case "OOP":
                        {
                                myMessage.Add_LX("1", X12_ID_1650.OO, X12_ID_1651.NS, X12_ID_1652.AA, X12_ID_1651.NS,
                                this.Func_XML_GetResultDate(doc, nsmgr,
                                    @"//ns:TriggerDate"),
                                this.Func_XML_GetResultTime(doc, nsmgr,
                                    @"//ns:TriggerDate"),
                                EdiFabric.Definitions.X12_004010_214.X12_ID_623.LT,
                                Func_SQL_GetCityNameFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code"))
                                    .Substring(0, 29)
                                    .Trim(),
                                Func_SQL_GetStateCodeFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code")),
                                Func_SQL_GetCountryCodeFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code"))
                                );
                            }
                            break;

                        case "P1P":
                        {
                            myMessage.Add_LX("1", X12_ID_1650.P1, X12_ID_1651.NS, X12_ID_1652.AA, X12_ID_1651.NS,
                                this.Func_XML_GetResultDate(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:ActualDeparture"),
                                this.Func_XML_GetResultTime(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:ActualDeparture"),
                                EdiFabric.Definitions.X12_004010_214.X12_ID_623.LT,
                                Func_SQL_GetCityNameFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code"))
                                    .Substring(0, 29)
                                    .Trim(),
                                Func_SQL_GetStateCodeFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code")),
                                Func_SQL_GetCountryCodeFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code"))
                                );
                        }
                            break;

                        case "X4D":
                        {
                            myMessage.Add_LX("1", X12_ID_1650.X4, X12_ID_1651.NS, X12_ID_1652.AA, X12_ID_1651.NS,
                                this.Func_XML_GetResultDate(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:ActualArrival"),
                                this.Func_XML_GetResultTime(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:ActualArrival"),
                                EdiFabric.Definitions.X12_004010_214.X12_ID_623.LT,
                                Func_SQL_GetCityNameFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfDischarge/ns:Code"))
                                    .Substring(0, 29)
                                    .Trim(),
                                Func_SQL_GetStateCodeFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfDischarge/ns:Code")),
                                Func_SQL_GetCountryCodeFromPortCode(this.Func_XML_GetResultString(doc, nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfDischarge/ns:Code"))
                                );
                        }
                            break;

                        case "X9D":
                        {
                        }
                            break;
                    }

                    myGroup.AddMessage(myMessage.m214);
                    myInterchange.SaveEdi(@"D:\Temp\X12\214\GLO\Out\" + Path.GetFileNameWithoutExtension(filename) +
                                          ".edi");
                }
            }
            return FileStatus;
        }
        //-----------------------------------------------------------------------------------------------------
        public FileAnalysis Func_X12_300_GLO_CWO_XUS_SHP(
            string filename,
            string errorOut,
            string validOut,
            string processOut = "")
        {
            this.FileStatus = new FileAnalysis();
            if (File.Exists(filename))
            {
                var ediInt = Interchange.LoadFrom(File.OpenRead(filename));
                var xmlInt = new UniversalInterchange();
                if (ediInt.Groups != null)
                {
                    for (var g = 0; g < ediInt.Groups.Count; g++)
                    {
                        xmlInt.Header = new UniversalInterchangeHeader
                        {
                            SenderID = ediInt.Groups[g].Gs.D_142_2,
                            RecipientID = ediInt.Groups[g].Gs.D_124_3
                        };
                        xmlInt.Body = new UniversalInterchangeBody
                        {
                            UniversalShipment =
                                new UniversalShipmentData {version = "1.1"}
                        };
                        for (var m = 0; m < ediInt.Groups[g].Messages.Count; m++)
                        {
                            if (ediInt.Groups[g].Messages[m].Context.Tag == "300")
                            {
                                try
                                {
                                    var xmlMsg = ediInt.Serialize();
                                    var objMsg = ediInt.Groups[g].Messages[m].DeserializeItem<M_300>();
                                    var xmlDoc = new XmlDocument();
                                    xmlDoc.LoadXml(xmlMsg.ToString());
                                    var nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
                                    nsmgr.AddNamespace("ns", "www.edifabric.com/x12");
                                    var objShp = new Shipment
                                    {
                                        AdditionalTerms = string.Empty,
                                        AgentsReference = string.Empty,
                                        AWBServiceLevel =
                                            new CodeDescriptionPair
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        CartageWaybillNumber = string.Empty,
                                        CFSReference = string.Empty,
                                        FirstBuyerContact = string.Empty,
                                        Folio = string.Empty,
                                        OwnerRef = string.Empty,
                                        QuoteNumber = string.Empty,
                                        SecondBuyerContact = string.Empty,
                                        VesselName = string.Empty,
                                        VoyageFlightNo = string.Empty,
                                        WarehouseLocation = string.Empty,
                                        DataContext =
                                            new DataContext
                                            {
                                                DataSourceCollection =
                                                    new List<DataSource>
                                                    {
                                                        new DataSource
                                                        {
                                                            Type
                                                                =
                                                                "ForwardingBooking",
                                                            Key
                                                                =
                                                                string
                                                                    .Empty
                                                        }
                                                    },
                                                DataTargetCollection =
                                                    new List<DataTarget>
                                                    {
                                                        new DataTarget
                                                        {
                                                            Type
                                                                =
                                                                "ForwardingBooking"
                                                        }
                                                    },
                                                ActionPurpose =
                                                    new CodeDescriptionPair
                                                    {
                                                        Code
                                                            =
                                                            "APP",
                                                        Description
                                                            =
                                                            "As Per Payload"
                                                    },
                                                Company =
                                                    new Company
                                                    {
                                                        Code = "JFK",
                                                        Country =
                                                            new Country
                                                            {
                                                                Code
                                                                    =
                                                                    "US",
                                                                Name
                                                                    =
                                                                    "United States"
                                                            },
                                                        Name =
                                                            "Walker International Transportation LLC"
                                                    },
                                                DataProvider = "X12300GLO",
                                                EnterpriseID = "WLT",
                                                EventBranch =
                                                    new Branch
                                                    {
                                                        Code = "JFK",
                                                        Name =
                                                            "USJFK - Valley Stream, NY"
                                                    },
                                                EventDepartment =
                                                    new Department
                                                    {
                                                        Code =
                                                            "FES",
                                                        Name =
                                                            "Forwarding Export Sea"
                                                    },
                                                EventType =
                                                    new CodeDescriptionPair
                                                    {
                                                        Code
                                                            =
                                                            "ADD"
                                                    },
                                                EventUser =
                                                    new Staff
                                                    {
                                                        Code = "JSM",
                                                        Name =
                                                            "Jerry S. Mabasa"
                                                    },
                                                ServerID = "JNJ",
                                                CodesMappedToTarget = true,
                                                CodesMappedToTargetSpecified =
                                                    true
                                            },
                                        ActualChargeable = 0M,
                                        ActualChargeableSpecified = true,
                                        BookingConfirmationReference = string.Empty,
                                        IsBooking = true,
                                        IsBookingSpecified = true,
                                        ContainerCount = 0,
                                        ContainerCountSpecified = true,
                                        ContainerMode = new ContainerMode(),
                                        FreightRate = 0M,
                                        FreightRateSpecified = true,
                                        FreightRateCurrency =
                                            new Currency
                                            {
                                                Code = "USD",
                                                Description = "United States Dollar"
                                            },
                                        GoodsDescription = string.Empty,
                                        GoodsValue = 0M,
                                        GoodsValueCurrency =
                                            new Currency
                                            {
                                                Code = "USD",
                                                Description = "United States Dollar"
                                            },
                                        HBLAWBChargesDisplay =
                                            new CodeDescriptionPair
                                            {
                                                Code = "SHW",
                                                Description =
                                                    "Show Collect Charges"
                                            },
                                        InsuranceValue = 0M,
                                        InsuranceValueCurrency =
                                            new Currency
                                            {
                                                Code = "USD",
                                                Description = "United States Dollar"
                                            },
                                        InterimReceiptNumber = string.Empty,
                                        IsDirectBooking = false,
                                        IsForwardRegistered = false,
                                        IsNeutralMaster = new IsNeutralMaster {Value = false},
                                        JobCosting =
                                            new ShipmentJobCosting
                                            {
                                                Branch =
                                                    new Branch
                                                    {
                                                        Code =
                                                            "JFK",
                                                        Name =
                                                            "USJFK - Valley Stream, NY"
                                                    },
                                                Currency =
                                                    new Currency
                                                    {
                                                        Code
                                                            =
                                                            "USD",
                                                        Description
                                                            =
                                                            "United States Dollar"
                                                    },
                                                Department =
                                                    new Department
                                                    {
                                                        Code
                                                            =
                                                            "FES",
                                                        Name
                                                            =
                                                            "Forwarding Export Sea"
                                                    },
                                                HomeBranch =
                                                    new Branch
                                                    {
                                                        Code =
                                                            "JFK",
                                                        Name =
                                                            "USJFK - Valley Stream, NY"
                                                    },
                                                OperationsStaff =
                                                    new Staff
                                                    {
                                                        Code =
                                                            "JSM"
                                                    },
                                                AccrualNotRecognized = 0M,
                                                AccrualNotRecognizedSpecified
                                                    = true,
                                                AccrualRecognized = 0M,
                                                AccrualRecognizedSpecified
                                                    = true,
                                                AgentRevenue = 0M,
                                                AgentRevenueSpecified =
                                                    true,
                                                LocalClientRevenue = 0M,
                                                LocalClientRevenueSpecified
                                                    = true,
                                                OtherDebtorRevenue = 0M,
                                                OtherDebtorRevenueSpecified
                                                    = true,
                                                SalesStaff =
                                                    new Staff
                                                    {
                                                        Code =
                                                            "JSM",
                                                        Name =
                                                            "Jerry S. Mabasa"
                                                    },
                                                TotalAccrual = 0M,
                                                TotalAccrualSpecified =
                                                    true,
                                                TotalCost = 0M,
                                                TotalCostSpecified = true,
                                                TotalJobProfit = 0M,
                                                TotalJobProfitSpecified =
                                                    true,
                                                TotalRevenue = 0M,
                                                TotalRevenueSpecified =
                                                    true,
                                                TotalWIP = 0M,
                                                TotalWIPSpecified = true,
                                                WIPNotRecognized = 0M,
                                                WIPNotRecognizedSpecified
                                                    = true,
                                                WIPRecognized = 0M,
                                                WIPRecognizedSpecified =
                                                    true,
                                                ChargeLineCollection =
                                                    new List
                                                        <
                                                            ShipmentJobCostingChargeLine
                                                            >()
                                            },
                                        OuterPacks = 0,
                                        OuterPacksSpecified = true,
                                        OuterPacksPackageType =
                                            new PackageType
                                            {
                                                Code = "PCS",
                                                Description = "Pieces"
                                            },
                                        PackingOrder = 0,
                                        ReleaseType =
                                            new CodeDescriptionPair
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        ServiceLevel =
                                            new ServiceLevel
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        ShipmentIncoTerm =
                                            new IncoTerm
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        ShippedOnBoard =
                                            new CodeDescriptionPair
                                            {
                                                Code = string.Empty,
                                                Description = string.Empty
                                            },
                                        TotalVolume = 0M,
                                        TotalVolumeSpecified = true,
                                        TotalVolumeUnit =
                                            new UnitOfVolume
                                            {
                                                Code = "M3",
                                                Description = "Cubic Meters"
                                            },
                                        TotalWeight = 0M,
                                        TotalWeightUnit =
                                            new UnitOfWeight
                                            {
                                                Code = "KG",
                                                Description = "Kilograms"
                                            },
                                        TotalWeightSpecified = true,
                                        TransportMode =
                                            new CodeDescriptionPair
                                            {
                                                Code = "SEA",
                                                Description =
                                                    "Sea Freight"
                                            },
                                        WayBillNumber = string.Empty,
                                        WayBillType =
                                            new WayBillType
                                            {
                                                Code = "HWB",
                                                Description = "House Waybill"
                                            },
                                        LocalProcessing =
                                            new ShipmentLocalProcessing
                                            {
                                                DeliveryRequiredBy =
                                                    string.Empty,
                                                EstimatedDelivery =
                                                    string.Empty,
                                                EstimatedPickup =
                                                    string.Empty,
                                                FCLDeliveryEquipmentNeeded
                                                    =
                                                    new CodeDescriptionPair
                                                    {
                                                        Code
                                                            =
                                                            string
                                                                .Empty,
                                                        Description
                                                            =
                                                            string
                                                                .Empty
                                                    },
                                                FCLPickupEquipmentNeeded
                                                    =
                                                    new CodeDescriptionPair
                                                    {
                                                        Code
                                                            =
                                                            string
                                                                .Empty,
                                                        Description
                                                            =
                                                            string
                                                                .Empty
                                                    },
                                                InsuranceRequired =
                                                    false,
                                                PickupRequiredBy =
                                                    string.Empty,
                                                OrderNumberCollection
                                                    =
                                                    new List
                                                        <
                                                            ShipmentLocalProcessingOrderNumber
                                                            >()
                                            },
                                        ContainerCollection = new ShipmentContainerCollection(),
                                        PackingLineCollection = new List<PackingLine>(),
                                        DateCollection = new List<Date>(),
                                        OrganizationAddressCollection =
                                            new List<OrganizationAddress>(),
                                        NoteCollection = new List<Note>()
                                    };

                                    objShp.WayBillNumber = this.Func_XML_GetResultString(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:S_B1/ns:D_145_2");

                                    objShp.CFSReference = this.Func_XML_GetResultString(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:S_B1/ns:D_145_2");

                                    objShp.OwnerRef = objShp.WayBillNumber;

                                    objShp.BookingConfirmationReference = this.Func_XML_GetResultString(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:S_N9[ns:D_128_1='MB']/ns:D_127_2");

                                    var orgLOC = new OrganizationAddress
                                    {
                                        AddressType = "LocalClient",
                                        OrganizationCode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/ns:D_67_4"),
                                        CompanyName =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/ns:D_93_2"),
                                        Address1 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N3/ns:D_166_1"),
                                        Address2 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N3/ns:D_166_2"),
                                        City =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                        Postcode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N4/ns:D_116_3"),
                                        State =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                        Country =
                                            new Country
                                            {
                                                Code =
                                                    Func_SQL_ConvertCountryISO3ToISO2
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            },
                                        Contact =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='BT']/parent::ns:G_N1_2/ns:S_G61_2[1]/ns:D_93_2"),
                                        Email =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='BT']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='EM']/ns:D_364_4"),
                                        Phone =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='BT']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='TE']/ns:D_364_4"),
                                        Port =
                                            new UNLOCO
                                            {
                                                Code =
                                                    this
                                                        .Func_SQL_GetPortCodeFromCityName
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='BT']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            }
                                    };

                                    objShp.OrganizationAddressCollection.Add(orgLOC);

                                    var orgCNR = new OrganizationAddress
                                    {
                                        AddressType = "ConsignorDocumentaryAddress",
                                        OrganizationCode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/ns:D_67_4"),
                                        CompanyName =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/ns:D_93_2"),
                                        Address1 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N3/ns:D_166_1"),
                                        Address2 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N3/ns:D_166_2"),
                                        City =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                        Postcode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N4/ns:D_116_3"),
                                        State =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                        Country =
                                            new Country
                                            {
                                                Code =
                                                    Func_SQL_ConvertCountryISO3ToISO2
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            },
                                        Contact =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='SH']/parent::ns:G_N1_2/ns:S_G61_2[1]/ns:D_93_2"),
                                        Email =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='SH']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='EM']/ns:D_364_4"),
                                        Phone =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='SH']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='TE']/ns:D_364_4"),
                                        Port =
                                            new UNLOCO
                                            {
                                                Code =
                                                    this
                                                        .Func_SQL_GetPortCodeFromCityName
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SH']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            }
                                    };

                                    objShp.OrganizationAddressCollection.Add(orgCNR);

                                    //objShp.PortOfOrigin = new UNLOCO
                                    //{
                                    //    Code = this
                                    //       .Func_SQL_GetPortCodeFromCityName
                                    //       (
                                    //           this
                                    //       .Func_XML_GetResultString
                                    //       (
                                    //           xmlDoc,
                                    //           nsmgr,
                                    //           @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='R']/ns:D_310_3"),
                                    //           this
                                    //       .Func_XML_GetResultString
                                    //       (
                                    //           xmlDoc,
                                    //           nsmgr,
                                    //           @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='R']/ns:D_156_8"),
                                    //           this
                                    //       .Func_XML_GetResultString
                                    //       (
                                    //           xmlDoc,
                                    //           nsmgr,
                                    //           @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='R']/ns:D_26_5"))
                                    //};

                                    var orgCNRPck = new OrganizationAddress
                                    {
                                        AddressType =
                                            "ConsignorPickupDeliveryAddress",
                                        OrganizationCode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/ns:D_67_4"),
                                        CompanyName =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/ns:D_93_2"),
                                        Address1 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N3/ns:D_166_1"),
                                        Address2 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N3/ns:D_166_2"),
                                        City =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                        Postcode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N4/ns:D_116_3"),
                                        State =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                        Country =
                                            new Country
                                            {
                                                Code =
                                                    Func_SQL_ConvertCountryISO3ToISO2
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            },
                                        Contact =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='SF']/parent::ns:G_N1_2/ns:S_G61_2[1]/ns:D_93_2"),
                                        Email =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='SF']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='EM']/ns:D_364_4"),
                                        Phone =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='SF']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='TE']/ns:D_364_4"),
                                        Port =
                                            new UNLOCO
                                            {
                                                Code =
                                                    this
                                                        .Func_SQL_GetPortCodeFromCityName
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='SF']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            }
                                    };
                                    objShp.OrganizationAddressCollection.Add(orgCNRPck);

                                    var orgCNE = new OrganizationAddress
                                    {
                                        AddressType = "ConsigneeDocumentaryAddress",
                                        OrganizationCode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/ns:D_67_4"),
                                        CompanyName =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/ns:D_93_2"),
                                        Address1 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N3/ns:D_166_1"),
                                        Address2 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N3/ns:D_166_2"),
                                        City =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                        Postcode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N4/ns:D_116_3"),
                                        State =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                        Country =
                                            new Country
                                            {
                                                Code =
                                                    Func_SQL_ConvertCountryISO3ToISO2
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            },
                                        Contact =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='CN']/parent::ns:G_N1_2/ns:S_G61_2[1]/ns:D_93_2"),
                                        Email =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='CN']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='EM']/ns:D_364_4"),
                                        Phone =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='CN']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='TE']/ns:D_364_4"),
                                        Port =
                                            new UNLOCO
                                            {
                                                Code =
                                                    this
                                                        .Func_SQL_GetPortCodeFromCityName
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='CN']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            }
                                    };
                                    objShp.OrganizationAddressCollection.Add(orgCNE);

                                    //objShp.PortOfDischarge = new UNLOCO
                                    //{
                                    //    Code =
                                    //        this
                                    //        .Func_SQL_GetPortCodeFromCityName
                                    //        (
                                    //     this
                                    //        .Func_XML_GetResultString
                                    //        (
                                    //     xmlDoc,
                                    //     nsmgr,
                                    //     @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_N4_2/ns:D_19_1"),
                                    //     this
                                    //        .Func_XML_GetResultString
                                    //        (
                                    //     xmlDoc,
                                    //     nsmgr,
                                    //     @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_N4_2/ns:D_156_2"),
                                    //     this
                                    //        .Func_XML_GetResultString
                                    //        (
                                    //     xmlDoc,
                                    //     nsmgr,
                                    //     @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_N4_2/ns:D_26_4"))
                                    //};

                                    //objShp.PortOfDestination = new UNLOCO
                                    //{
                                    //    Code =
                                    //        this
                                    //        .Func_SQL_GetPortCodeFromCityName
                                    //        (
                                    //     this
                                    //        .Func_XML_GetResultString
                                    //        (
                                    //     xmlDoc,
                                    //     nsmgr,
                                    //     @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_N4_2/ns:D_19_1"),
                                    //     this
                                    //        .Func_XML_GetResultString
                                    //        (
                                    //     xmlDoc,
                                    //     nsmgr,
                                    //     @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_N4_2/ns:D_156_2"),
                                    //     this
                                    //        .Func_XML_GetResultString
                                    //        (
                                    //     xmlDoc,
                                    //     nsmgr,
                                    //     @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_N4_2/ns:D_26_4"))
                                    //};

                                    var orgCNEDlv = new OrganizationAddress
                                    {
                                        AddressType =
                                            "ConsigneePickupDeliveryAddress",
                                        OrganizationCode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/ns:D_67_4"),
                                        CompanyName =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/ns:D_93_2"),
                                        Address1 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N3/ns:D_166_1"),
                                        Address2 =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N3/ns:D_166_2"),
                                        City =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                        Postcode =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N4/ns:D_116_3"),
                                        State =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                        Country =
                                            new Country
                                            {
                                                Code =
                                                    Func_SQL_ConvertCountryISO3ToISO2
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            },
                                        Contact =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_G61_2[1]/ns:D_93_2"),
                                        Email =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='EM']/ns:D_364_4"),
                                        Phone =
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_204/ns:G_S5/ns:G_N1_2/ns:S_N1_2[ns:D_98_1='ST']/parent::ns:G_N1_2/ns:S_G61_2[ns:D_365_3='TE']/ns:D_364_4"),
                                        Port =
                                            new UNLOCO
                                            {
                                                Code =
                                                    this
                                                        .Func_SQL_GetPortCodeFromCityName
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N4/ns:D_19_1"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N4/ns:D_156_2"),
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_N1/ns:S_N1[ns:D_98_1='ST']/parent::ns:G_N1/ns:S_N4/ns:D_26_4")),
                                                Name = ""
                                            }
                                    };

                                    objShp.OrganizationAddressCollection.Add(orgCNEDlv);

                                    objShp.ServiceLevel.Code =
                                        this.Func_SQL_TranslateX12TariffServiceLevel(
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:S_Y1/ns:D_375_8"));

                                    if (this.Func_XML_GetResultString(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='R']/ns:D_309_2") == "AC")
                                    {
                                        objShp.PortOfOrigin = new UNLOCO
                                        {
                                            Code =
                                                this.Func_SQL_GetPortCodeFromCityName(
                                                    this.Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='R']/ns:D_310_3"),
                                                    this.Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='R']/ns:D_156_8"),
                                                    this.Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='R']/ns:D_26_5"))
                                        };
                                    }
                                    else
                                    {
                                        objShp.PortOfOrigin = new UNLOCO
                                        {
                                            Code =
                                                this.Func_XML_GetResultString(
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='R']/ns:D_310_3")
                                        };
                                    }

                                    if (this.Func_XML_GetResultString(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='L']/ns:D_309_2") == "AC")
                                    {
                                        objShp.PortOfLoading = new UNLOCO
                                        {
                                            Code =
                                                this.Func_SQL_GetPortCodeFromCityName(
                                                    this.Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='L']/ns:D_310_3"),
                                                    this.Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='L']/ns:D_156_8"),
                                                    this.Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='L']/ns:D_26_5"))
                                        };
                                    }
                                    else
                                    {
                                        objShp.PortOfLoading = new UNLOCO
                                        {
                                            Code =
                                                this.Func_XML_GetResultString(
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='L']/ns:D_310_3")
                                        };
                                    }

                                    if (this.Func_XML_GetResultString(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='D']/ns:D_309_2") == "AC")
                                    {
                                        objShp.PortOfDischarge = new UNLOCO
                                        {
                                            Code =
                                                this
                                                    .Func_SQL_GetPortCodeFromCityName(
                                                        this.Func_XML_GetResultString(
                                                            xmlDoc,
                                                            nsmgr,
                                                            @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='D']/ns:D_310_3"),
                                                        this.Func_XML_GetResultString(
                                                            xmlDoc,
                                                            nsmgr,
                                                            @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='D']/ns:D_156_8"),
                                                        this.Func_XML_GetResultString(
                                                            xmlDoc,
                                                            nsmgr,
                                                            @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='D']/ns:D_26_5"))
                                        };
                                    }
                                    else
                                    {
                                        objShp.PortOfDischarge = new UNLOCO
                                        {
                                            Code =
                                                this.Func_XML_GetResultString(
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='D']/ns:D_310_3")
                                        };
                                    }

                                    if (this.Func_XML_GetResultString(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='E']/ns:D_309_2") == "AC")
                                    {
                                        objShp.PortOfDestination = new UNLOCO
                                        {
                                            Code =
                                                this
                                                    .Func_SQL_GetPortCodeFromCityName(
                                                        this.Func_XML_GetResultString(
                                                            xmlDoc,
                                                            nsmgr,
                                                            @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='E']/ns:D_310_3"),
                                                        this.Func_XML_GetResultString(
                                                            xmlDoc,
                                                            nsmgr,
                                                            @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='E']/ns:D_156_8"),
                                                        this.Func_XML_GetResultString(
                                                            xmlDoc,
                                                            nsmgr,
                                                            @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='E']/ns:D_26_5"))
                                        };
                                    }
                                    else
                                    {
                                        objShp.PortOfDestination = new UNLOCO
                                        {
                                            Code =
                                                this.Func_XML_GetResultString(
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:G_R4/ns:S_R4[ns:D_115_1='E']/ns:D_310_3")
                                        };
                                    }

                                    if (string.IsNullOrEmpty(objShp.PortOfDestination.Code))
                                    {
                                        objShp.PortOfDestination = objShp.PortOfDischarge;
                                    }

                                    objShp.TotalWeight = this.Func_XML_GetResultIntNumber(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:G_LX/ns:S_L0/ns:D_81_4");
                                    objShp.TotalWeightUnit = new UnitOfWeight
                                    {
                                        Code =
                                            this
                                                .Func_SQL_TranslateX12_Weight_UoM(
                                                    this.Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_LX/ns:S_L0/ns:D_188_11"))
                                    };
                                    objShp.TotalWeightSpecified = true;

                                    objShp.DocumentedWeight = objShp.TotalWeight;
                                    objShp.DocumentedWeightSpecified = true;

                                    objShp.ManifestedWeight = objShp.TotalWeight;
                                    objShp.ManifestedWeightSpecified = true;

                                    objShp.TotalVolume = this.Func_XML_GetResultIntNumber(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:G_LX/ns:S_L0/ns:D_183_6");
                                    objShp.TotalVolumeUnit = new UnitOfVolume
                                    {
                                        Code =
                                            this
                                                .Func_SQL_TranslateX12_Volume_UoM(
                                                    this.Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_LX/ns:S_L0/ns:D_184_7"))
                                    };
                                    objShp.TotalVolumeSpecified = true;

                                    objShp.DocumentedVolume = objShp.TotalVolume;
                                    objShp.DocumentedVolumeSpecified = true;

                                    objShp.ManifestedVolume = objShp.TotalVolume;
                                    objShp.ManifestedVolumeSpecified = true;

                                    objShp.OuterPacks = this.Func_XML_GetResultIntNumber(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:G_LX/ns:S_L0/ns:D_80_8");
                                    objShp.OuterPacksPackageType = new PackageType
                                    {
                                        Code =
                                            Func_SQL_GetCWOPackageForm(
                                                this
                                                    .Func_XML_GetResultString(
                                                        xmlDoc,
                                                        nsmgr,
                                                        @"//ns:M_300/ns:G_LX/ns:S_L0/ns:D_211_9"))
                                    };
                                    objShp.OuterPacksSpecified = true;

                                    var packLine = new PackingLine
                                    {
                                        PackQty = objShp.OuterPacks,
                                        PackType =
                                            new PackageType
                                            {
                                                Code =
                                                    objShp
                                                        .OuterPacksPackageType
                                                        .Code,
                                                Description =
                                                    objShp
                                                        .OuterPacksPackageType
                                                        .Description
                                            },
                                        Weight = objShp.TotalWeight,
                                        WeightUnit = objShp.TotalWeightUnit,
                                        WeightSpecified = true,
                                        Volume = objShp.TotalVolume,
                                        VolumeUnit = objShp.TotalVolumeUnit,
                                        VolumeSpecified = true
                                    };
                                    objShp.PackingLineCollection.Add(packLine);

                                    var cntData = new ShipmentContainerCollectionContainer
                                    {
                                        AirVentFlow = 0,
                                        Commodity =
                                            new Commodity
                                            {
                                                Code
                                                    =
                                                    string
                                                        .Empty,
                                                Description
                                                    =
                                                    string
                                                        .Empty
                                            },
                                        ContainerType =
                                            new ShipmentContainerCollectionContainerContainerType
                                            {
                                                ISOCode
                                                    =
                                                    this
                                                        .Func_XML_GetResultString
                                                        (
                                                            xmlDoc,
                                                            nsmgr,
                                                            @"//ns:M_300/ns:G_Y2/ns:S_Y2/ns:D_24_4"),
                                                Code
                                                    =
                                                    Func_SQL_GetCWOContainerType
                                                        (
                                                            this
                                                                .Func_XML_GetResultString
                                                                (
                                                                    xmlDoc,
                                                                    nsmgr,
                                                                    @"//ns:M_300/ns:G_Y2/ns:S_Y2/ns:D_24_4"))
                                            }
                                    };
                                    cntData.ContainerCount = this.Func_XML_GetResultIntNumber(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:G_Y2/ns:S_Y2/ns:D_95_1");

                                    objShp.ContainerCollection.Container.Add(cntData);

                                    objShp.LocalProcessing.EstimatedPickup =
                                        this.Func_CON_ToISODate_ISO(
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_R4/ns:S_DTM[ns:D_374_1='118']/ns:D_373_2"),
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_R4/ns:S_DTM[ns:D_374_1='118']/ns:D_337_3"));
                                    objShp.LocalProcessing.PickupRequiredBy = objShp.LocalProcessing.EstimatedPickup;
                                    //this.Func_CON_ToISODate_ISO(
                                    //    this.Func_XML_GetResultString(
                                    //        xmlDoc,
                                    //        nsmgr,
                                    //        @"//ns:M_204/ns:G_S5/ns:S_G62_2[ns:D_176_3='K']/ns:D_373_2"),
                                    //    this.Func_XML_GetResultString(
                                    //        xmlDoc,
                                    //        nsmgr,
                                    //        @"//ns:M_204/ns:G_S5/ns:S_G62_2[ns:D_176_3='K']/ns:D_337_4"));
                                    objShp.LocalProcessing.EstimatedDelivery =
                                        this.Func_CON_ToISODate_ISO(
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_R4/ns:S_DTM[ns:D_374_1='371']/ns:D_373_2"),
                                            this.Func_XML_GetResultString(
                                                xmlDoc,
                                                nsmgr,
                                                @"//ns:M_300/ns:G_R4/ns:S_DTM[ns:D_374_1='371']/ns:D_337_3"));
                                    objShp.LocalProcessing.DeliveryRequiredBy = objShp.LocalProcessing.EstimatedDelivery;
                                    //this.Func_CON_ToISODate_ISO(
                                    //    this.Func_XML_GetResultString(
                                    //        xmlDoc,
                                    //        nsmgr,
                                    //        @"//ns:M_204/ns:G_S5/ns:S_G62_2[ns:D_176_3='L']/ns:D_373_2"),
                                    //    this.Func_XML_GetResultString(
                                    //        xmlDoc,
                                    //        nsmgr,
                                    //        @"//ns:M_204/ns:G_S5/ns:S_G62_2[ns:D_176_3='L']/ns:D_337_4"));

                                    var dteETD = new Date
                                    {
                                        Type = DateType.Departure,
                                        IsEstimate = true,
                                        IsEstimateSpecified = true,
                                        Value =
                                            this.Func_CON_ToISODate_ISO(
                                                this.Func_XML_GetResultString(
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:G_R4/ns:S_DTM[ns:D_374_1='010']/ns:D_373_2"),
                                                this.Func_XML_GetResultString(
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:G_R4/ns:S_DTM[ns:D_374_1='010']/ns:D_337_3"))
                                    };

                                    objShp.DateCollection.Add(dteETD);

                                    var dteETA = new Date
                                    {
                                        Type = DateType.Arrival,
                                        IsEstimate = true,
                                        IsEstimateSpecified = true,
                                        Value =
                                            this.Func_CON_ToISODate_ISO(
                                                this.Func_XML_GetResultString(
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:G_R4/ns:S_DTM[ns:D_374_1='371']/ns:D_373_2"),
                                                this.Func_XML_GetResultString(
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:G_R4/ns:S_DTM[ns:D_374_1='371']/ns:D_337_3"))
                                    };

                                    objShp.DateCollection.Add(dteETA);

                                    var dteBkd = new Date
                                    {
                                        Type = DateType.BookingConfirmed,
                                        IsEstimate = false,
                                        IsEstimateSpecified = true,
                                        Value =
                                            this.Func_CON_ToISODate_ISO(
                                                ediInt.Groups[g].Gs.D_29_4,
                                                ediInt.Groups[g].Gs.D_30_5)
                                        //this.Func_CON_ToISODate_ISO(this.Func_XML_GetResultString(xmlDoc, nsmgr, @"//ns:M_204/ns:S_G62/ns:D_373_2"), this.Func_XML_GetResultString(xmlDoc, nsmgr, @"//ns:M_204///ns:S_G62/ns:D_337_4"))
                                    };

                                    objShp.DateCollection.Add(dteBkd);

                                    var ordRef = new ShipmentLocalProcessingOrderNumber();
                                    ordRef.OrderReference = this.Func_XML_GetResultString(
                                        xmlDoc,
                                        nsmgr,
                                        @"//ns:M_300/ns:S_N9[ns:D_128_1='PO']/ns:D_127_2");

                                    objShp.LocalProcessing.OrderNumberCollection.Add(ordRef);

                                    var ucrRef = new ShipmentAdditionalReferenceCollectionAdditionalReference
                                    {
                                        Type =
                                        {
                                            Code
                                                =
                                                "UCR"
                                        },
                                        ReferenceNumber
                                            =
                                            this
                                                .Func_XML_GetResultString
                                                (
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:S_N9[ns:D_128_1='SI']/ns:D_127_2")
                                    };

                                    if (!string.IsNullOrEmpty(ucrRef.ReferenceNumber))
                                    {
                                        objShp.AdditionalReferenceCollection.AdditionalReference.Add(ucrRef);
                                    }

                                    var oagRef = new ShipmentAdditionalReferenceCollectionAdditionalReference
                                    {
                                        Type =
                                        {
                                            Code
                                                =
                                                "OAG"
                                        },
                                        ReferenceNumber
                                            =
                                            this
                                                .Func_XML_GetResultString
                                                (
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:S_N9[ns:D_128_1='CG']/ns:D_127_2")
                                    };

                                    if (!string.IsNullOrEmpty(oagRef.ReferenceNumber))
                                    {
                                        objShp.AdditionalReferenceCollection.AdditionalReference.Add(oagRef);
                                    }

                                    var bkgRefBn = new ShipmentAdditionalReferenceCollectionAdditionalReference
                                    {
                                        Type
                                            =
                                        {
                                            Code
                                                =
                                                "BKG"
                                        },
                                        ReferenceNumber
                                            =
                                            this
                                                .Func_XML_GetResultString
                                                (
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:S_N9[ns:D_128_1='BN']/ns:D_127_2")
                                    };

                                    if (!string.IsNullOrEmpty(bkgRefBn.ReferenceNumber))
                                    {
                                        objShp.AdditionalReferenceCollection.AdditionalReference.Add(bkgRefBn);
                                    }

                                    var bkgRefMb = new ShipmentAdditionalReferenceCollectionAdditionalReference
                                    {
                                        Type
                                            =
                                        {
                                            Code
                                                =
                                                "BKG"
                                        },
                                        ReferenceNumber
                                            =
                                            this
                                                .Func_XML_GetResultString
                                                (
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:S_N9[ns:D_128_1='MB']/ns:D_127_2")
                                    };

                                    if (!string.IsNullOrEmpty(bkgRefMb.ReferenceNumber))
                                    {
                                        objShp.AdditionalReferenceCollection.AdditionalReference.Add(bkgRefMb);
                                    }

                                    var bkgCon = new ShipmentAdditionalReferenceCollectionAdditionalReference
                                    {
                                        Type =
                                        {
                                            Code
                                                =
                                                "CON"
                                        },
                                        ReferenceNumber
                                            =
                                            this
                                                .Func_XML_GetResultString
                                                (
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:S_N9[ns:D_128_1='TS']/ns:D_127_2")
                                    };

                                    if (!string.IsNullOrEmpty(bkgCon.ReferenceNumber))
                                    {
                                        objShp.AdditionalReferenceCollection.AdditionalReference.Add(bkgCon);
                                    }

                                    var bkgLid = new ShipmentAdditionalReferenceCollectionAdditionalReference
                                    {
                                        Type =
                                        {
                                            Code
                                                =
                                                "LID"
                                        },
                                        ReferenceNumber
                                            =
                                            this
                                                .Func_XML_GetResultString
                                                (
                                                    xmlDoc,
                                                    nsmgr,
                                                    @"//ns:M_300/ns:S_N9[ns:D_128_1='OL']/ns:D_127_2")
                                    };

                                    if (!string.IsNullOrEmpty(bkgLid.ReferenceNumber))
                                    {
                                        objShp.AdditionalReferenceCollection.AdditionalReference.Add(bkgLid);
                                    }

                                    var ediList = this.Func_EDI_GetOriginalMessage(filename, '*', '~');
                                    if (ediList.Count > 0)
                                    {
                                        var ediNote = new Note
                                        {
                                            IsCustomDescription = true,
                                            Description = "Original EDI Message"
                                        };
                                        foreach (var item in ediList)
                                        {
                                            if (ediNote.NoteText == string.Empty)
                                            {
                                                ediNote.NoteText = item;
                                            }
                                            else
                                            {
                                                ediNote.NoteText = ediNote.NoteText + Environment.NewLine + item;
                                            }
                                        }
                                        objShp.NoteCollection.Add(ediNote);
                                    }

                                    //var ediAdd = new Note
                                    //{
                                    //    IsCustomDescription = true,
                                    //    Description = "Must Respond By"
                                    //};

                                    //ediAdd.NoteText = "Must Respond By: " + Func_CON_ToISODate_DTM(this.Func_XML_GetResultString(xmlDoc, nsmgr, @"//ns:M_204/ns:S_G62/ns:D_373_2 "), this.Func_XML_GetResultString(xmlDoc, nsmgr, @"//ns:M_204/ns:S_G62/ns:D_337_4"));

                                    //objShp.NoteCollection.Add(ediAdd);

                                    xmlInt.Body.UniversalShipment.Shipment = objShp;
                                }
                                catch (Exception exc)
                                {
                                    Debug.Print(exc.Message);
                                    throw;
                                }
                            }
                        }
                        xmlInt.Serialize();
                        xmlInt.SaveToFile(
                            string.Concat(validOut, "\\300_GLO_", Path.GetFileNameWithoutExtension(filename), ".xml"));
                        this.FileStatus.FileOutName = string.Concat(
                            validOut,
                            "\\300_GLO_",
                            Path.GetFileNameWithoutExtension(filename),
                            ".xml");
                        this.FileStatus.Status = true;
                        Func_File_Move(filename, string.Concat(processOut, "\\", Path.GetFileName(filename)));
                    }
                }
            }
            else
            {
                this.FileStatus.ExcpMessage = "Cannot Find: " + filename;
            }
            return this.FileStatus;
        }
 //-----------------------------------------------------------------------------------------------------
 public FileAnalysis Func_SPX_XMS(string strFilename, string strOutLoc)
 {
     this.FileStatus = new FileAnalysis();
     if (File.Exists(strFilename))
     {
         var xdWrap = XDocument.Load("XML/UniversalInterchangeWrapper.xml");
         var xdNaAp = XDocument.Load(strFilename);
         XNamespace xnWrap = "http://www.cargowise.com/Schemas/Universal/2011/11";
         var xpNav = xdWrap.CreateNavigator();
         var xnNSM = new XmlNamespaceManager(xpNav.NameTable);
         xnNSM.AddNamespace("cw", "http://www.cargowise.com/Schemas/Universal/2011/11");
         XElement node;
         node = xdWrap.XPathSelectElement("/cw:UniversalInterchange/cw:Body", xnNSM);
         node.Add(xdNaAp.Root);
         Func_File_Move(strFilename, string.Concat(strOutLoc, "\\", Path.GetFileName(strFilename)));
         if (strFilename.Contains("SPARX_SHP_XML_EVT_"))
         {
             strFilename = strFilename.Replace("SPARX_SHP_XML_EVT_", "SPARX_SHP_XUE_EVT_");
         }
         else
         {
             strFilename = strFilename.Replace("SPARX_SHP_XML_APP_", "SPARX_SHP_XUS_APP_");
         }
         xdWrap.Save(strFilename);
         this.FileStatus.Status = true;
         this.FileStatus.FileOutName = strFilename;
     }
     else
     {
         this.FileStatus.Status = false;
     }
     return this.FileStatus;
 }
 //-----------------------------------------------------------------------------------------------------
 public FileAnalysis Func_SPX_SendToCargowise(
     string strURL,
     string strFilename,
     string strRcp,
     string strSnd,
     string strPwd,
     string strOutLoc)
 {
     this.FileStatus = new FileAnalysis();
     try
     {
         cargowiseService.SendMessage(strURL, strFilename, strRcp, strSnd, strPwd);
         try
         {
             Func_File_Move(strFilename, strOutLoc + "\\" + Path.GetFileName(strFilename));
         }
         catch (Exception exp)
         {
             this.FileStatus.ExcpMessage = exp.Message;
         }
     }
     catch (Exception exp)
     {
         this.FileStatus.ExcpMessage = exp.Message;
     }
     return this.FileStatus;
 }
 //-----------------------------------------------------------------------------------------------------
 public FileAnalysis Func_File_Validate(
     string filename,
     string errorOut,
     string validOut,
     string type,
     char dataSep,
     char lineSep)
 {
     this.FileStatus = new FileAnalysis();
     if (File.Exists(filename))
     {
         try
         {
             this.FileStatus.HasError = Func_File_Validate(filename);
             this.FileStatus.HasCWError = Func_File_Validate_StatusAndFilename(filename);
             if (this.FileStatus.HasError && (this.FileStatus.HasCWError == false))
             {
                 if (!filename.Contains(type))
                 {
                     var ediObject = Interchange.LoadFrom(File.OpenRead(filename));
                     if (ediObject.Groups != null)
                     {
                         foreach (var g in ediObject.Groups)
                         {
                             foreach (var m in g.Messages)
                             {
                                 var brokenRules = (List<string>) m.Validate();
                                 if (brokenRules.Count > 0)
                                 {
                                     this.FileStatus.HasError = true;
                                     this.FileStatus.Errors = Func_X12_AssignErrors(brokenRules);
                                     this.FileStatus.Fixable = Func_X12_Eval_ErrorCodes(
                                         this.FileStatus.Errors,
                                         type);
                                     this.FileStatus.HasCWError = Func_File_Validate_StatusAndFilename(filename);
                                     if (this.FileStatus.Fixable && (!filename.Contains(type))
                                         && (this.FileStatus.HasCWError == false))
                                     {
                                         var errContext = new InterchangeContext
                                         {
                                             DataElementSeparator =
                                                 dataSep.ToString(),
                                             SegmentTerminator =
                                                 lineSep.ToString()
                                         };
                                         var errContent = Func_X12_Eval_Segments(
                                             filename,
                                             ediObject.ToEdi(errContext),
                                             type,
                                             dataSep,
                                             lineSep);
                                         if (
                                             File.Exists(
                                                 string.Concat(
                                                     Path.GetDirectoryName(filename),
                                                     "\\",
                                                     Path.GetFileNameWithoutExtension(filename),
                                                     "_",
                                                     type,
                                                     ".txt")))
                                         {
                                             File.Delete(
                                                 string.Concat(
                                                     Path.GetDirectoryName(filename),
                                                     "\\",
                                                     Path.GetFileNameWithoutExtension(filename),
                                                     "_",
                                                     type,
                                                     ".txt"));
                                         }
                                         TextWriter errWriter =
                                             File.CreateText(
                                                 string.Concat(
                                                     Path.GetDirectoryName(filename),
                                                     "\\",
                                                     Path.GetFileNameWithoutExtension(filename),
                                                     "_",
                                                     type,
                                                     ".txt"));
                                         try
                                         {
                                             errWriter.Write(string.Concat(errContent));
                                         }
                                         finally
                                         {
                                             ((IDisposable) errWriter).Dispose();
                                         }
                                         this.FileStatus.HasError =
                                             Func_File_Validate(
                                                 string.Concat(
                                                     Path.GetDirectoryName(filename),
                                                     "\\",
                                                     Path.GetFileNameWithoutExtension(filename),
                                                     "_",
                                                     type,
                                                     ".txt"));
                                         if (this.FileStatus.HasError)
                                         {
                                             Func_File_Move(
                                                 filename,
                                                 string.Concat(errorOut, "\\", Path.GetFileName(filename)));
                                             this.FileStatus.FileErrName = string.Concat(
                                                 errorOut,
                                                 "\\",
                                                 Path.GetFileName(filename));
                                             this.FileStatus.ExcpMessage = "Cannot Recover From EDI Errors: "
                                                                           + filename;
                                             this.FileStatus.Status = false;
                                             if (
                                                 File.Exists(
                                                     string.Concat(
                                                         Path.GetDirectoryName(filename),
                                                         "\\",
                                                         Path.GetFileNameWithoutExtension(filename),
                                                         "_",
                                                         type,
                                                         ".txt")))
                                             {
                                                 File.Delete(
                                                     string.Concat(
                                                         Path.GetDirectoryName(filename),
                                                         "\\",
                                                         Path.GetFileNameWithoutExtension(filename),
                                                         "_",
                                                         type,
                                                         ".txt"));
                                             }
                                             return this.FileStatus;
                                         }
                                         this.FileStatus.FileOutName =
                                             string.Concat(
                                                 Path.GetDirectoryName(filename),
                                                 "\\",
                                                 Path.GetFileNameWithoutExtension(filename),
                                                 "_",
                                                 type,
                                                 ".txt");
                                         this.FileStatus.Status = true;
                                         this.FileStatus.Created = true;
                                         if (File.Exists(filename))
                                         {
                                             File.Delete(filename);
                                         }
                                         return this.FileStatus;
                                     }
                                     Func_File_Move(
                                         filename,
                                         string.Concat(errorOut, "\\", Path.GetFileName(filename)));
                                     this.FileStatus.FileErrName = string.Concat(
                                         errorOut,
                                         "\\",
                                         Path.GetFileName(filename));
                                     this.FileStatus.ExcpMessage = "Cannot Recover From EDI Errors: " + filename;
                                     this.FileStatus.Status = false;
                                     return this.FileStatus;
                                 }
                                 var valContext = new InterchangeContext
                                 {
                                     DataElementSeparator =
                                         dataSep.ToString(),
                                     SegmentTerminator =
                                         lineSep.ToString()
                                 };
                                 var valContent = Func_X12_Eval_Segments(
                                     filename,
                                     ediObject.ToEdi(valContext),
                                     type,
                                     dataSep,
                                     lineSep);
                                 if (Func_Data_ListIsEqual(valContent, ediObject.ToEdi(valContext)))
                                 {
                                     Func_File_Move(
                                         filename,
                                         string.Concat(validOut, "\\", Path.GetFileName(filename)));
                                     this.FileStatus.FileErrName = string.Concat(
                                         validOut,
                                         "\\",
                                         Path.GetFileName(filename));
                                     this.FileStatus.Created = true;
                                     this.FileStatus.Status = true;
                                     return this.FileStatus;
                                 }
                                 if (
                                     File.Exists(
                                         string.Concat(
                                             Path.GetDirectoryName(filename),
                                             "\\",
                                             Path.GetFileNameWithoutExtension(filename),
                                             "_",
                                             type,
                                             ".txt")))
                                 {
                                     File.Delete(
                                         string.Concat(
                                             Path.GetDirectoryName(filename),
                                             "\\",
                                             Path.GetFileNameWithoutExtension(filename),
                                             "_",
                                             type,
                                             ".txt"));
                                 }
                                 TextWriter valWriter =
                                     File.CreateText(
                                         string.Concat(
                                             Path.GetDirectoryName(filename),
                                             "\\",
                                             Path.GetFileNameWithoutExtension(filename),
                                             "_",
                                             type,
                                             ".txt"));
                                 try
                                 {
                                     valWriter.Write(string.Concat(valContent));
                                 }
                                 finally
                                 {
                                     ((IDisposable) valWriter).Dispose();
                                 }
                                 Func_File_Move(
                                     filename,
                                     string.Concat(validOut, "\\", Path.GetFileName(filename)));
                                 this.FileStatus.FileErrName = string.Concat(
                                     validOut,
                                     "\\",
                                     Path.GetFileName(filename));
                                 this.FileStatus.Created = true;
                                 this.FileStatus.Status = true;
                                 return this.FileStatus;
                             }
                         }
                     }
                 }
                 else
                 {
                     Func_File_Move(filename, string.Concat(errorOut, "\\", Path.GetFileName(filename)));
                     this.FileStatus.FileErrName = string.Concat(errorOut, "\\", Path.GetFileName(filename));
                     this.FileStatus.ExcpMessage = "Cannot Recover From EDI Errors";
                     this.FileStatus.Status = false;
                     this.FileStatus.Created = false;
                     return this.FileStatus;
                 }
             }
             else
             {
                 if (this.FileStatus.HasCWError)
                 {
                     Func_File_Move(filename, string.Concat(errorOut, "\\", Path.GetFileName(filename)));
                     this.FileStatus.FileErrName = string.Concat(errorOut, "\\", Path.GetFileName(filename));
                     this.FileStatus.Status = false;
                     this.FileStatus.Created = false;
                     return this.FileStatus;
                 }
                 Func_File_Move(filename, string.Concat(validOut, "\\", Path.GetFileName(filename)));
                 this.FileStatus.FileErrName = string.Concat(validOut, "\\", Path.GetFileName(filename));
                 this.FileStatus.Created = true;
                 this.FileStatus.Status = true;
                 return this.FileStatus;
             }
         }
         catch (ParserException parEx)
         {
             Func_File_Move(filename, string.Concat(errorOut, "\\", Path.GetFileName(filename)));
             this.FileStatus.FileErrName = string.Concat(errorOut, "\\", Path.GetFileName(filename));
             this.FileStatus.ExcpMessage = parEx.Message;
             this.FileStatus.Status = false;
             this.FileStatus.Created = false;
             return this.FileStatus;
         }
         catch (NullReferenceException nulEx)
         {
             Func_File_Move(filename, string.Concat(errorOut, "\\", Path.GetFileName(filename)));
             this.FileStatus.FileErrName = string.Concat(errorOut, "\\", Path.GetFileName(filename));
             this.FileStatus.ExcpMessage = nulEx.Message;
             this.FileStatus.Status = false;
             this.FileStatus.Created = false;
             return this.FileStatus;
         }
     }
     else
     {
         this.FileStatus.ExcpMessage = "Could Not Find: " + filename;
         this.FileStatus.Status = false;
         this.FileStatus.Created = false;
         return this.FileStatus;
     }
     return this.FileStatus;
 }
        //-----------------------------------------------------------------------------------------------------
        public FileAnalysis Func_CWO_XUS_SHP_X12_990_GLO(
            string filename,
            string fileOut,
            string filePrs,
            string fileErr)
        {
            this.FileStatus = new FileAnalysis();
            if (File.Exists(filename))
            {
                var controlNum = this.Func_SQL_GetControlNumber();
                var doc = new XmlDocument();
                doc.Load(filename);
                XmlNode root = doc.DocumentElement;
                var nsmgr = new XmlNamespaceManager(doc.NameTable);
                nsmgr.AddNamespace("ns", "http://www.cargowise.com/Schemas/Universal/2011/11");
                var myInterchange = new MyINT(controlNum, "12", "3023254180", "ZZ", "FMXJ990", true);
                var myGroup = myInterchange.CreateGroup(controlNum, "GF", "3023254180", "FMXJ990");
                var myMessage = new X12_4010_990(controlNum);
                myMessage.Add_B1_A(
                    "WINA",
                    this.Func_XML_GetResultString(
                        doc,
                        nsmgr,
                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:WayBillNumber"),
                    DateTime.Now);
                myMessage.Add_N9(this.Func_XML_GetResultString(doc, nsmgr,
                    @"//ns:Shipment/ns:DataContext/ns:DataSourceCollection/ns:DataSource[ns:Type='ForwardingShipment']/ns:Key"));
                myGroup.AddMessage(myMessage.m990);

                myInterchange.SaveEdi(string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                this.FileStatus.HasError =
                    Func_File_Validate(string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                if (!this.FileStatus.HasError)
                {
                    this.Func_SQL_SubmitControlNumber(
                        controlNum,
                        "990GLO",
                        string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                    Func_File_Move(filename, string.Concat(filePrs, "\\", Path.GetFileName(filename)));
                    this.FileStatus.Created = true;
                    this.FileStatus.Status = true;
                    this.FileStatus.FileOutName = string.Concat(
                        fileOut,
                        "\\",
                        Path.GetFileNameWithoutExtension(filename),
                        ".edi");
                }
                else
                {
                    Func_File_Move(
                        string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"),
                        string.Concat(fileErr, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                    Func_File_Move(filename, string.Concat(fileErr, "\\", Path.GetFileName(filename)));
                    this.FileStatus.Created = false;
                    this.FileStatus.Status = false;
                    this.FileStatus.FileErrName = string.Concat(fileOut, "\\", Path.GetFileName(filename));
                }
            }
            return this.FileStatus;
        }
        //-----------------------------------------------------------------------------------------------------
        public FileAnalysis Func_CWO_XUS_SHP_X12_315_GLO(
            string filename,
            string fileOut,
            string filePrs,
            string fileErr)
        {
            this.FileStatus = new FileAnalysis();
            if (File.Exists(filename))
            {
                var controlNum = this.Func_SQL_GetControlNumber();
                var doc = new XmlDocument();
                doc.Load(filename);
                XmlNode root = doc.DocumentElement;
                var nsmgr = new XmlNamespaceManager(doc.NameTable);
                nsmgr.AddNamespace("ns", "http://www.cargowise.com/Schemas/Universal/2011/11");
                var myInterchange = new MyINT(controlNum, "12", "3023254180", "ZZ", "FMXJ315", true);
                var myGroup = myInterchange.CreateGroup(controlNum, "QO", "3023254180", "FMXJ315");
                var myMessage = new X12_4010_315(controlNum);
                var statusCode = this.Func_XML_GetResultString(doc, nsmgr, @"//ns:ActionPurpose/ns:Code");
                if (statusCode != string.Empty)
                {
                    switch (statusCode)
                    {
                        case "LEO":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));
                            var dateEvt = this.Func_XML_GetResultDate(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:ContainerCollection/ns:Container/ns:ContainerParkEmptyPickupGateOut");
                            var timeEvt = this.Func_XML_GetResultTime(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:ContainerCollection/ns:Container/ns:ContainerParkEmptyPickupGateOut");
                            var containerNum = this.Func_XML_GetResultString(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:ContainerCollection/ns:Container/ns:ContainerNumber");
                            var contPre = containerNum.Substring(0, 4);
                            var contSuf = containerNum.Substring(4, 7);
                            var contChk = containerNum.Substring(10, 1);
                            var contType = this.Func_XML_GetResultString(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:ContainerCollection/ns:Container/ns:ContainerType/ns:ISOCode");
                            var portCode = this.Func_XML_GetResultString(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code");
                            myMessage.Add_B4(
                                b403,
                                dateEvt,
                                timeEvt,
                                contPre,
                                contSuf,
                                b409,
                                contType,
                                portCode,
                                EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                contChk);
                        }
                            break;

                        case "ILR":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:FCLWharfGateIn");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:FCLWharfGateIn");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "AEL":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:FCLOnBoardVessel");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:FCLOnBoardVessel");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "CLL":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1][ns:TransportMode='Sea']/ns:EstimatedDeparture");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1][ns:TransportMode='Sea']/ns:EstimatedDeparture");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "VDL":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1][ns:TransportMode='Sea']/ns:ActualDeparture");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1][ns:TransportMode='Sea']/ns:ActualDeparture");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg/ns:PortOfLoading/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "ELD":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            var legCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:TransportMode='Sea']");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "][ns:TransportMode='Sea']/ns:EstimatedArrival");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "][ns:TransportMode='Sea']/ns:EstimatedArrival");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "]/ns:PortOfDischarge/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "VAD":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            var legCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:TransportMode='Sea']");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "][ns:TransportMode='Sea']/ns:ActualArrival");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "][ns:TransportMode='Sea']/ns:ActualArrival");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "]/ns:PortOfDischarge/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "UVD":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            var legCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:TransportMode='Sea']");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:FCLUnloadFromVessel");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:FCLUnloadFromVessel");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "]/ns:PortOfDischarge/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "OLD":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            var legCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:TransportMode='Sea']");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:FCLWharfGateOut");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:FCLWharfGateOut");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "]/ns:PortOfDischarge/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "AGM":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:LocalProcessing/ns:EstimatedDelivery");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:LocalProcessing/ns:EstimatedDelivery");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:PortOfDestination/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "DEM":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:LocalProcessing/ns:DeliveryCartageCompleted");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:LocalProcessing/ns:DeliveryCartageCompleted");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:PortOfDestination/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        case "TOS":
                        {
                            var b403 =
                                this.Func_EDI_ConvertStatusCode(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B403"));
                            var b409 =
                                this.Func_EDI_ConvertContainerStatus(
                                    this.Func_SQL_GetStatusCode(statusCode, "315GLO", "B409"));

                            var cntCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container");

                            var legCount = this.Func_XML_GetResultCount(
                                doc,
                                nsmgr,
                                @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:TransportMode='Sea']");

                            if (cntCount > 0)
                            {
                                var dateEvt = this.Func_XML_GetResultDate(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerParkEmptyReturnGateIn");

                                var timeEvt = this.Func_XML_GetResultTime(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerParkEmptyReturnGateIn");

                                var containerNum = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerNumber");
                                var contPre = containerNum.Substring(0, 4);
                                var contSuf = containerNum.Substring(4, 7);
                                var contChk = containerNum.Substring(10, 1);

                                var contType = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:UniversalShipment/ns:Shipment/ns:ContainerCollection/ns:Container[ns:Link=1]/ns:ContainerType/ns:ISOCode");

                                var portCode = this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                    + legCount + "]/ns:PortOfDischarge/ns:Code");

                                myMessage.Add_B4(
                                    b403,
                                    dateEvt,
                                    timeEvt,
                                    contPre,
                                    contSuf,
                                    b409,
                                    contType,
                                    portCode,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    contChk);
                            }
                        }
                            break;

                        default:
                        {
                            break;
                        }
                    }

                    var refList =
                        doc.SelectNodes(
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type/ns:Code",
                            nsmgr);

                    myMessage.Add_N9(EdiFabric.Definitions.X12_004010_315.X12_ID_128.ZZ, "WINA", "");

                    if (refList != null && refList.Count > 0)
                    {
                        foreach (XmlNode refItem in refList)
                        {
                            switch (refItem.InnerText)
                            {
                                case "LID":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_315.X12_ID_128.OL,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='LID']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='LID']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;

                                case "BKG":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_315.X12_ID_128.MB,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='BKG']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='BKG']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;

                                case "UCR":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_315.X12_ID_128.SI,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='UCR']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='UCR']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;

                                case "CON":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_315.X12_ID_128.TS,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='CON']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='CON']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;

                                case "OAG":
                                {
                                    myMessage.Add_N9(
                                        EdiFabric.Definitions.X12_004010_315.X12_ID_128.FN,
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='OAG']/parent::ns:AdditionalReference/ns:ReferenceNumber"),
                                        this.Func_XML_GetResultString(
                                            doc,
                                            nsmgr,
                                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:AdditionalReferenceCollection/ns:AdditionalReference/ns:Type[ns:Code='OAG']/parent::ns:AdditionalReference/ns:ContextInformation"));
                                }
                                    break;
                            }
                        }
                    }

                    myMessage.Add_N9(
                        EdiFabric.Definitions.X12_004010_315.X12_ID_128.BN,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:Shipment/ns:WayBillNumber"), "");

                    myMessage.Add_N9(
                        EdiFabric.Definitions.X12_004010_315.X12_ID_128.FN,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:Shipment/ns:DataContext/ns:DataSourceCollection/ns:DataSource[ns:Type='ForwardingShipment']/ns:Key"),
                        "");

                    myMessage.Add_N9(
                        EdiFabric.Definitions.X12_004010_315.X12_ID_128.X9,
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:WayBillNumber"), "");

                    var ordList =
                        doc.SelectNodes(
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:LocalProcessing/ns:OrderNumberCollection/ns:OrderNumber",
                            nsmgr);

                    if (ordList != null && ordList.Count > 0)
                    {
                        int intCnt = 1;

                        foreach (XmlNode ordItem in ordList)
                        {
                            myMessage.Add_N9(
                                EdiFabric.Definitions.X12_004010_315.X12_ID_128.PO,
                                this.Func_XML_GetResultString(
                                    doc,
                                    nsmgr,
                                    @"//ns:SubShipmentCollection/ns:SubShipment/ns:LocalProcessing/ns:OrderNumberCollection/ns:OrderNumber[" +
                                    intCnt.ToString() +
                                    "]/ns:OrderReference"), "");

                            intCnt += 1;
                        }
                    }

                    myMessage.Add_Q2(
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegType='Main']/ns:VoyageFlightNo"),
                        this.Func_XML_GetResultString(
                            doc,
                            nsmgr,
                            @"//ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegType='Main']/ns:VesselName"));

                    if (statusCode != string.Empty)
                    {
                        var tranCount = this.Func_XML_GetResultCount(
                            doc,
                            nsmgr,
                            @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg");

                        switch (statusCode)
                        {
                            case "LEO":
                            {
                                myMessage.Add_R4(
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_115.L,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Code"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Name"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Code")
                                        .Substring(0, 2));
                            }
                                break;

                            case "VDL":
                            {
                                myMessage.Add_R4(
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_115.L,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Code"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Name"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Code")
                                        .Substring(0, 2));
                            }
                                break;

                            case "OLD":
                            {
                                myMessage.Add_R4(
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_115.D,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                        + tranCount + "]/ns:PortOfDischarge/ns:Code"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                        + tranCount + "]/ns:PortOfDischarge/ns:Name"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                        + tranCount + "]/ns:PortOfDischarge/ns:Code").Substring(0, 2));
                            }
                                break;

                            case "DEM":
                            {
                                myMessage.Add_R4(
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_115.M,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfDestination/ns:Code"),
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfDestination/ns:Name"),
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfDestination/ns:Code")
                                        .Substring(0, 2));
                            }
                                break;

                            default:
                            {
                                myMessage.Add_R4(
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_115.R,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfOrigin/ns:Code"),
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfOrigin/ns:Name"),
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfOrigin/ns:Code")
                                        .Substring(0, 2));
                                myMessage.Add_R4(
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_115.M,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfDestination/ns:Code"),
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfDestination/ns:Name"),
                                    this.Func_XML_GetResultString(doc, nsmgr,
                                        @"//ns:SubShipment/ns:PortOfDestination/ns:Code")
                                        .Substring(0, 2));
                                //var tranCount = this.Func_XML_GetResultCount(
                                //    doc,
                                //    nsmgr,
                                //    @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg");
                                myMessage.Add_R4(
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_115.L,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Code"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Name"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder=1]/ns:PortOfLoading/ns:Code")
                                        .Substring(0, 2));
                                myMessage.Add_R4(
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_115.D,
                                    EdiFabric.Definitions.X12_004010_315.X12_ID_309.UN,
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                        + tranCount + "]/ns:PortOfDischarge/ns:Code"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                        + tranCount + "]/ns:PortOfDischarge/ns:Name"),
                                    this.Func_XML_GetResultString(
                                        doc,
                                        nsmgr,
                                        @"//ns:SubShipmentCollection/ns:SubShipment/ns:TransportLegCollection/ns:TransportLeg[ns:LegOrder="
                                        + tranCount + "]/ns:PortOfDischarge/ns:Code").Substring(0, 2));
                            }
                                break;
                        }
                    }

                    myGroup.AddMessage(myMessage.m315);
                    myInterchange.SaveEdi(string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename),
                        ".edi"));
                    this.FileStatus.HasError =
                        Func_File_Validate(string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename),
                            ".edi"));
                    if (!this.FileStatus.HasError)
                    {
                        this.Func_SQL_SubmitControlNumber(
                            controlNum,
                            "315GLO",
                            string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                        Func_File_Move(filename, string.Concat(filePrs, "\\", Path.GetFileName(filename)));
                        this.FileStatus.Created = true;
                        this.FileStatus.Status = true;
                        this.FileStatus.FileOutName = string.Concat(
                            fileOut,
                            "\\",
                            Path.GetFileNameWithoutExtension(filename),
                            ".edi");
                    }
                    else
                    {
                        Func_File_Move(
                            string.Concat(fileOut, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"),
                            string.Concat(fileErr, "\\", Path.GetFileNameWithoutExtension(filename), ".edi"));
                        Func_File_Move(filename, string.Concat(fileErr, "\\", Path.GetFileName(filename)));
                        this.FileStatus.Created = false;
                        this.FileStatus.Status = false;
                        this.FileStatus.FileErrName = string.Concat(fileOut, "\\", Path.GetFileName(filename));
                    }
                }
            }
            return this.FileStatus;
        }