private static void PopulateConceptHeader(ref Concept con, ConceptCSV csv) { log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.GetDirectoryName(Assembly.GetAssembly(typeof(ConceptCSV)).Location) + @"\" + "log4net.config")); log.Debug($"Populating concept header with {String.Join(",",csv)}"); try { con.batch = JDE.GetNextBatchNumber().ToString(); DataRow r = csv.DT.Rows[0]; con.BillToAddress = Double.Parse(r["CUSTOMER NUMBER"].ToString()); con.ConceptID = JDE.GetConceptID(con.BillToAddress); con.JulianOrderDate = CommonFunctions.DateStringToJulian(System.DateTime.Today.ToString()); con.OrderDetails = new List <ConceptLine>(); con.PONumber = r["PO NUMBER"].ToString(); con.OrderedBy = r["ORDERED BY"].ToString(); con.ShippingVendor = Double.Parse(r["SHIPPING VENDOR"].ToString()); con.ShippingMode = r["SHIPPING METHOD"].ToString(); } catch (Exception eBLL) { log.Error($"Error populating concept header" + eBLL.Message); throw; } return; }
} // CSVtoConcept public static ConceptCSV ConceptToCSV(Concept con) { //TODO: Do I ever need this? ConceptCSV csv = new ConceptCSV(); return(csv); } // ConceptToCSV
/// <summary> /// Add a single datarow to the DataTable by copying the right row in the conceptCSV into the ShipToCSV /// </summary> /// <param name="storenumber"></param> /// <param name="concept"></param> /// <param name="conceptID"></param> private void PopulateDataRow(string storenumber, ConceptCSV concept, string conceptID) { DataRow r = DT.NewRow(); string StoreNumberMinusConcept = storenumber.Substring(0, storenumber.LastIndexOf('-')); string selection = "[STORE NUMBER] = '" + StoreNumberMinusConcept + "'"; DataRow[] ConceptRow = concept.DT.Select(selection); foreach (Header h in HeaderRow) { if (0 == String.Compare("TAX AREA CODE", h.ColumnName.ToUpper())) { r["TAX AREA CODE"] = String.Empty; // Filled out later for F03012 load } else if (0 == String.Compare("CONCEPT CODE", h.ColumnName.ToUpper())) { r["CONCEPT CODE"] = conceptID; } else if (0 == String.Compare("JDE ADDRESS", h.ColumnName.ToUpper())) { r["JDE ADDRESS"] = 0; // The Z-File upload populates the JDE address in JDE } else if (0 == String.Compare("TAX EXPLANATION CODE", h.ColumnName.ToUpper())) { r["TAX EXPLANATION CODE"] = String.Empty; // Filled out later for F03012 load } else { r[h.ColumnName.ToUpper()] = ConceptRow[0].Field <string>(h.ColumnName.ToUpper()); } } log.Debug($"Adding row to ShipToCSV: {String.Join(",", r.ItemArray)}"); DT.Rows.Add(r); } // PopulateDataRow
/// <summary> /// Populate the empty ShipToCSV object /// </summary> /// <param name="missing"></param> /// <param name="concept"></param> public void PopulateSpreadsheet(List <string> missing, ConceptCSV concept) { if (null == DT) { DT = new DataTable(); PopulateColumns(); string conceptID = JDE.GetConceptID(Double.Parse(concept.DT.Rows[0].Field <string>("CUSTOMER NUMBER"))); foreach (string shipto in missing) { PopulateDataRow(shipto, concept, conceptID); } } else { log.Error("The DataTable for ShipToCSV already exists."); throw new System.AggregateException("Error, the DataTable for ShipToCSV already exists & must be deleted first."); } }
/// <summary> /// Convert a csv object into a concept object /// </summary> /// <param name="csv"></param> /// <returns></returns> public static Concept CSVtoConcept(ConceptCSV csv) { Concept con = new Concept(); ConceptLine entry; int linenumber; DataRow r1; List <DataRow> rows = new List <DataRow>(); double document = JDE.GetDocumentNumbers(csv.DT.Rows.Count); // reserve a set of document numbers PopulateConceptHeader(ref con, csv); // Get a list of unique store numbers List <string> stores = csv.DT.AsEnumerable().Select(n => n.Field <string>("STORE NUMBER")).Distinct().ToList(); // Loop through that customer and add all of that customer's lines to the datatable foreach (string store in stores) { rows = csv.DT.AsEnumerable().Where(n => store == n.Field <string>("STORE NUMBER")).ToList(); linenumber = 1; // Start at linenumber 1 foreach (DataRow r in rows) { entry = PopulateConceptLine(document, r["STORE NUMBER"].ToString(), linenumber, // Line # r["PART NUMBER"].ToString(), // The part number Double.Parse(r["ORDER QTY"].ToString()), CommonFunctions.DateStringToJulian(r["REQ'D SHIP DATE"].ToString()), con); con.OrderDetails.Add(entry); linenumber++; } // Now add the freight line for this customer r1 = rows[0]; // get the first row entry = PopulateConceptLine(document, r1["STORE NUMBER"].ToString(), linenumber, // Line #2 is the freight line "9227", // The freight part number 1, // Qty of 1 CommonFunctions.DateStringToJulian(r1["REQ'D SHIP DATE"].ToString()), con); con.OrderDetails.Add(entry); document++; } return(con); } // CSVtoConcept