Example #1
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);
        }
Example #2
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);
        }