private void bwAutoRanking_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); autoMode = true; var macroAttempt = 1; var macroMaxAttempts = 4; retrymacro: Log.n("Auto: Kjører makro.. [" + macroAttempt + "]"); DateTime date = appConfig.dbTo; double span = (DateTime.Now - appConfig.dbTo).TotalDays; if (span > 31) date = DateTime.Now.AddMonths(-1); // Begrens oss til å importere en måned bak i tid if (appConfig.dbTo == DateTime.Now) date = GetFirstDayOfMonth(appConfig.dbTo); var macroForm = (FormMacro)StartMacro(date, macroProgram, bwAutoRanking, macroAttempt); if (macroForm.errorCode != 0) { // Feil oppstod under kjøring av macro macroAttempt++; Log.n("Auto: Feil oppstod under kjøring av makro. Feilbeskjed: " + macroForm.errorMessage + " Kode: " + macroForm.errorCode, Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroForm.errorCode == 6) return; if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; return; } if (!File.Exists(appConfig.csvElguideExportFolder + @"\irank.csv") || File.GetLastWriteTime(appConfig.csvElguideExportFolder + @"\irank.csv").Date != DateTime.Now.Date) { // CSV finnes ikke eller filen er ikke oppdatert i dag i.e. data ble ikke eksportert riktig med makro macroAttempt++; Log.n("Auto: CSV er IKKE oppdatert, eller ingen tilgang. Sjekk CSV lokasjon og makro innstillinger.", Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; return; } Log.n("Auto: Importerer data.."); csvFilesToImport.Clear(); ImportManager importMng = new ImportManager(this, csvFilesToImport); importMng.DoImportTransactions(bwAutoRanking, true); if (importMng.returnCode != 0) { // Feil under importering macroAttempt++; Log.n("Auto: Feil oppstod under importering. Kode: " + importMng.returnCode, Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) goto retrymacro; return; } // Oppdaterer gjeldene datoer.. vi oppdaterer UI etter ferdig jobb RetrieveDb(true); // Hvis valgt, avbryt utsending hvis vi ikke har tall fra i går. if (appConfig.epostOnlySendUpdated) { int dager = (DateTime.Now - appConfig.dbTo).Days; Log.n("Auto: Kontrollerer dato på sist transaksjon.. (dager: " + dager + ")"); if (dager > 1) { Log.n("Auto: Fant ingen transaksjoner fra gårsdagen. Avbryter..", Color.Red); return; } else Log.n("Auto: Fant transaksjoner fra gårsdagen. Fortsetter..", Color.Green); } // Legg ved service rapport if (appConfig.AutoService && appConfig.epostIncService && service.dbServiceDatoFra.Date != service.dbServiceDatoTil.Date) { Log.n("Auto: Legger ved service rapport.."); MakeServiceOversikt(true, bwAutoRanking); } if (appConfig.onlineImporterAuto) { OnlineImporter importer = new OnlineImporter(this); Log.n("Auto: Oppdatere Prisguide.no produkter.."); processing.SetText = "Oppdaterer Prisguide.no produkter.."; bool successfull = importer.StartProcessingPrisguide(bwAutoStore); if (!successfull) Log.n("Auto: Misslykket oppdatering av Prisguide.no produkter. Se logg for detaljer.", Color.Red); Log.n("Auto: Oppdatere Ukenytt produkter fra Elkjop.no.."); processing.SetText = "Oppdaterer Ukenytt produkter fra Elkjop.no.."; successfull = importer.StartProcessingWeekly(bwAutoStore); if (!successfull) Log.n("Auto: Misslykket oppdatering av Ukenytt produkter. Se logg for detaljer.", Color.Red); } List<string> openXmlFiles = new List<string> { }; if (appConfig.openXml_AllSalesRep_AutoSend) { bool sendNow = false; if (appConfig.openXml_AllSalesRep_AutoSend_Daily) sendNow = true; else { if (appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Sunday) sendNow = true; else if (!appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Monday) sendNow = true; } if (sendNow) { Log.n("Auto: Starter generering av regneark.."); string file = openXml.CreateDocumentSpecial(OpenXML.DOC_ALL_SALES_REP, bwAutoRanking); if (!string.IsNullOrEmpty(file)) openXmlFiles.Add(file); } } processing.SetText = "Klargjør for sending av ranking.."; Log.n("Auto: Konverterer ranking til PDF.."); KgsaEmail kgsaEmail = new KgsaEmail(this); string pdfAlt = CreatePDF("Full", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Full'.."; if (openXmlFiles.Count > 0) { openXmlFiles.Add(pdfAlt); kgsaEmail.Send(openXmlFiles, appConfig.dbTo, "Full", appConfig.epostEmne, appConfig.epostBody); } else kgsaEmail.Send(pdfAlt, appConfig.dbTo, "Full", appConfig.epostEmne, appConfig.epostBody); string pdfComputer = CreatePDF("Computer", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Computer'.."; kgsaEmail.Send(pdfComputer, appConfig.dbTo, "Computer", appConfig.epostEmne, appConfig.epostBody); string pdfAudioVideo = CreatePDF("AudioVideo", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'AudioVideo'.."; kgsaEmail.Send(pdfAudioVideo, appConfig.dbTo, "AudioVideo", appConfig.epostEmne, appConfig.epostBody); string pdfTelecom = CreatePDF("Telecom", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Telecom'.."; kgsaEmail.Send(pdfTelecom, appConfig.dbTo, "Telecom", appConfig.epostEmne, appConfig.epostBody); string pdfCross = CreatePDF("Cross", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Cross'.."; kgsaEmail.Send(pdfCross, appConfig.dbTo, "Cross", appConfig.epostEmne, appConfig.epostBody); string pdfVinn = CreatePDF("Vinnprodukter", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'Vinn'.."; kgsaEmail.Send(pdfVinn, appConfig.dbTo, "Vinnprodukter", appConfig.epostEmne, appConfig.epostBody); if (appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Sunday) { string pdfAltUkestart = CreatePDF("FullUkestart", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'FullUkestart'.."; kgsaEmail.Send(pdfAltUkestart, appConfig.dbTo, "FullUkestart", appConfig.epostEmne, appConfig.epostBody); } else if (!appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Monday) { string pdfAltUkestart = CreatePDF("FullUkestart", "", bwAutoRanking); processing.SetText = "Sender e-post for gruppe 'FullUkestart'.."; kgsaEmail.Send(pdfAltUkestart, appConfig.dbTo, "FullUkestart", appConfig.epostEmne, appConfig.epostBody); } if (String.IsNullOrEmpty(pdfAlt) && String.IsNullOrEmpty(pdfComputer) && String.IsNullOrEmpty(pdfAudioVideo) && String.IsNullOrEmpty(pdfTelecom)) { // Feil under pdf generering og sending av epost Log.n("Auto: Feil oppstod under generering av PDF og sending av epost. Se logg for detaljer.", Color.Red); return; } if (appConfig.pdfExport && !String.IsNullOrEmpty(appConfig.pdfExportFolder) && !String.IsNullOrEmpty(pdfAlt)) { Log.n("Auto: Lagrer kopi av PDF til.."); try { File.Copy(pdfAlt, appConfig.pdfExportFolder); } catch { Log.n("Auto: Feil oppstod under kopiering av PDF."); } } // App database update if (appConfig.blueServerIsEnabled) { Log.n("Auto: Oppdaterer App-databasene.."); AppManager app = new AppManager(this); if (app.UpdateAll(bwAutoRanking)) Log.n("Auto: App-databasene er oppdatert"); else Log.e("Auto: App-databasene er IKKE oppdatert. Se logg for detaljer"); } }
private void bwMacroRanking_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); autoMode = true; var macroAttempt = 1; var macroMaxAttempts = 4; retrymacro: Log.n("Auto: Kjører makro.. [" + macroAttempt + "]"); DateTime date = appConfig.dbTo; double span = (DateTime.Now - appConfig.dbTo).TotalDays; if (span > 31) date = DateTime.Now.AddMonths(-1); // Begrens oss til å importere en måned bak i tid if (appConfig.dbTo == DateTime.Now) date = GetFirstDayOfMonth(appConfig.dbTo); var macroForm = (FormMacro)StartMacro(date, macroProgram, bwMacroRanking, macroAttempt); if (macroForm.errorCode != 0) { // Feil oppstod under kjøring av macro macroAttempt++; Log.n("Auto: Feil oppstod under kjøring av makro. Feilbeskjed: " + macroForm.errorMessage + " Kode: " + macroForm.errorCode, Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroForm.errorCode == 6) return; if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; e.Result = macroForm.errorCode; return; } if (!File.Exists(appConfig.csvElguideExportFolder + @"\irank.csv") || File.GetLastWriteTime(appConfig.csvElguideExportFolder + @"\irank.csv").Date != DateTime.Now.Date) { // CSV finnes ikke eller filen er ikke oppdatert i dag i.e. data ble ikke eksportert riktig med makro macroAttempt++; Log.n("Auto: CSV er IKKE oppdatert, eller ingen tilgang. Sjekk CSV lokasjon og makro innstillinger.", Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; return; } Log.n("Auto: Importerer data.."); csvFilesToImport.Clear(); ImportManager importMng = new ImportManager(this, csvFilesToImport); importMng.DoImportTransactions(bwAutoRanking, true); if (importMng.returnCode != 0) { // Feil under importering macroAttempt++; Log.n("Auto: Feil oppstod under importering. Kode: " + importMng.returnCode, Color.Red); for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) goto retrymacro; return; } }
private void bwMacro_DoWork(object sender, DoWorkEventArgs e) { try { FormMain.autoMode = true; SendMessage("Starter test makro.."); DateTime date = DateTime.Now; date = date.AddDays(-2); FormMacro form = new FormMacro(main, date, FormMain.macroProgram, 0, true, bwMacro); form.StartPosition = FormStartPosition.CenterScreen; form.ShowDialog(); if (form.errorCode != 0) { e.Result = "Makro returnerte med feilkode " + form.errorCode + " - Feilmelding: " + form.errorMessage; return; } SendMessage("Importerer data.."); var csvFilesToImport = new List<string>() { }; ImportManager importMng = new ImportManager(main, csvFilesToImport); importMng.DoImportTransactions(bwMacro, false); if (importMng.returnCode != 0) { e.Result = "Importering misslyktes med feilkode " + importMng.returnCode; return; } SendMessage("Forbereder ranking.."); main.RetrieveDb(true); SendMessage("Lager PDF.."); string pdf = main.CreatePDF("Full", "", bwMacro); List<MailAddress> recip = new List<MailAddress>() { }; recip.Add(new MailAddress(kgsaEmail.emailDb.Rows[0]["Address"].ToString(), kgsaEmail.emailDb.Rows[0]["Name"].ToString())); SendMessage("Sender e-post for mottaker " + kgsaEmail.emailDb.Rows[0]["Address"].ToString() + ".."); if (!kgsaEmail.InternalSendMail(recip, main.appConfig.epostEmne, main.appConfig.epostBody, new List<string> { pdf }, main.appConfig.epostBrukBcc)) { e.Result = "Sending av e-post misslyktes"; return; } e.Result = "OK"; } catch (Exception ex) { SendMessage("Kritisk feil oppstod under kjøring av Test Makro! Se logg for detaljer.", Color.Red); Log.Unhandled(ex); e.Result = "Exception: " + ex.Message; } }
private void bwImport_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); ImportManager importMng = new ImportManager(this, csvFilesToImport); importMng.DoImportTransactions(bwImport, false); e.Result = importMng; csvFilesToImport.Clear(); }