private void bwAutoStore_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); autoMode = true; var macroAttempt = 1; var macroMaxAttempts = 4; retrymacro: Log.n("Auto: Kjører makro.. [" + macroAttempt + "]"); FormMacro formMacro = (FormMacro)StartMacro(DateTime.Now.AddDays(-1), macroProgramStore, bwAutoStore, macroAttempt); e.Result = formMacro.errorCode; if (formMacro.errorCode != 0) { // Feil oppstod under kjøring av macro macroAttempt++; if (formMacro.errorCode != 2) { Log.n("Auto: Feil oppstod under kjøring av makro. Feilbeskjed: " + formMacro.errorMessage + " Kode: " + formMacro.errorCode, Color.Red); processing.SetText = formMacro.errorMessage; } for (int i = 0; i < 60; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(50); } if (formMacro.errorCode == 6) return; if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; e.Result = formMacro.errorCode; return; } if (!File.Exists(appConfig.csvElguideExportFolder + @"\wobsolete.zip") || File.GetLastWriteTime(appConfig.csvElguideExportFolder + @"\wobsolete.zip").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 && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; return; } Log.n("Auto: Importerer data.."); string extracted = obsolete.Decompress(appConfig.csvElguideExportFolder + @"\wobsolete.zip"); if (!String.IsNullOrEmpty(extracted)) { if (obsolete.Import(extracted, bwImportObsolete)) e.Result = 0; else { Log.n("Auto: Importering mislyktes!", Color.Red); macroAttempt++; if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; e.Result = 6; return; } } else { Log.n("Auto: Utpakking mislykket av arkiv.", Color.Red); if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; e.Result = 6; return; } if (appConfig.blueServerIsEnabled && appConfig.blueServerDatabaseUpdated.Date != DateTime.Now.Date) { Log.n("Auto: Oppdaterer App-databasene.."); processing.SetText = "Oppdaterer App-databasene.."; AppManager app = new AppManager(this); if (app.UpdateAll(bwAutoStore)) Log.n("Auto: App-databasene er klar."); else Log.e("Auto: App-databasene er IKKE klar. Se logg for detaljer"); } 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); } }
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"); } }