Exemplo n.º 1
0
        public void MultpleRecordsWriteAsync()
        {
            engine = new MultiRecordEngine(new RecordTypeSelector(CustomSelector),
                                           typeof(OrdersVerticalBar),
                                           typeof(CustomersSemiColon),
                                           typeof(SampleType));

            object[] records = engine.ReadFile(FileTest.Good.MultiRecord1.Path);

            engine.BeginWriteFile("tempoMulti.txt");
            foreach (var o in records)
            {
                engine.WriteNext(o);
            }
            engine.Close();
            File.Delete("tempoMulti.txt");


            object[] res = engine.ReadFile(FileTest.Good.MultiRecord1.Path);

            Assert.AreEqual(12, res.Length);
            Assert.AreEqual(12, engine.TotalRecords);

            Assert.AreEqual(typeof(OrdersVerticalBar), res[0].GetType());
            Assert.AreEqual(typeof(OrdersVerticalBar), res[1].GetType());
            Assert.AreEqual(typeof(CustomersSemiColon), res[2].GetType());
            Assert.AreEqual(typeof(SampleType), res[5].GetType());
        }
Exemplo n.º 2
0
		public void MultpleRecordsWriteAsync()
		{
			engine = new MultiRecordEngine(new RecordTypeSelector(CustomSelector), typeof(OrdersVerticalBar), typeof(CustomersSemiColon), typeof(SampleType));

			object[] records = engine.ReadFile(Common.TestPath(@"Good\MultiRecord1.txt"));

			engine.BeginWriteFile("tempoMulti.txt");
			foreach (object o in records)
			{
				engine.WriteNext(o);
			}
			engine.Close();
			File.Delete("tempoMulti.txt");


			object[] res = engine.ReadFile(Common.TestPath(@"Good\MultiRecord1.txt"));

			Assert.AreEqual(12, res.Length);
			Assert.AreEqual(12, engine.TotalRecords);

			Assert.AreEqual(typeof(OrdersVerticalBar), res[0].GetType());
			Assert.AreEqual(typeof(OrdersVerticalBar), res[1].GetType());
			Assert.AreEqual(typeof(CustomersSemiColon), res[2].GetType());
			Assert.AreEqual(typeof(SampleType), res[5].GetType());
		}
Exemplo n.º 3
0
    private static void Main()
    {
        var engine = new MultiRecordEngine(typeof(Record00), typeof(Record01))
        {
            RecordSelector = new RecordTypeSelector((_, str) =>
            {
                if (string.IsNullOrWhiteSpace(str))
                {
                    return(null);
                }

                if (str.StartsWith("00", StringComparison.Ordinal))
                {
                    return(typeof(Record00));
                }

                if (str.StartsWith("01", StringComparison.Ordinal))
                {
                    return(typeof(Record01));
                }

                return(null);
            })
        };

        var res = engine.ReadFile("Input.txt");

        foreach (var rec in res)
        {
            Write("new "); Write(rec.GetType().Name); Write("( "); Write(rec.ToString()); WriteLine(" );");
        }
    }
Exemplo n.º 4
0
        public void WhenSelectorReturnsTypeThatIsNotInEngine_ShouldThrowBadUsageException_WhenReadingFileAtATime()
        {
            engine = new MultiRecordEngine(new RecordTypeSelector(CustomSelectorReturningBadType),
                                           typeof(OrdersVerticalBar), typeof(CustomersSemiColon), typeof(SampleType));

            Assert.Throws <BadUsageException>(() => engine.ReadFile(FileTest.Good.MultiRecord1.Path));
        }
Exemplo n.º 5
0
        public static void Execute(string[] args)
        {
            MultiRecordEngine engine
                = new MultiRecordEngine(new RecordTypeSelector(RecordSelector),
                                        typeof(FileHeader), typeof(FileTrailer), typeof(BatchHeader), typeof(BatchTrailer), typeof(PaymentRecord), typeof(IgnoreRecord));

            object[]  res              = engine.ReadFile(args[0]);
            int       count            = 0;
            DataTable dtPaymentRecords = null;

            foreach (object obj in res)
            {
                if (obj is PaymentRecord)
                {
                    DataTable dt = obj.ToDataTable();
                    if (dtPaymentRecords == null)
                    {
                        dtPaymentRecords = dt;
                    }
                    else
                    {
                        dtPaymentRecords.Rows.Add(dt.Rows[0].ItemArray);
                    }
                    count++;
                }
            }
        }
Exemplo n.º 6
0
		static void Main(string[] args)
		{
			MultiRecordEngine engine;
			engine = new MultiRecordEngine(typeof(OrdersVerticalBar), typeof(CustomersSemiColon)); 
			engine.RecordSelector = new RecordTypeSelector(CustomSelector);
			object[] res = engine.ReadFile(@"C:\Documents and Settings\l0737860\Mis documentos\Multi.txt"); 
		}
Exemplo n.º 7
0
        public void MultpleRecordsFile()
        {
            engine = new MultiRecordEngine(new Type[] { typeof(OrdersVerticalBar), typeof(CustomersSemiColon), typeof(SampleType) }, new RecordTypeSelector(Test1Selector));

            object[] res = engine.ReadFile(TestCommon.TestPath(@"Good\MultiRecord1.txt"));

            Assert.AreEqual(12, res.Length);

            Assert.AreEqual(12, engine.TotalRecords);
        }
Exemplo n.º 8
0
        public object[] LerArquivo(string urlArquivo)
        {
            var engine = new MultiRecordEngine(typeof(ArquivoCieloCabecalho), typeof(ArquivoCieloDetalhes),
                                               typeof(ArquivoCieloDetalhesCv), typeof(ArquivoCieloTrailer))
            {
                RecordSelector = CustomSelector
            };

            return(engine.ReadFile(urlArquivo));
        }
Exemplo n.º 9
0
        public void MultpleRecordsFileRW()
        {
            engine = new MultiRecordEngine(typeof(OrdersVerticalBar), typeof(CustomersSemiColon), typeof(SampleType));
            engine.RecordSelector = new RecordTypeSelector(CustomSelector);

            object[] res2 = engine.ReadFile(FileTest.Good.MultiRecord1.Path);

            Assert.AreEqual(12, res2.Length);
            Assert.AreEqual(12, engine.TotalRecords);

            engine.WriteFile("tempMR.txt", res2);
            object[] res = engine.ReadFile("tempMR.txt");
            File.Delete("tempMR.txt");

            Assert.AreEqual(12, res.Length);
            Assert.AreEqual(12, engine.TotalRecords);

            Assert.AreEqual(typeof(OrdersVerticalBar), res[0].GetType());
            Assert.AreEqual(typeof(OrdersVerticalBar), res[1].GetType());
            Assert.AreEqual(typeof(CustomersSemiColon), res[2].GetType());
            Assert.AreEqual(typeof(SampleType), res[5].GetType());
        }
Exemplo n.º 10
0
        public void MultpleRecordsFileRW()
        {
            engine = new MultiRecordEngine(typeof(OrdersVerticalBar), typeof(CustomersSemiColon), typeof(SampleType));
            engine.RecordSelector = new RecordTypeSelector(CustomSelector);

            object[] res2 = engine.ReadFile(FileTest.Good.MultiRecord1.Path);

            Assert.AreEqual(12, res2.Length);
            Assert.AreEqual(12, engine.TotalRecords);

            engine.WriteFile("tempMR.txt", res2);
            object[] res = engine.ReadFile("tempMR.txt");
            File.Delete("tempMR.txt");

            Assert.AreEqual(12, res.Length);
            Assert.AreEqual(12, engine.TotalRecords);

            Assert.AreEqual(typeof(OrdersVerticalBar), res[0].GetType());
            Assert.AreEqual(typeof(OrdersVerticalBar), res[1].GetType());
            Assert.AreEqual(typeof(CustomersSemiColon), res[2].GetType());
            Assert.AreEqual(typeof(SampleType), res[5].GetType());
        }
Exemplo n.º 11
0
        //-> File:Input.txt
        /*10248|VINET|5|04071996|01081996|16071996|3|32.38
        10249|TOMSP|6|05071996|16081996|10071996|1|11.61
        ALFKI;Alfreds Futterkiste;Maria Anders;Sales Representative;Obere Str. 57;Berlin;Germany
        ANATR;Ana Trujillo Emparedados y helados;Ana Trujillo;Owner;Avda. de la Constitución 2222;México D.F.;Mexico
        10250|HANAR|4|08071996|05081996|12071996|2|65.83
        10111314012345
        11101314123456
        10251|VICTE|3|08071996|05081996|15071996|1|41.34
        11121314901234
        10101314234567
        ANTON;Antonio Moreno Taquería;Antonio Moreno;Owner;Mataderos  2312;México D.F.;Mexico
        BERGS;Berglunds snabbköp;Christina Berglund;Order Administrator;Berguvsvägen  8;Luleå;Sweden
        */
        //-> /File
        //-> File:RunEngine.cs
        /// <summary>
        /// The idea of this engine is to parse files with different record types
        /// (this engine doesn't use any hierarical structure like the
        /// master-details, all the records are in linear relation for it).
        /// With the MultiRecordEngine you can parse also mixed delimited and
        /// fixed length records.
        /// </summary>
        public override void Run()
        {
            MultiRecordEngine engine;

            engine = new MultiRecordEngine(typeof(Orders),
                                            typeof(Customer),
                                            typeof(SampleType));
            engine.RecordSelector = new RecordTypeSelector(CustomSelector);

            object[] res = engine.ReadFile("Input.txt");

            foreach (var rec in res)
                this.Console.WriteLine(res.ToString());
        }
