Exemplo n.º 1
0
        public bool WriteFile(string filename, Models.Files.ShipNotice.DataSequence.V3 data)
        {
            List <object> writelist = new List <object>();
            bool          success   = false;

            try
            {
                //build list
                writelist.Add(data.FileHeaderRecord);
                if (Common.IsValid(data.PackRecord, false))
                {
                    writelist.Add(data.PackRecord);
                }
                if (data.Shipments != null && data.Shipments.Count > 0)
                {
                    foreach (Models.Files.ShipNotice.DataSequence.Shipment item in data.Shipments)
                    {
                        if (Common.IsValid(item.ShipmentRecord, false))
                        {
                            writelist.Add(item.ShipmentRecord);
                        }
                        foreach (Models.Files.ShipNotice.OD_ASNShipmentDetail detail in item.LineItemDetailRecords)
                        {
                            if (Common.IsValid(detail, false))
                            {
                                writelist.Add(detail);
                            }
                        }
                    }
                }
                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.Invoice.Selectors.V3.Custom)
                };
                engine.WriteFile(filename, writelist.ToArray());
                success = true;
            }
            catch (Exception ex)
            {
                log.Error(ex);
                success = false;
            }
            return(success);
        }
Exemplo n.º 2
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.º 3
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);
        }