public void TestSteps() { bool SkipF0101 = true; bool SkipF03012 = true; // 1.) Read the concept ConceptCSV TestConceptCSV = new ConceptCSV(@"E:\gitHub\Rollout\TestFiles\SageRolloutExample1.csv", ","); TestConceptCSV.ReadConcept(); // 2.) Test for missing entries List <string> TestMissing = TestConceptCSV.CheckForMissingShipToAddresses(); // 3.) If entries are missing, do the following: if (0 < TestMissing.Count && !SkipF0101) { // 4.) Populate the missing CSV using the list of missing items ShipToCSV MissingShipToCSV = new ShipToCSV(@"E:\gitHub\Rollout\TestFiles\SageRolloutMissing.csv", ","); MissingShipToCSV.PopulateSpreadsheet(TestMissing, TestConceptCSV); // 5.) Populate the transformed data structure ShipTo MissingShipTo = XfrmShipTo.CSVToShipTo(MissingShipToCSV, false); // Don't look up JDE Addresses // 6.) Upload the transformed data structure to the F0101 Z-File JDE.PopulateF0101Z2(MissingShipTo); // 7.) Now write the CSV to disk MissingShipToCSV.WriteCSV(); // 8.) Now, someone must run R01010Z to load the data into JDE. // Popup window } else if (!SkipF03012) { // TODO: 9.) Check for F03012 records // 10.) If F03012 records are missing: ShipToCSV MissingShipToCSV = new ShipToCSV(@"E:\gitHub\Rollout\TestFiles\SageRolloutMissing.csv", ","); MissingShipToCSV.ReadShipTo(); if (MissingShipToCSV.ValidateHeader() && // Required row is all there MissingShipToCSV.ValidateRows(false)) // We can't have an empty tax area code { // 11.) Convert the CSV into a data structure we can upload ShipTo PopulatedShipTo = XfrmShipTo.CSVToShipTo(MissingShipToCSV, true); // Lookup JDE Address // 12.) Upload the data structure into JDE JDE.PopulateF03012Z1(PopulatedShipTo); // 13.) Now someone must run R03010Z to load the data into JDE. } else { //TODO: Say we don't have a valid spreadsheet int x = 0; x++; } } else { Concept TestConcept = XfrmConcept.CSVtoConcept(TestConceptCSV); JDE.PopulateF47011(TestConcept); JDE.PopulateF47012(TestConcept); } }
public void PopulateF03012Z1() { ShipToCSV PopulatedCSV = new ShipToCSV(@"E:\gitHub\Rollout\TestFiles\SageRolloutMissing.csv", ","); PopulatedCSV.ReadShipTo(); PopulatedCSV.ValidateHeader(); PopulatedCSV.ValidateRows(false); // Force non-empty tax area code ShipTo PopulatedShipTo = XfrmShipTo.CSVToShipTo(PopulatedCSV, true); // Lookup JDE address JDE.PopulateF03012Z1(PopulatedShipTo); }
} // AddressBookFlow /// <summary> /// Control flow for the customer master data load /// </summary> private void CustomerMasterFlow() { log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.GetDirectoryName(Assembly.GetAssembly(typeof(FileIO)).Location) + @"\" + "log4net.config")); log.Debug($"Beginning customer master F03012 Z-File Load flow."); using (LoadingForm frm = new LoadingForm()) { frm.Visible = true; MissingShipToCSV = null; // make sure to clear this out each time we load a spreadsheet // 1.) Get the file to load frm.AddText("Get file name to load."); string FileToLoad = FileIO.GetFileName(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), FileFilter); if (String.Empty != FileToLoad) { try { // 2.) Load the file log.Debug($"Attempting to load file {FileToLoad} using <tab> as a delimiter"); frm.AddText($"Attempting to load file {FileToLoad} using <tab> as a delimiter."); MissingShipToCSV = new ShipToCSV(FileToLoad, "\t"); MissingShipToCSV.ReadShipTo(); frm.AddText($"Successfully read file {FileToLoad}."); // 3.) Validate the required columns exist in the spreadsheet log.Debug($"Attempting to validate all required columns exist in the file."); frm.AddText("Validating required columns exist in the file."); if (!ValidateShipToHeader(ref MissingShipToCSV)) { return; } // 4.) Validate the data in the rows match the column requirements frm.AddText("Validate data is in the correct format for each row and column."); log.Debug("Validating all row data in all required columns"); if (!ValidateShipToRows(ref MissingShipToCSV, false)) { return; } // No Blank tax area codes allowed // 5.) Either populate the data table for viewing or load the data into JDE using (new CenterDialog(this)) { DialogResult result = MessageBox.Show($"All {MissingShipToCSV.DT.Rows.Count} rows of data appear to be valid -- Further checks required.\r\nTry to Load the Data into JDE?\r\nSelect No to preview the detail data before load.", "Load Data?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); if (DialogResult.Cancel == result) { return; } ShipTo ship = null; // 5a.) Save the data into a ShipTo & save that to JDE log.Debug($"Tranform the ShipToCSV into a ShipTo object"); frm.AddText($"Converting CSV file to a JDE loadable object."); ship = XfrmShipTo.CSVToShipTo(MissingShipToCSV, true); // Get the JDE address, since we need it // 5a.1) Verify there aren't any unfound addresses log.Debug($"Checking that all JDE addresses are > 0"); frm.AddText($"Validating JDE Addresses were found for all rows."); if (AnyZeroAddresses(ship)) { return; } // 5a.2) Verify all tax codes are valid log.Debug($"Verifying all tax codes are valid entries in F4008"); frm.AddText($"Validating Tax codes are active in JDE."); if (!ValidateTaxCodes(ship)) { return; } // 5a.2.a) Verify all tax code explanations are valid log.Debug($"Verifying all tax code explanations are valid entries in UDC 00/EX"); frm.AddText($"Validating Tax Explanations are valid in JDE."); if (!ValidateTaxExplanations(ship)) { return; } if (DialogResult.Yes == result) { // 5a.3) Populate the Z file log.Debug($"Populating F03012Z1 with data"); frm.AddText("Loading JDE F03012Z1 with data."); JDE.PopulateF03012Z1(ship); // 5b.) Prompt the user to go to JDE log.Debug($"Successfully processed the Ship To information into F03012Z1 with batch number {ship.batch}."); frm.AddText($"Successfully processed bactch number: {ship.batch}."); using (new CenterDialog(this)) { MessageBox.Show($"Your BATCH NUMBER is: {ship.batch}\r\n\r\nThe CUSTOMER MASTER information was successfully loaded into JDE.\r\nPlease go to JDE, and run the CUSTOMER MASTER load UBE.\r\n", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else if (DialogResult.No == result) { // 5c.3) Populate the datatable with concept information frm.AddText("Successfully created JDE loadable object."); this.dgv_DataDisplay.DataSource = ship.NewShipTos; } } } catch (Exception er) { log.Error($"{er.Message} + {er.InnerException} + {er.StackTrace}"); using (new CenterDialog(this)) { MessageBox.Show($"{er.Message} + {er.InnerException} + {er.StackTrace}", "Error in Rollout", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } return; } // CustomerMasterFlow