Exemplo n.º 12
0
		public void MultpleRecordsFile()
		{
			engine = new MultiRecordEngine(new RecordTypeSelector(CustomSelector), typeof(OrdersVerticalBar), typeof(CustomersSemiColon), typeof(SampleType));

            object[] res = engine.ReadFile(Common.TestPath(@"Good\MultiRecord1.txt"));

            Assert.AreEqual(12, res.Length);
            Assert.AreEqual(12, engine.TotalRecords);

			Assert.AreEqual(typeof(OrdersVerticalBar), res[0].GetType());
			Assert.AreEqual(typeof(OrdersVerticalBar), res[1].GetType());
			Assert.AreEqual(typeof(CustomersSemiColon), res[2].GetType());
			Assert.AreEqual(typeof(SampleType), res[5].GetType());
		}
        //-> {Example.File:Input.txt}

        /*10248|VINET|5|04071996|01081996|16071996|3|32.38
         * 10249|TOMSP|6|05071996|16081996|10071996|1|11.61
         * ALFKI;Alfreds Futterkiste;Maria Anders;Sales Representative;Obere Str. 57;Berlin;Germany
         * ANATR;Ana Trujillo Emparedados y helados;Ana Trujillo;Owner;Avda. de la Constitución 2222;México D.F.;Mexico
         * 10250|HANAR|4|08071996|05081996|12071996|2|65.83
         * 10111314012345
         * 11101314123456
         * 10251|VICTE|3|08071996|05081996|15071996|1|41.34
         * 11121314901234
         * 10101314234567
         * ANTON;Antonio Moreno Taquería;Antonio Moreno;Owner;Mataderos  2312;México D.F.;Mexico
         * BERGS;Berglunds snabbköp;Christina Berglund;Order Administrator;Berguvsvägen  8;Luleå;Sweden
         */
        //-> {/Example.File}

        //-> {Example.File:RunEngine.cs}
        /// <summary>
        /// The idea of this engine is to parse files with different record types
        /// (this engine doesn't use any hierarical structure like the
        /// master-details, all the records are in linear relation for it).
        /// With the MultiRecordEngine you can parse also mixed delimited and
        /// fixed length records.
        /// </summary>
        public override void Run()
        {
            MultiRecordEngine engine;

            engine = new MultiRecordEngine(typeof(Orders),
                                           typeof(Customer),
                                           typeof(SampleType));
            engine.RecordSelector = new RecordTypeSelector(CustomSelector);

            object[] res = engine.ReadFile("Input.txt");

            foreach (object rec in res)
            {
                this.Console.WriteLine(res.ToString());
            }
        }
Exemplo n.º 14
0
        //-> /File
        //-> To work with this engine you must create one instance of it in this way:
        public override void Run()
        {
            //-> File:RunEngine.cs

            var engine = new MultiRecordEngine(typeof (Orders),
                typeof (Customer),
                typeof (SampleType));

            engine.RecordSelector = new RecordTypeSelector(CustomSelector);

            var res = engine.ReadFile("Input.txt");

            foreach (var rec in res)
                Console.WriteLine(rec.ToString());

            //-> /File
        }
Exemplo n.º 15
0
        public void MultipleRecordsFile()
        {
            mEngine = new MultiRecordEngine(CustomSelector,
                                            typeof(OrdersVerticalBar),
                                            typeof(CustomersSemiColon),
                                            typeof(SampleType));

            object[] res = mEngine.ReadFile(FileTest.Good.MultiRecord1.Path);

            Assert.AreEqual(12, res.Length);
            Assert.AreEqual(12, mEngine.TotalRecords);

            Assert.AreEqual(typeof(OrdersVerticalBar), res[0].GetType());
            Assert.AreEqual(typeof(OrdersVerticalBar), res[1].GetType());
            Assert.AreEqual(typeof(CustomersSemiColon), res[2].GetType());
            Assert.AreEqual(typeof(SampleType), res[5].GetType());
        }
Exemplo n.º 16
0
        static void Main(string[] args)
        {
            MultiRecordEngine engine = new MultiRecordEngine(typeof(SmartPlusRowH1),
                                                             typeof(SmartPlusRowH2),
                                                             typeof(SmartPlusRowH3),
                                                             typeof(SmartPlusRowB1),
                                                             typeof(SmartPlusRowB2),
                                                             typeof(SmartPlusRowS1),
                                                             typeof(SmartPlusRowS2),
                                                             typeof(SmartPlusRowS3));
            SmartPlusData spd = new SmartPlusData();

            engine.RecordSelector = new RecordTypeSelector(spd.RowSelector);

            var result = engine.ReadFile("\\\\Mac\\Home\\Documents\\Visual Studio 2015\\Projects\\SmartPlusParser\\SmartPlusParser\\FINANCE.DAT");
            List <SmartPlusOrder> orders = SmartPlusData.dataToOrder(result);

            Console.WriteLine("done");
        }
Exemplo n.º 17
0
        //-> /File

        //-> To work with this engine you must create one instance of it in this way:

        public override void Run()
        {
            //-> File:RunEngine.cs

            var engine = new MultiRecordEngine(typeof(Orders),
                                               typeof(Customer),
                                               typeof(SampleType));

            engine.RecordSelector = new RecordTypeSelector(CustomSelector);

            var res = engine.ReadFile("Input.txt");

            foreach (var rec in res)
            {
                Console.WriteLine(rec.ToString());
            }

            //-> /File
        }
Exemplo n.º 18
0
        public DadosRetornoArquivoModel InterpretarArquivo(string caminhoArquivo)
        {
            var engine = new MultiRecordEngine(typeof(VendedorViewModel), typeof(ClienteViewModel), typeof(VendaViewModel));

            engine.RecordSelector = new RecordTypeSelector(CustomSelector);

            var objetos = engine.ReadFile(caminhoArquivo);

            var vendedores = new List <Vendedor>();
            var clientes   = new List <Cliente>();
            var vendas     = new List <Venda>();

            foreach (var objeto in objetos)
            {
                if (objeto is VendedorViewModel)
                {
                    var objetoTipado = (VendedorViewModel)objeto;

                    var vendedor = new Vendedor(objetoTipado.Type, objetoTipado.Cpf, objetoTipado.Name, objetoTipado.Salary);
                    vendedores.Add(vendedor);
                }
                else if (objeto is ClienteViewModel)
                {
                    var objetoTipado = (ClienteViewModel)objeto;
                    var cliente      = new Cliente(objetoTipado.Type, objetoTipado.Cnpj, objetoTipado.Name, objetoTipado.BusinessArea);
                    clientes.Add(cliente);
                }
                if (objeto is VendaViewModel)
                {
                    var vendaTipada = (VendaViewModel)objeto;
                    var venda       = new Venda(vendaTipada.Type, vendaTipada.SaleId, vendaTipada.Salesman);
                    InserirItensDaVenda(vendaTipada, venda);
                    vendas.Add(venda);
                }
            }

            return(new DadosRetornoArquivoModel
            {
                Vendas = vendas,
                Clientes = clientes,
                Vendedores = vendedores,
            });
        }
Exemplo n.º 19
0
        public object[] ReadWellGroupCSVFile(String filePath)
        {
            //parse with 2 record types for Well and Group
            var engine = new MultiRecordEngine(typeof(WellRecord), typeof(GroupRecord));

            engine.RecordSelector = new RecordTypeSelector(CustomSelector);

            //to return errors encountered while parsing
            engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;

            //Read
            object[] result = engine.ReadFile(filePath);

            if (engine.ErrorManager.HasErrors)
            {
                engine.ErrorManager.SaveErrors("errors.out");
            }

            return(result);
        }
        /// <summary>
        /// Method to import file with the help of multi record engine
        /// </summary>
        /// <param name="filePath">path where file is located</param>
        /// <returns>list of data records in the file</returns>
        public List <DataRecord> EvaluateFileContents(string filePath)
        {
            List <DataRecord> results          = new List <DataRecord>();
            MultiRecordEngine file72ByteEngine = new MultiRecordEngine(typeof(DataRecord),
                                                                       typeof(ColumHeaderRecord),
                                                                       typeof(IgnoreRowRecord))
            {
                RecordSelector = new RecordTypeSelector(CustomSelector),
                ErrorMode      = ErrorMode.ThrowException
            };

            var res = file72ByteEngine.ReadFile(filePath);

            foreach (var rec in res)
            {
                if (rec.GetType() == typeof(DataRecord))
                {
                    results.Add((DataRecord)rec);
                }
                else if (rec.GetType() == typeof(ColumHeaderRecord))
                {
                    var columnRecord = (ColumHeaderRecord)rec;
                    if (!(ColumnHeader1.Equals(columnRecord.TeamName.ToLower(), StringComparison.OrdinalIgnoreCase) &&
                          ColumnHeader2.Equals(columnRecord.P.ToLower(), StringComparison.OrdinalIgnoreCase) &&
                          ColumnHeader3.Equals(columnRecord.W.ToLower(), StringComparison.OrdinalIgnoreCase) &&
                          ColumnHeader4.Equals(columnRecord.L.ToLower(), StringComparison.OrdinalIgnoreCase) &&
                          ColumnHeader5.Equals(columnRecord.D.ToLower(), StringComparison.OrdinalIgnoreCase) &&
                          ColumnHeader6.Equals(columnRecord.F.ToLower(), StringComparison.OrdinalIgnoreCase) &&
                          ColumnHeader7.Equals(columnRecord.A.ToLower(), StringComparison.OrdinalIgnoreCase) &&
                          ColumnHeader8.Equals(columnRecord.Pts.ToLower(), StringComparison.OrdinalIgnoreCase)))
                    {
                        throw new FormatException(ErrorMessageInvalidColumns);
                    }
                }
            }
            return(results);
        }
