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); }
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); }
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); }