Exemplo n.º 21
0
        /// <summary>
        /// Read an external currency exchange file using MultiRecordEngine
        /// </summary>
        /// <param name="FullFilePath"></param>
        /// <returns>An single dimentional array with all the rows in the file</returns>
        public object[] ReadExternalCurrencyExchageFile(string FullFilePath)
        {
            try
            {
                FileInfo finfo = new FileInfo(FullFilePath);

                if (finfo.Length == 0)
                {
                    throw new Exception($"The file <{FullFilePath}> is empty");
                }

                using (FileStream fs = new FileStream(FullFilePath, FileMode.Open, FileAccess.Read))
                {
                    var engine = new MultiRecordEngine(typeof(CurrencyToConvert), typeof(CurrencyRate));

                    engine.RecordSelector = new RecordTypeSelector(CustomSelector);

                    return(engine.ReadFile(FullFilePath));
                }
            }
            catch (FileNotFoundException e)
            {
                throw new FileNotFoundException($"The file <{FullFilePath}> was not found: '{e.Message}'");
            }
            catch (DirectoryNotFoundException e)
            {
                throw new DirectoryNotFoundException($"The directory was not found: '{e.Message}'");
            }
            catch (IOException e)
            {
                throw new IOException($"The file <{FullFilePath}> could not be opened: '{e.Message}'");
            }
            catch (Exception e)
            {
                throw new Exception($"An error in method ReadExternalCurrencyExchageFile : '{e.Message}'");
            }
        }
Exemplo n.º 22
0
        public Models.Files.PurchaseAcknowledgement.DataSequence.V3 ReadFile(string filename, int batchnumber)
        {
            List <Models.Files.PurchaseAcknowledgement.R02_FileHeader>                 r02 = null;
            List <Models.Files.PurchaseAcknowledgement.R11_PurchaseOrderHeader>        r11 = null;
            List <Models.Files.PurchaseAcknowledgement.R21_FreeFormVendor>             r21 = null;
            List <Models.Files.PurchaseAcknowledgement.R40_LineItem>                   r40 = null;
            List <Models.Files.PurchaseAcknowledgement.R41_AdditionalDetail>           r41 = null;
            List <Models.Files.PurchaseAcknowledgement.R42_AdditionalLineItem>         r42 = null;
            List <Models.Files.PurchaseAcknowledgement.R43_AdditionalLineItem>         r43 = null;
            List <Models.Files.PurchaseAcknowledgement.R44_Item_NumberOrPrice>         r44 = null;
            List <Models.Files.PurchaseAcknowledgement.R45_AdditionalLineItem>         r45 = null;
            List <Models.Files.PurchaseAcknowledgement.R59_PurchaseOrderControlTotals> r59 = null;
            List <Models.Files.PurchaseAcknowledgement.R91_FileTrailer>                r91 = null;

            //
            Models.Files.PurchaseAcknowledgement.DataSequence.V3 file = null;
            Models.Files.PurchaseAcknowledgement.DataSequence.AcknowledgementItem acknowledgement = null;
            //
            string typename             = string.Empty;
            int    acknowledgementCount = 0;
            bool   savedokay            = false;

            try
            {
                MultiRecordEngine engine = new MultiRecordEngine
                                           (
                    typeof(Models.Files.PurchaseAcknowledgement.R02_FileHeader),
                    typeof(Models.Files.PurchaseAcknowledgement.R11_PurchaseOrderHeader),
                    typeof(Models.Files.PurchaseAcknowledgement.R21_FreeFormVendor),
                    typeof(Models.Files.PurchaseAcknowledgement.R40_LineItem),
                    typeof(Models.Files.PurchaseAcknowledgement.R41_AdditionalDetail),
                    typeof(Models.Files.PurchaseAcknowledgement.R42_AdditionalLineItem),
                    typeof(Models.Files.PurchaseAcknowledgement.R43_AdditionalLineItem),
                    typeof(Models.Files.PurchaseAcknowledgement.R44_Item_NumberOrPrice),
                    typeof(Models.Files.PurchaseAcknowledgement.R45_AdditionalLineItem),
                    typeof(Models.Files.PurchaseAcknowledgement.R59_PurchaseOrderControlTotals),
                    typeof(Models.Files.PurchaseAcknowledgement.R91_FileTrailer)
                                           )
                {
                    RecordSelector = new RecordTypeSelector(Models.Files.PurchaseAcknowledgement.Selectors.V3.Custom)
                };

                var res = engine.ReadFile(filename);
                if (res != null && res.Length > 0)
                {
                    file = new Models.Files.PurchaseAcknowledgement.DataSequence.V3();
                    foreach (var rec in res)
                    {
                        typename = rec.GetType().Name.ToUpper();
                        switch (typename)
                        {
                        case "R02_FILEHEADER":
                            Common.Initialize(ref r02);
                            r02.Add((Models.Files.PurchaseAcknowledgement.R02_FileHeader)rec);
                            file.FileHeaderRecord = r02.LastItem();
                            break;

                        case "R11_PURCHASEORDERHEADER":
                            Common.Initialize(ref r11);
                            r11.Add((Models.Files.PurchaseAcknowledgement.R11_PurchaseOrderHeader)rec);
                            file.PurchaseOrderHeaderRecord = r11.LastItem();
                            break;

                        case "R21_FREEFORMVENDOR":
                            Common.Initialize(ref r21);
                            r21.Add((Models.Files.PurchaseAcknowledgement.R21_FreeFormVendor)rec);
                            if (file.FreeFormVendor == null)
                            {
                                file.FreeFormVendor = new List <Models.Files.PurchaseAcknowledgement.R21_FreeFormVendor>();
                            }
                            if (file.FreeFormVendor.Count <= file.Maxes[typename])
                            {
                                file.FreeFormVendor.Add(r21.LastItem());
                            }
                            break;

                        case "R40_LINEITEM":
                            Common.Initialize(ref r40);
                            r40.Add((Models.Files.PurchaseAcknowledgement.R40_LineItem)rec);
                            if (acknowledgementCount == 0)
                            {
                                file.AcknowledgementItems = new List <Models.Files.PurchaseAcknowledgement.DataSequence.AcknowledgementItem>();
                            }
                            else
                            {
                                file.AcknowledgementItems.Add(acknowledgement);
                                acknowledgement = new Models.Files.PurchaseAcknowledgement.DataSequence.AcknowledgementItem();
                            }
                            acknowledgementCount++;
                            acknowledgement = new Models.Files.PurchaseAcknowledgement.DataSequence.AcknowledgementItem
                            {
                                LineItemRecord = r40.LastItem()
                            };
                            break;

                        case "R41_ADDITIONALDETAIL":
                            Common.Initialize(ref r41);
                            r41.Add((Models.Files.PurchaseAcknowledgement.R41_AdditionalDetail)rec);
                            acknowledgement.AdditionalDetailRecord = r41.LastItem();
                            break;

                        case "R42_ADDITIONALLINEITEM":
                            Common.Initialize(ref r42);
                            r42.Add((Models.Files.PurchaseAcknowledgement.R42_AdditionalLineItem)rec);
                            acknowledgement.AddtionalLineItemTitle = r42.LastItem();
                            break;

                        case "R43_ADDITIONALLINEITEM":
                            Common.Initialize(ref r43);
                            r43.Add((Models.Files.PurchaseAcknowledgement.R43_AdditionalLineItem)rec);
                            acknowledgement.AdditionalLineItemPublisher = r43.LastItem();
                            break;

                        case "R44_ITEM_NUMBERORPRICE":
                            Common.Initialize(ref r44);
                            r44.Add((Models.Files.PurchaseAcknowledgement.R44_Item_NumberOrPrice)rec);
                            acknowledgement.ItemNumberOrPriceRecord = r44.LastItem();
                            break;

                        case "R45_ADDITIONALLINEITEM":
                            Common.Initialize(ref r45);
                            r45.Add((Models.Files.PurchaseAcknowledgement.R45_AdditionalLineItem)rec);
                            acknowledgement.AdditionalLineItemClient = r45.LastItem();
                            break;

                        case "R59_PURCHASEORDERCONTROLTOTALS":
                            Common.Initialize(ref r59);
                            r59.Add((Models.Files.PurchaseAcknowledgement.R59_PurchaseOrderControlTotals)rec);
                            if (acknowledgement != null)
                            {
                                file.AcknowledgementItems.Add(acknowledgement);
                                acknowledgement = null;
                            }
                            file.PurchaseOrderControlTotalsRecord = r59.LastItem();
                            break;

                        case "R91_FILETRAILER":
                            Common.Initialize(ref r91);
                            r91.Add((Models.Files.PurchaseAcknowledgement.R91_FileTrailer)rec);
                            file.FileTrailerRecord = r91.LastItem();
                            break;
                        }
                    }
                    using (SQL sql = new SQL(batchnumber, r02, r11, r21, r40, r41, r42, r43, r44, r45, r59, r91)) { savedokay = sql.Successful; }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(file);
        }
Exemplo n.º 23
0
        public void WhenSelectorReturnsTypeThatIsNotInEngine_ShouldThrowBadUsageException_WhenReadingFileAtATime()
        {
            engine = new MultiRecordEngine(new RecordTypeSelector(CustomSelectorReturningBadType),
                                           typeof (OrdersVerticalBar), typeof (CustomersSemiColon), typeof (SampleType));

            Assert.Throws<BadUsageException>(() => engine.ReadFile(FileTest.Good.MultiRecord1.Path));
        }
Exemplo n.º 24
0
        public Models.Files.PurchaseOrder.DataSequence.V3 ReadFile(string filename, int batchnumber)
        {
            List <Models.Files.PurchaseOrder.R00_ClientFileHeader> r00 = null;
            List <Models.Files.PurchaseOrder.R10_ClientHeader>     r10 = null;
            List <Models.Files.PurchaseOrder.R20_FixedSpecialHandlingInstructions> r20 = null;
            List <Models.Files.PurchaseOrder.R21_PurchaseOrderOptions>             r21 = null;
            List <Models.Files.PurchaseOrder.R40_LineItemDetail>           r40         = null;
            List <Models.Files.PurchaseOrder.R41_AdditionalLineItemDetail> r41         = null;
            List <Models.Files.PurchaseOrder.R45_Imprint>              r45             = null;
            List <Models.Files.PurchaseOrder.R46_StickerBarcodeData>   r46barcode      = null;
            List <Models.Files.PurchaseOrder.R46_StickerTextLines>     r46text         = null;
            List <Models.Files.PurchaseOrder.R50_PurchaseOrderTrailer> r50             = null;
            List <Models.Files.PurchaseOrder.R90_FileTrailer>          r90             = null;

            //
            Models.Files.PurchaseOrder.DataSequence.V3                  file        = null;
            Models.Files.PurchaseOrder.DataSequence.PurchaseOrder       order       = null;
            Models.Files.PurchaseOrder.DataSequence.PurchaseOrderDetail orderdetail = null;
            //
            string typename         = string.Empty;
            int    orderdetailCount = 0;
            int    orderCount       = 0;
            bool   savedokay        = false;

            try
            {
                MultiRecordEngine engine = new MultiRecordEngine
                                           (
                    typeof(Models.Files.PurchaseOrder.R00_ClientFileHeader),
                    typeof(Models.Files.PurchaseOrder.R10_ClientHeader),
                    typeof(Models.Files.PurchaseOrder.R20_FixedSpecialHandlingInstructions),
                    typeof(Models.Files.PurchaseOrder.R21_PurchaseOrderOptions),
                    typeof(Models.Files.PurchaseOrder.R40_LineItemDetail),
                    typeof(Models.Files.PurchaseOrder.R41_AdditionalLineItemDetail),
                    typeof(Models.Files.PurchaseOrder.R45_Imprint),
                    typeof(Models.Files.PurchaseOrder.R46_StickerBarcodeData),
                    typeof(Models.Files.PurchaseOrder.R46_StickerTextLines),
                    typeof(Models.Files.PurchaseOrder.R50_PurchaseOrderTrailer),
                    typeof(Models.Files.PurchaseOrder.R90_FileTrailer)
                                           )
                {
                    RecordSelector = new RecordTypeSelector(Models.Files.PurchaseOrder.Selectors.V3.Custom)
                };

                var res = engine.ReadFile(filename);
                if (res != null && res.Length > 0)
                {
                    file = new Models.Files.PurchaseOrder.DataSequence.V3();
                    foreach (var rec in res)
                    {
                        typename = rec.GetType().Name.ToUpper();
                        switch (typename)
                        {
                        case "R00_CLIENTFILEHEADER":
                            Common.Initialize(ref r00);
                            r00.Add((Models.Files.PurchaseOrder.R00_ClientFileHeader)rec);
                            file.FileHeaderRecord = r00.LastItem();
                            break;

                        case "R10_CLIENTHEADER":
                            Common.Initialize(ref r10);
                            r10.Add((Models.Files.PurchaseOrder.R10_ClientHeader)rec);
                            if (orderCount > 0)
                            {
                                if (file.PurchaseOrders == null)
                                {
                                    file.PurchaseOrders = new List <Models.Files.PurchaseOrder.DataSequence.PurchaseOrder>();
                                }
                                if (order != null)
                                {
                                    file.PurchaseOrders.Add(order);
                                }
                            }
                            orderCount++;
                            order = new Models.Files.PurchaseOrder.DataSequence.PurchaseOrder
                            {
                                ClientHeaderRecord = r10.LastItem()
                            };
                            break;

                        case "R20_FIXEDSPECIALHANDLINGINSTRUCTIONS":
                            Common.Initialize(ref r20);
                            r20.Add((Models.Files.PurchaseOrder.R20_FixedSpecialHandlingInstructions)rec);
                            order.FixedHandlingInstructionsRecord = r20.LastItem();
                            break;

                        case "R21_PURCHASEORDEROPTIONS":
                            Common.Initialize(ref r21);
                            r21.Add((Models.Files.PurchaseOrder.R21_PurchaseOrderOptions)rec);
                            order.PurchaseOrderOptionsRecord = r21.LastItem();
                            break;

                        case "R40_LINEITEMDETAIL":
                            Common.Initialize(ref r40);
                            r40.Add((Models.Files.PurchaseOrder.R40_LineItemDetail)rec);
                            if (orderdetailCount > 0)
                            {
                                if (order.PurchaseOrderDetails == null)
                                {
                                    order.PurchaseOrderDetails = new List <Models.Files.PurchaseOrder.DataSequence.PurchaseOrderDetail>();
                                }
                                if (orderdetail != null)
                                {
                                    order.PurchaseOrderDetails.Add(orderdetail);
                                }
                            }
                            orderdetailCount++;
                            orderdetail = new Models.Files.PurchaseOrder.DataSequence.PurchaseOrderDetail
                            {
                                LineItemDetail = r40.LastItem()
                            };
                            break;

                        case "R41_ADDITIONALLINEITEMDETAIL":
                            Common.Initialize(ref r41);
                            r41.Add((Models.Files.PurchaseOrder.R41_AdditionalLineItemDetail)rec);
                            orderdetail.AdditionalLineItemDetail = r41.LastItem();
                            break;

                        case "R45_IMPRINT":
                            Common.Initialize(ref r45);
                            r45.Add((Models.Files.PurchaseOrder.R45_Imprint)rec);
                            if (orderdetail.Imprint == null)
                            {
                                orderdetail.Imprint = new List <Models.Files.PurchaseOrder.R45_Imprint>();
                            }
                            if (file.Maxes.ContainsKey(typename) && orderdetail.Imprint.Count < file.Maxes[typename])
                            {
                                orderdetail.Imprint.Add(r45.LastItem());
                            }
                            break;

                        case "R46_STICKERBARCODEDATA":
                            Common.Initialize(ref r46barcode);
                            r46barcode.Add((Models.Files.PurchaseOrder.R46_StickerBarcodeData)rec);
                            orderdetail.StickerBarcodeDataRecord = r46barcode.LastItem();
                            break;

                        case "R46_STICKERTEXTLINES":
                            Common.Initialize(ref r46text);
                            r46text.Add((Models.Files.PurchaseOrder.R46_StickerTextLines)rec);
                            if (orderdetail.StickerTextLines == null)
                            {
                                orderdetail.StickerTextLines = new List <Models.Files.PurchaseOrder.R46_StickerTextLines>();
                            }
                            if (file.Maxes.ContainsKey(typename) && orderdetail.StickerTextLines.Count < file.Maxes[typename])
                            {
                                orderdetail.StickerTextLines.Add(r46text.LastItem());
                            }
                            break;

                        case "R50_PURCHASEORDERTRAILER":
                            Common.Initialize(ref r50);
                            r50.Add((Models.Files.PurchaseOrder.R50_PurchaseOrderTrailer)rec);
                            file.PurchaseOrderTrailerRecord = r50.LastItem();
                            if (orderdetail != null)
                            {
                                if (order.PurchaseOrderDetails == null)
                                {
                                    order.PurchaseOrderDetails = new List <Models.Files.PurchaseOrder.DataSequence.PurchaseOrderDetail>();
                                }
                                order.PurchaseOrderDetails.Add(orderdetail);
                            }
                            file.PurchaseOrders.Add(order);
                            break;

                        case "R90_FILETRAILER":
                            Common.Initialize(ref r90);
                            r90.Add((Models.Files.PurchaseOrder.R90_FileTrailer)rec);
                            file.FileTrailerRecord = r90.LastItem();
                            break;
                        }
                    }
                    using (SQL sql = new SQL(batchnumber, r00, r10, r20, r21, r40, r41, r45, r46barcode, r46text, r50, r90)) { savedokay = sql.Successful; }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(file);
        }
Exemplo n.º 25
0
        public Models.Files.Invoice.DataSequence.V3 ReadFile(string filename, int batchnumber)
        {
            List <Models.Files.Invoice.R01_InvoiceFileHeader>           r01 = null;
            List <Models.Files.Invoice.R15_InvoiceHeader>               r15 = null;
            List <Models.Files.Invoice.R45_InvoiceDetail>               r45 = null;
            List <Models.Files.Invoice.R46_InvoiceDetail>               r46 = null;
            List <Models.Files.Invoice.R48_DetailTotal>                 r48 = null;
            List <Models.Files.Invoice.R49_DetailTotalOrFreightAndFees> r49 = null;
            List <Models.Files.Invoice.R55_InvoiceTotals>               r55 = null;
            List <Models.Files.Invoice.R57_InvoiceTrailer>              r57 = null;
            List <Models.Files.Invoice.R95_InvoiceFileTrailer>          r95 = null;

            //
            Models.Files.Invoice.DataSequence.V3            file    = null;
            Models.Files.Invoice.DataSequence.InvoiceItem   invoice = null;
            Models.Files.Invoice.DataSequence.InvoiceDetail detail  = null;
            //
            string typename;
            int    invoiceCount = 0;
            int    detailCount  = 0;
            bool   savedokay    = false;

            try
            {
                MultiRecordEngine engine = new MultiRecordEngine
                                           (
                    typeof(Models.Files.Invoice.R01_InvoiceFileHeader),
                    typeof(Models.Files.Invoice.R15_InvoiceHeader),
                    typeof(Models.Files.Invoice.R45_InvoiceDetail),
                    typeof(Models.Files.Invoice.R46_InvoiceDetail),
                    typeof(Models.Files.Invoice.R48_DetailTotal),
                    typeof(Models.Files.Invoice.R49_DetailTotalOrFreightAndFees),
                    typeof(Models.Files.Invoice.R55_InvoiceTotals),
                    typeof(Models.Files.Invoice.R57_InvoiceTrailer),
                    typeof(Models.Files.Invoice.R95_InvoiceFileTrailer)
                                           )
                {
                    RecordSelector = new RecordTypeSelector(Models.Files.Invoice.Selectors.V3.Custom)
                };

                var res = engine.ReadFile(filename);

                if (res != null && res.Length > 0)
                {
                    file = new Models.Files.Invoice.DataSequence.V3();
                    foreach (var rec in res)
                    {
                        typename = rec.GetType().Name.ToUpper();
                        switch (typename)
                        {
                        case "R01_INVOICEFILEHEADER":
                            Common.Initialize(ref r01);
                            r01.Add((Models.Files.Invoice.R01_InvoiceFileHeader)rec);
                            file.InvoiceFileHeaderRecord = r01.LastItem();
                            break;

                        case "R15_INVOICEHEADER":
                            Common.Initialize(ref r15);
                            r15.Add((Models.Files.Invoice.R15_InvoiceHeader)rec);
                            if (invoiceCount > 0)
                            {
                                if (invoice != null)
                                {
                                    file.Invoices.Add(invoice);
                                    invoice = null;
                                }
                            }
                            invoiceCount++;
                            if (invoice == null)
                            {
                                invoice = new Models.Files.Invoice.DataSequence.InvoiceItem();
                            }
                            invoice.InvoiceHeaderRecord = r15.LastItem();
                            break;

                        case "R45_INVOICEDETAIL":
                            Common.Initialize(ref r45);
                            r45.Add((Models.Files.Invoice.R45_InvoiceDetail)rec);
                            if (detailCount > 0)
                            {
                                if (detail != null)
                                {
                                    invoice.InvoiceDetails.Add(detail);
                                    detail = null;
                                }
                            }
                            detailCount++;
                            if (detail == null)
                            {
                                detail = new Models.Files.Invoice.DataSequence.InvoiceDetail();
                            }
                            detail.InvoiceDetailRecord = r45.LastItem();
                            break;

                        case "R46_INVOICEDETAIL":
                            Common.Initialize(ref r46);
                            r46.Add((Models.Files.Invoice.R46_InvoiceDetail)rec);
                            detail.InvoiceDetail2Record = r46.LastItem();
                            break;

                        case "R48_DETAILTOTAL":
                            Common.Initialize(ref r48);
                            r48.Add((Models.Files.Invoice.R48_DetailTotal)rec);
                            detail.DetailTotalRecord = r48.LastItem();
                            break;

                        case "R49_DETAILTOTALORFREIGHTANDFEES":
                            Common.Initialize(ref r49);
                            r49.Add((Models.Files.Invoice.R49_DetailTotalOrFreightAndFees)rec);
                            detail.DetailTotalOrFreightAndFeesRecord = r49.LastItem();
                            break;

                        case "R55_INVOICETOTALS":
                            Common.Initialize(ref r55);
                            r55.Add((Models.Files.Invoice.R55_InvoiceTotals)rec);
                            invoice.InvoiceTotalRecord = r55.LastItem();
                            if (detail != null)
                            {
                                invoice.InvoiceDetails.Add(detail);
                                detail = null;
                            }
                            break;

                        case "R57_INVOICETRAILER":
                            Common.Initialize(ref r57);
                            r57.Add((Models.Files.Invoice.R57_InvoiceTrailer)rec);
                            if (detail != null)
                            {
                                invoice.InvoiceDetails.Add(detail);
                                detail = null;
                            }
                            invoice.InvoiceTrailerRecord = r57.LastItem();
                            break;

                        case "R95_INVOICEFILETRAILER":
                            Common.Initialize(ref r95);
                            r95.Add((Models.Files.Invoice.R95_InvoiceFileTrailer)rec);
                            file.InvoiceFileTrailerRecord = r95.LastItem();
                            break;
                        }
                    }
                    if (invoice != null)
                    {
                        file.Invoices.Add(invoice);
                        invoice = null;
                    }
                    using (SQL sql = new SQL(batchnumber, r01, r15, r45, r46, r48, r49, r55, r57, r95)) { savedokay = sql.Successful; }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(file);
        }
Exemplo n.º 26
0
        public Models.Files.PurchaseOrder.DataSequence.V3 ReadFile(string filename, int batchnumber)
        {
            List <Models.Files.PurchaseOrder.R00_FileHeader>   r00 = null;
            List <Models.Files.PurchaseOrder.R10_ClientHeader> r10 = null;
            List <Models.Files.PurchaseOrder.R20_FixedSpecialHandlingInstructions> r20    = null;
            List <Models.Files.PurchaseOrder.R21_PurchaseOrderOptions>             r21    = null;
            List <Models.Files.PurchaseOrder.R24_CustomerCost>                        r24 = null;
            List <Models.Files.PurchaseOrder.R25_CustomerBillToName>                  r25 = null;
            List <Models.Files.PurchaseOrder.R26_CustomerBillToPhoneNumber>           r26 = null;
            List <Models.Files.PurchaseOrder.R27_CustomerBillToAddressLine>           r27 = null;
            List <Models.Files.PurchaseOrder.R29_CustomerBillToCityStateZip>          r29 = null;
            List <Models.Files.PurchaseOrder.R30_RecipientShipToName>                 r30 = null;
            List <Models.Files.PurchaseOrder.R31_RecipientShipToPhone>                r31 = null;
            List <Models.Files.PurchaseOrder.R32_ShippingRecordRecipientAddressLine>  r32 = null;
            List <Models.Files.PurchaseOrder.R34_RecipientShippingRecordCityStateZip> r34 = null;
            List <Models.Files.PurchaseOrder.R35_DropShipDetail>                      r35 = null;
            List <Models.Files.PurchaseOrder.R36_SpecialDeliveryInstructions>         r36 = null;
            List <Models.Files.PurchaseOrder.R37_MarketingMessage>                    r37 = null;
            List <Models.Files.PurchaseOrder.R38_GiftMessage>          r38 = null;
            List <Models.Files.PurchaseOrder.R40_LineItem>             r40 = null;
            List <Models.Files.PurchaseOrder.R41_AdditionalLineItem>   r41 = null;
            List <Models.Files.PurchaseOrder.R42_LineItemGiftMessage>  r42 = null;
            List <Models.Files.PurchaseOrder.R45_Imprint>              r45 = null;
            List <Models.Files.PurchaseOrder.R50_PurchaseOrderControl> r50 = null;
            List <Models.Files.PurchaseOrder.R90_FileTrailer>          r90 = null;

            //
            Models.Files.PurchaseOrder.DataSequence.V3            file  = null;
            Models.Files.PurchaseOrder.DataSequence.PurchaseOrder order = null;
            Models.Files.PurchaseOrder.DataSequence.Item          item  = null;
            //
            string typename   = string.Empty;
            int    orderCount = 0;
            int    itemCount  = 0;
            bool   savedokay  = false;

            try
            {
                MultiRecordEngine engine = new MultiRecordEngine
                                           (
                    typeof(Models.Files.PurchaseOrder.R00_FileHeader),
                    typeof(Models.Files.PurchaseOrder.R10_ClientHeader),
                    typeof(Models.Files.PurchaseOrder.R20_FixedSpecialHandlingInstructions),
                    typeof(Models.Files.PurchaseOrder.R21_PurchaseOrderOptions),
                    typeof(Models.Files.PurchaseOrder.R24_CustomerCost),
                    typeof(Models.Files.PurchaseOrder.R25_CustomerBillToName),
                    typeof(Models.Files.PurchaseOrder.R26_CustomerBillToPhoneNumber),
                    typeof(Models.Files.PurchaseOrder.R27_CustomerBillToAddressLine),
                    typeof(Models.Files.PurchaseOrder.R29_CustomerBillToCityStateZip),
                    typeof(Models.Files.PurchaseOrder.R30_RecipientShipToName),
                    typeof(Models.Files.PurchaseOrder.R31_RecipientShipToPhone),
                    typeof(Models.Files.PurchaseOrder.R32_ShippingRecordRecipientAddressLine),
                    typeof(Models.Files.PurchaseOrder.R34_RecipientShippingRecordCityStateZip),
                    typeof(Models.Files.PurchaseOrder.R35_DropShipDetail),
                    typeof(Models.Files.PurchaseOrder.R36_SpecialDeliveryInstructions),
                    typeof(Models.Files.PurchaseOrder.R37_MarketingMessage),
                    typeof(Models.Files.PurchaseOrder.R38_GiftMessage),
                    typeof(Models.Files.PurchaseOrder.R40_LineItem),
                    typeof(Models.Files.PurchaseOrder.R41_AdditionalLineItem),
                    typeof(Models.Files.PurchaseOrder.R42_LineItemGiftMessage),
                    typeof(Models.Files.PurchaseOrder.R45_Imprint),
                    typeof(Models.Files.PurchaseOrder.R50_PurchaseOrderControl),
                    typeof(Models.Files.PurchaseOrder.R90_FileTrailer)
                                           )
                {
                    RecordSelector = new RecordTypeSelector(Models.Files.PurchaseOrder.Selectors.V3.Custom)
                };
                var res = engine.ReadFile(filename);
                if (res != null && res.Length > 0)
                {
                    file = new Models.Files.PurchaseOrder.DataSequence.V3();
                    foreach (var rec in res)
                    {
                        typename = rec.GetType().Name.ToUpper();
                        switch (typename)
                        {
                        case "R00_FILEHEADER":
                            Common.Initialize(ref r00);
                            r00.Add((Models.Files.PurchaseOrder.R00_FileHeader)rec);
                            file.FileHeaderRecord = r00.LastItem();
                            break;

                        case "R10_CLIENTHEADER":
                            Common.Initialize(ref r10);
                            r10.Add((Models.Files.PurchaseOrder.R10_ClientHeader)rec);
                            if (orderCount > 0)
                            {
                                if (file.PurchaseOrders == null)
                                {
                                    file.PurchaseOrders = new List <Models.Files.PurchaseOrder.DataSequence.PurchaseOrder>();
                                }
                                if (order != null)
                                {
                                    file.PurchaseOrders.Add(order);
                                    order = null;
                                }
                            }
                            orderCount++;
                            order = new Models.Files.PurchaseOrder.DataSequence.PurchaseOrder
                            {
                                ClientHeaderRecord = r10.LastItem()
                            };
                            break;

                        case "R20_FIXEDSPECIALHANDLINGINSTRUCTIONS":
                            Common.Initialize(ref r20);
                            r20.Add((Models.Files.PurchaseOrder.R20_FixedSpecialHandlingInstructions)rec);
                            order.FixedHandlingInstructionsRecord = r20.LastItem();
                            break;

                        case "R21_PURCHASEORDEROPTIONS":
                            Common.Initialize(ref r21);
                            r21.Add((Models.Files.PurchaseOrder.R21_PurchaseOrderOptions)rec);
                            order.PurchaseOrderOptionsRecord = r21.LastItem();
                            break;

                        case "R24_CUSTOMERCOST":
                            Common.Initialize(ref r24);
                            r24.Add((Models.Files.PurchaseOrder.R24_CustomerCost)rec);
                            order.CustomerCostRecord = r24.LastItem();
                            break;

                        case "R25_CUSTOMERBILLTONAME":
                            Common.Initialize(ref r25);
                            r25.Add((Models.Files.PurchaseOrder.R25_CustomerBillToName)rec);
                            order.CustomerBillToNameRecord = r25.LastItem();
                            break;

                        case "R26_CUSTOMERBILLTOPHONENUMBER":
                            Common.Initialize(ref r26);
                            r26.Add((Models.Files.PurchaseOrder.R26_CustomerBillToPhoneNumber)rec);
                            order.CustomerBillToPhoneNumberRecord = r26.LastItem();
                            break;

                        case "R27_CUSTOMERBILLTOADDRESSLINE":
                            Common.Initialize(ref r27);
                            r27.Add((Models.Files.PurchaseOrder.R27_CustomerBillToAddressLine)rec);
                            if (order.CustomerBillToAddressLine == null)
                            {
                                order.CustomerBillToAddressLine = new List <Models.Files.PurchaseOrder.R27_CustomerBillToAddressLine>();
                            }
                            if (order.CustomerBillToAddressLine.Count < file.Maxes[typename])
                            {
                                order.CustomerBillToAddressLine.Add(r27.LastItem());
                            }
                            break;

                        case "R29_CUSTOMERBILLTOCITYSTATEZIP":
                            Common.Initialize(ref r29);
                            r29.Add((Models.Files.PurchaseOrder.R29_CustomerBillToCityStateZip)rec);
                            order.CustomerBillToCityStateZipRecord = r29.LastItem();
                            break;

                        case "R30_RECIPIENTSHIPTONAME":
                            Common.Initialize(ref r30);
                            r30.Add((Models.Files.PurchaseOrder.R30_RecipientShipToName)rec);
                            order.RecipientShipToNameRecord = r30.LastItem();
                            break;

                        case "R31_RECIPIENTSHIPTOPHONE":
                            Common.Initialize(ref r31);
                            r31.Add((Models.Files.PurchaseOrder.R31_RecipientShipToPhone)rec);
                            order.RecipientShipToPhoneRecord = r31.LastItem();
                            break;

                        case "R32_SHIPPINGRECORDRECIPIENTADDRESSLINE":
                            Common.Initialize(ref r32);
                            r32.Add((Models.Files.PurchaseOrder.R32_ShippingRecordRecipientAddressLine)rec);
                            if (order.ShipRecordRecipientAddressLine == null)
                            {
                                order.ShipRecordRecipientAddressLine = new List <Models.Files.PurchaseOrder.R32_ShippingRecordRecipientAddressLine>();
                            }
                            if (order.ShipRecordRecipientAddressLine.Count < file.Maxes[typename])
                            {
                                order.ShipRecordRecipientAddressLine.Add(r32.LastItem());
                            }
                            break;

                        case "R34_RECIPIENTSHIPPINGRECORDCITYSTATEZIP":
                            Common.Initialize(ref r34);
                            r34.Add((Models.Files.PurchaseOrder.R34_RecipientShippingRecordCityStateZip)rec);
                            order.RecipShippingRecordCityStateZipRecord = r34.LastItem();
                            break;

                        case "R35_DROPSHIPDETAIL":
                            Common.Initialize(ref r35);
                            r35.Add((Models.Files.PurchaseOrder.R35_DropShipDetail)rec);
                            order.DropShipDetailRecord = r35.LastItem();
                            break;

                        case "R36_SPECIALDELIVERYINSTRUCTIONS":
                            Common.Initialize(ref r36);
                            r36.Add((Models.Files.PurchaseOrder.R36_SpecialDeliveryInstructions)rec);
                            if (order.SpecialDeliveryInstructions == null)
                            {
                                order.SpecialDeliveryInstructions = new List <Models.Files.PurchaseOrder.R36_SpecialDeliveryInstructions>();
                            }
                            if (order.SpecialDeliveryInstructions.Count < file.Maxes[typename])
                            {
                                order.SpecialDeliveryInstructions.Add(r36.LastItem());
                            }
                            break;

                        case "R37_MARKETINGMESSAGE":
                            Common.Initialize(ref r37);
                            r37.Add((Models.Files.PurchaseOrder.R37_MarketingMessage)rec);
                            if (order.MarketingMessage == null)
                            {
                                order.MarketingMessage = new List <Models.Files.PurchaseOrder.R37_MarketingMessage>();
                            }
                            if (order.MarketingMessage.Count < file.Maxes[typename])
                            {
                                order.MarketingMessage.Add(r37.LastItem());
                            }
                            break;

                        case "R38_GIFTMESSAGE":
                            Common.Initialize(ref r38);
                            r38.Add((Models.Files.PurchaseOrder.R38_GiftMessage)rec);
                            if (order.GiftMessage == null)
                            {
                                order.GiftMessage = new List <Models.Files.PurchaseOrder.R38_GiftMessage>();
                            }
                            if (order.GiftMessage.Count < file.Maxes[typename])
                            {
                                order.GiftMessage.Add(r38.LastItem());
                            }
                            break;

                        case "R40_LINEITEM":
                            Common.Initialize(ref r40);
                            r40.Add((Models.Files.PurchaseOrder.R40_LineItem)rec);
                            if (itemCount > 0)
                            {
                                if (order.Items == null)
                                {
                                    order.Items = new List <Models.Files.PurchaseOrder.DataSequence.Item>();
                                }
                                if (item != null)
                                {
                                    order.Items.Add(item);
                                    item = null;
                                }
                            }
                            itemCount++;
                            item = new Models.Files.PurchaseOrder.DataSequence.Item
                            {
                                LineItemRecord = r40.LastItem()
                            };
                            break;

                        case "R41_ADDITIONALLINEITEM":
                            Common.Initialize(ref r41);
                            r41.Add((Models.Files.PurchaseOrder.R41_AdditionalLineItem)rec);
                            item.AdditionalLineItemRecord = r41.LastItem();
                            break;

                        case "R42_LINEITEMGIFTMESSAGE":
                            Common.Initialize(ref r42);
                            r42.Add((Models.Files.PurchaseOrder.R42_LineItemGiftMessage)rec);
                            if (item.LineItemGiftMessage.Count < file.Maxes[typename])
                            {
                                item.LineItemGiftMessage.Add(r42.LastItem());
                            }
                            break;

                        case "R45_IMPRINT":
                            Common.Initialize(ref r45);
                            r45.Add((Models.Files.PurchaseOrder.R45_Imprint)rec);
                            if (item.Imprint == null)
                            {
                                item.Imprint = new List <Models.Files.PurchaseOrder.R45_Imprint>();
                            }
                            if (item.Imprint.Count < file.Maxes[typename])
                            {
                                item.Imprint.Add(r45.LastItem());
                            }
                            break;

                        case "R50_PURCHASEORDERCONTROL":
                            Common.Initialize(ref r50);
                            r50.Add((Models.Files.PurchaseOrder.R50_PurchaseOrderControl)rec);
                            order.PurchaseOrderControlRecord = r50.LastItem();
                            file.PurchaseOrders.Add(order);
                            if (item != null)
                            {
                                if (file.PurchaseOrders[file.PurchaseOrders.Count - 1].Items == null)
                                {
                                    file.PurchaseOrders[file.PurchaseOrders.Count - 1].Items = new List <Models.Files.PurchaseOrder.DataSequence.Item>();
                                }
                                file.PurchaseOrders[file.PurchaseOrders.Count - 1].Items.Add(item);
                                item = null;
                            }
                            order = null;
                            break;

                        case "R90_FILETRAILER":
                            Common.Initialize(ref r90);
                            r90.Add((Models.Files.PurchaseOrder.R90_FileTrailer)rec);
                            file.FileTrailerRecord = r90.LastItem();
                            break;
                        }
                    }
                    if (order != null)
                    {
                        file.PurchaseOrders.Add(order);
                        if (item != null)
                        {
                            if (file.PurchaseOrders[file.PurchaseOrders.Count - 1].Items == null)
                            {
                                file.PurchaseOrders[file.PurchaseOrders.Count - 1].Items = new List <Models.Files.PurchaseOrder.DataSequence.Item>();
                            }
                            file.PurchaseOrders[file.PurchaseOrders.Count - 1].Items.Add(item);
                            item = null;
                        }
                        order = null;
                    }
                    using (SQL sql = new SQL(batchnumber, r00, r10, r20, r21, r24, r25, r26, r27, r29, r30, r31, r32, r34, r35, r36, r37, r38, r40, r41, r42, r45, r50, r90)) { savedokay = sql.Successful; }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(file);
        }
Exemplo n.º 27
0
        public Models.Files.PurchaseAcknowledgement.DataSequence.V3 ReadFile(string filename, int batchnumber)
        {
            List <Models.Files.PurchaseAcknowledgement.R02_FileHeader>                    r02 = null;
            List <Models.Files.PurchaseAcknowledgement.R11_PurchaseOrderHeader>           r11 = null;
            List <Models.Files.PurchaseAcknowledgement.R21_FreeFormVendor>                r21 = null;
            List <Models.Files.PurchaseAcknowledgement.R30_RecipientShipToNameAndAddress> r30 = null;
            List <Models.Files.PurchaseAcknowledgement.R32_RecipientShipToAdditionalShippingInformation> r32 = null;
            List <Models.Files.PurchaseAcknowledgement.R34_RecipientShipToCityStateAndZip> r34 = null;
            List <Models.Files.PurchaseAcknowledgement.R40_LineItem>                   r40     = null;
            List <Models.Files.PurchaseAcknowledgement.R41_AdditionalDetail>           r41     = null;
            List <Models.Files.PurchaseAcknowledgement.R42_AdditionalLineItem>         r42     = null;
            List <Models.Files.PurchaseAcknowledgement.R43_AdditionalLineItem>         r43     = null;
            List <Models.Files.PurchaseAcknowledgement.R44_ItemNumberOrPrice>          r44     = null;
            List <Models.Files.PurchaseAcknowledgement.R59_PurchaseOrderControlTotals> r59     = null;
            List <Models.Files.PurchaseAcknowledgement.R91_FileTrailer>                r91     = null;

            //
            Models.Files.PurchaseAcknowledgement.DataSequence.V3       file = null;
            Models.Files.PurchaseAcknowledgement.DataSequence.LineItem item = null;
            //
            string typename  = string.Empty;
            int    itemCount = 0;
            bool   savedokay = false;

            try
            {
                MultiRecordEngine engine = new MultiRecordEngine
                                           (
                    typeof(Models.Files.PurchaseAcknowledgement.R02_FileHeader),
                    typeof(Models.Files.PurchaseAcknowledgement.R11_PurchaseOrderHeader),
                    typeof(Models.Files.PurchaseAcknowledgement.R21_FreeFormVendor),
                    typeof(Models.Files.PurchaseAcknowledgement.R30_RecipientShipToNameAndAddress),
                    typeof(Models.Files.PurchaseAcknowledgement.R32_RecipientShipToAdditionalShippingInformation),
                    typeof(Models.Files.PurchaseAcknowledgement.R34_RecipientShipToCityStateAndZip),
                    typeof(Models.Files.PurchaseAcknowledgement.R40_LineItem),
                    typeof(Models.Files.PurchaseAcknowledgement.R41_AdditionalDetail),
                    typeof(Models.Files.PurchaseAcknowledgement.R42_AdditionalLineItem),
                    typeof(Models.Files.PurchaseAcknowledgement.R43_AdditionalLineItem),
                    typeof(Models.Files.PurchaseAcknowledgement.R44_ItemNumberOrPrice),
                    typeof(Models.Files.PurchaseAcknowledgement.R59_PurchaseOrderControlTotals),
                    typeof(Models.Files.PurchaseAcknowledgement.R91_FileTrailer)
                                           )
                {
                    RecordSelector = new RecordTypeSelector(Models.Files.PurchaseAcknowledgement.Selectors.V3.Custom)
                };


                var res = engine.ReadFile(filename);
                if (res != null && res.Length > 0)
                {
                    file = new Models.Files.PurchaseAcknowledgement.DataSequence.V3();

                    foreach (var rec in res)
                    {
                        typename = rec.GetType().Name.ToUpper();
                        switch (typename)
                        {
                        case "R02_FILEHEADER":
                            Common.Initialize(ref r02);
                            r02.Add((Models.Files.PurchaseAcknowledgement.R02_FileHeader)rec);
                            file.FileHeaderRecord = r02.LastItem();
                            break;

                        case "R11_PURCHASEORDERHEADER":
                            Common.Initialize(ref r11);
                            r11.Add((Models.Files.PurchaseAcknowledgement.R11_PurchaseOrderHeader)rec);
                            file.PurchaseOrderHeaderRecord = r11.LastItem();
                            break;

                        case "R21_FREEFORMVENDOR":
                            Common.Initialize(ref r21);
                            r21.Add((Models.Files.PurchaseAcknowledgement.R21_FreeFormVendor)rec);
                            if (file.FreeFormVendor == null)
                            {
                                file.FreeFormVendor = new List <Models.Files.PurchaseAcknowledgement.R21_FreeFormVendor>();
                            }
                            if (file.FreeFormVendor.Count < file.Maxes[typename])
                            {
                                file.FreeFormVendor.Add(r21.LastItem());
                            }
                            break;

                        case "R30_RECIPIENTSHIPTONAMEANDADDRESS":
                            Common.Initialize(ref r30);
                            r30.Add((Models.Files.PurchaseAcknowledgement.R30_RecipientShipToNameAndAddress)rec);
                            file.RecipShipToNameAndAddressRecord = r30.LastItem();
                            break;

                        case "R32_RECIPIENTSHIPTOADDITIONALSHIPPINGINFORMATION":
                            Common.Initialize(ref r32);
                            r32.Add((Models.Files.PurchaseAcknowledgement.R32_RecipientShipToAdditionalShippingInformation)rec);
                            if (file.RecipShipToAdditionalShippingInfo == null)
                            {
                                file.RecipShipToAdditionalShippingInfo = new List <Models.Files.PurchaseAcknowledgement.R32_RecipientShipToAdditionalShippingInformation>();
                            }
                            if (file.RecipShipToAdditionalShippingInfo.Count < file.Maxes[typename])
                            {
                                file.RecipShipToAdditionalShippingInfo.Add(r32.LastItem());
                            }
                            break;

                        case "R34_RECIPIENTSHIPTOCITYSTATEANDZIP":
                            Common.Initialize(ref r34);
                            r34.Add((Models.Files.PurchaseAcknowledgement.R34_RecipientShipToCityStateAndZip)rec);
                            file.RecipShipToCityStateAndZipRecord = r34.LastItem();
                            break;

                        case "R40_LINEITEM":
                            Common.Initialize(ref r40);
                            r40.Add((Models.Files.PurchaseAcknowledgement.R40_LineItem)rec);
                            if (itemCount > 0)
                            {
                                if (item != null)
                                {
                                    file.LineItems.Add(item);
                                    item = null;
                                }
                            }
                            if (file.LineItems == null)
                            {
                                file.LineItems = new List <Models.Files.PurchaseAcknowledgement.DataSequence.LineItem>();
                            }
                            item = new Models.Files.PurchaseAcknowledgement.DataSequence.LineItem();
                            itemCount++;
                            item.LineItemRecord = r40.LastItem();
                            break;

                        case "R41_ADDITIONALDETAIL":
                            Common.Initialize(ref r41);
                            r41.Add((Models.Files.PurchaseAcknowledgement.R41_AdditionalDetail)rec);
                            item.AdditionalDetailRecord = r41.LastItem();
                            break;

                        case "R42_ADDITIONALLINEITEM":
                            Common.Initialize(ref r42);
                            r42.Add((Models.Files.PurchaseAcknowledgement.R42_AdditionalLineItem)rec);
                            item.AddtionalLineItemTitleRecord = r42.LastItem();
                            break;

                        case "R43_ADDITIONALLINEITEM":
                            Common.Initialize(ref r43);
                            r43.Add((Models.Files.PurchaseAcknowledgement.R43_AdditionalLineItem)rec);
                            item.AdditionalLineItemPublisherRecord = r43.LastItem();
                            break;

                        case "R44_ITEMNUMBERORPRICE":
                            Common.Initialize(ref r44);
                            r44.Add((Models.Files.PurchaseAcknowledgement.R44_ItemNumberOrPrice)rec);
                            item.ItemNumberOrPriceRecord = r44.LastItem();
                            break;

                        case "R59_PURCHASEORDERCONTROLTOTALS":
                            Common.Initialize(ref r59);
                            r59.Add((Models.Files.PurchaseAcknowledgement.R59_PurchaseOrderControlTotals)rec);
                            file.PurchaseOrderControlTotalsRecord = r59.LastItem();
                            break;

                        case "R91_FILETRAILER":
                            Common.Initialize(ref r91);
                            r91.Add((Models.Files.PurchaseAcknowledgement.R91_FileTrailer)rec);
                            file.FileTrailerRecord = r91.LastItem();
                            break;
                        }
                    }
                    if (item != null)
                    {
                        file.LineItems.Add(item);
                        item      = null;
                        itemCount = 0;
                    }
                    using (SQL sql = new SQL(batchnumber, r02, r11, r21, r30, r32, r34, r40, r41, r42, r43, r44, r59, r91)) { savedokay = sql.Successful; }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(file);
        }
Exemplo n.º 28
0
        public List <Models.Files.ShipNotice.DataSequence.V3> ReadFile(string filename, int batchnumber)
        {
            List <Models.Files.ShipNotice.CR_CompanyRecord>     saveRCR = null;
            List <Models.Files.ShipNotice.OR_OrderRecord>       saveROR = null;
            List <Models.Files.ShipNotice.OD_OrderDetailRecord> saveROD = null;
            //
            List <Models.Files.ShipNotice.DataSequence.V3> file = null;

            Models.Files.ShipNotice.DataSequence.V3             notice   = null;
            Models.Files.ShipNotice.DataSequence.Shipment       shipment = new Models.Files.ShipNotice.DataSequence.Shipment();
            List <Models.Files.ShipNotice.OD_OrderDetailRecord> detail   = new List <Models.Files.ShipNotice.OD_OrderDetailRecord>();
            string typename      = string.Empty;
            int    shipmentCount = 0;
            int    detailCount   = 0;
            int    noticeCount   = 0;
            bool   savedokay     = false;

            try
            {
                MultiRecordEngine engine = new MultiRecordEngine
                                           (
                    typeof(Models.Files.ShipNotice.CR_CompanyRecord),
                    typeof(Models.Files.ShipNotice.OD_OrderDetailRecord),
                    typeof(Models.Files.ShipNotice.OR_OrderRecord)
                                           )
                {
                    RecordSelector = new RecordTypeSelector(Models.Files.ShipNotice.Selectors.V3.Custom)
                };
                var res = engine.ReadFile(filename);
                if (res != null && res.Length > 0)
                {
                    file = new List <Models.Files.ShipNotice.DataSequence.V3>();
                    foreach (var rec in res)
                    {
                        typename = rec.GetType().Name.ToUpper();
                        switch (typename)
                        {
                        case "CR_COMPANYRECORD":
                            Common.Initialize(ref saveRCR);
                            saveRCR.Add((Models.Files.ShipNotice.CR_CompanyRecord)rec);
                            if (noticeCount > 0)
                            {
                                if (detailCount > 0)
                                {
                                    if (detail != null)
                                    {
                                        shipment.OrderDetail = detail;
                                        shipment.OrderRecord = saveROR.LastItem();
                                        detail      = null;
                                        detailCount = 0;
                                    }
                                }
                                if (shipment != null)
                                {
                                    if (notice.Shipments == null)
                                    {
                                        notice.Shipments = new List <Models.Files.ShipNotice.DataSequence.Shipment>();
                                    }
                                    notice.Shipments.Add(shipment);
                                    shipment      = null;
                                    shipmentCount = 0;
                                }
                                if (notice != null)
                                {
                                    file.Add(notice);
                                    notice = null;
                                }
                            }
                            noticeCount++;
                            notice = new Models.Files.ShipNotice.DataSequence.V3()
                            {
                                CompanyRecord = saveRCR.LastItem()
                            };
                            break;

                        case "OR_ORDERRECORD":
                            Common.Initialize(ref saveROR);
                            saveROR.Add((Models.Files.ShipNotice.OR_OrderRecord)rec);
                            shipmentCount++;
                            if (shipment == null)
                            {
                                shipment = new Models.Files.ShipNotice.DataSequence.Shipment()
                                {
                                    OrderRecord = new Models.Files.ShipNotice.OR_OrderRecord(),
                                    OrderDetail = new List <Models.Files.ShipNotice.OD_OrderDetailRecord>()
                                };
                            }
                            shipment.OrderRecord = saveROR.LastItem();
                            break;

                        case "OD_ORDERDETAILRECORD":
                            Common.Initialize(ref saveROD);
                            saveROD.Add((Models.Files.ShipNotice.OD_OrderDetailRecord)rec);
                            if (detailCount == 0)
                            {
                                detail = new List <Models.Files.ShipNotice.OD_OrderDetailRecord>();
                            }
                            detailCount++;
                            detail.Add(saveROD.LastItem());
                            break;
                        }
                    }
                    if (detail != null)
                    {
                        shipment.OrderDetail.AddRange(detail);
                        detail      = null;
                        detailCount = 0;
                        notice.Shipments.Add(shipment);
                    }
                    if (notice != null)
                    {
                        file.Add(notice);
                        notice = null;
                    }
                }
                using (SQL sql = new SQL(batchnumber, saveRCR, saveROD, saveROR)) { savedokay = sql.Successful; }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(file);
        }
Exemplo n.º 29
0
        public Models.Files.ShipNotice.DataSequence.V3 ReadFile(string filename, int batchnumber)
        {
            List <Models.Files.ShipNotice.CR_ASNCompany>        cr = null;
            List <Models.Files.ShipNotice.OP_ASNPack>           op = null;
            List <Models.Files.ShipNotice.OR_ASNShipment>       or = null;
            List <Models.Files.ShipNotice.OD_ASNShipmentDetail> od = null;

            //
            Models.Files.ShipNotice.DataSequence.V3 file = null;
            List <Models.Files.ShipNotice.DataSequence.Shipment> allShipments = new List <Models.Files.ShipNotice.DataSequence.Shipment>();

            Models.Files.ShipNotice.DataSequence.Shipment       singleShipment = new Models.Files.ShipNotice.DataSequence.Shipment();
            List <Models.Files.ShipNotice.OD_ASNShipmentDetail> details        = new List <Models.Files.ShipNotice.OD_ASNShipmentDetail>();
            //
            string typename       = string.Empty;
            int    shipmentsCount = 0;
            int    detailsCount   = 0;
            bool   savedokay      = false;

            try
            {
                MultiRecordEngine engine = new MultiRecordEngine
                                           (
                    typeof(Models.Files.ShipNotice.CR_ASNCompany),
                    typeof(Models.Files.ShipNotice.OP_ASNPack),
                    typeof(Models.Files.ShipNotice.OR_ASNShipment),
                    typeof(Models.Files.ShipNotice.OD_ASNShipmentDetail)
                                           )
                {
                    RecordSelector = new RecordTypeSelector(Models.Files.ShipNotice.Selectors.V3.Custom)
                };

                var res = engine.ReadFile(filename);
                if (res != null && res.Length > 0)
                {
                    file = new Models.Files.ShipNotice.DataSequence.V3();
                    foreach (var rec in res)
                    {
                        typename = rec.GetType().Name.ToUpper();
                        switch (typename)
                        {
                        case "CR_ASNCOMPANY":
                            Common.Initialize(ref cr);
                            cr.Add((Models.Files.ShipNotice.CR_ASNCompany)rec);
                            file.FileHeaderRecord = cr.LastItem();
                            break;

                        case "OP_ASNPACK":
                            Common.Initialize(ref op);
                            op.Add((Models.Files.ShipNotice.OP_ASNPack)rec);
                            file.PackRecord = op.LastItem();
                            break;

                        case "OR_ASNSHIPMENT":
                            Common.Initialize(ref or);
                            or.Add((Models.Files.ShipNotice.OR_ASNShipment)rec);
                            if (shipmentsCount > 0)
                            {
                                if (details != null)
                                {
                                    singleShipment.LineItemDetailRecords.AddRange(details);
                                    details      = null;
                                    detailsCount = 0;
                                }
                                if (file.Shipments == null)
                                {
                                    file.Shipments = new List <Models.Files.ShipNotice.DataSequence.Shipment>();
                                }
                                file.Shipments.Add(singleShipment);
                            }
                            shipmentsCount++;
                            singleShipment = new Models.Files.ShipNotice.DataSequence.Shipment()
                            {
                                ShipmentRecord        = new Models.Files.ShipNotice.OR_ASNShipment(),
                                LineItemDetailRecords = new List <Models.Files.ShipNotice.OD_ASNShipmentDetail>()
                            };
                            singleShipment.ShipmentRecord = or.LastItem();
                            break;

                        case "OD_ASNSHIPMENTDETAIL":
                            Common.Initialize(ref od);
                            od.Add((Models.Files.ShipNotice.OD_ASNShipmentDetail)rec);
                            if (detailsCount == 0)
                            {
                                details = new List <Models.Files.ShipNotice.OD_ASNShipmentDetail>();
                            }
                            detailsCount++;
                            details.Add(od.LastItem());
                            break;
                        }
                    }
                    if (details != null)
                    {
                        singleShipment.LineItemDetailRecords.AddRange(details);
                        details      = null;
                        detailsCount = 0;
                        file.Shipments.Add(singleShipment);
                    }
                    using (SQL sql = new SQL(batchnumber, cr, od, op, or)) { savedokay = sql.Successful; }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return(file);
        }