public FormSettingsMacro(FormMain form) { this.main = form; this.kgsaEmail = new KgsaEmail(main); InitializeComponent(); timerMsgClear.Tick += timer; Log.d("Makro Innstillinger åpnet."); }
private void bwSendEmail_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); FormSendEmail se = (FormSendEmail)e.Argument; KgsaEmail kgsaEmail = new KgsaEmail(this); string rankingType = ""; if (se.comboBoxType.SelectedIndex == 0) rankingType = "Full"; else if (se.comboBoxType.SelectedIndex == 1) rankingType = "AudioVideo"; else if (se.comboBoxType.SelectedIndex == 2) rankingType = "Telecom"; else if (se.comboBoxType.SelectedIndex == 3) rankingType = "Computer"; else if (se.comboBoxType.SelectedIndex == 4) rankingType = "Cross"; else if (se.comboBoxType.SelectedIndex == 5) rankingType = "Vinnprodukter"; else if (se.comboBoxType.SelectedIndex == 6) rankingType = "FullUkestart"; string epostGruppe = se.comboBoxGruppe.GetItemText(se.comboBoxGruppe.SelectedItem); if (se.comboBoxGruppe.SelectedIndex == 0) epostGruppe = ""; string pdf = CreatePDF(rankingType, "", bwAutoRanking); if (!String.IsNullOrEmpty(pdf)) { processing.SetText = "Sender e-post for gruppe \"" + epostGruppe + "\".."; if (!kgsaEmail.Send(pdf, appConfig.dbTo, epostGruppe, se.textBoxTitle.Text, se.textBoxContent.Text)) e.Cancel = true; } else e.Cancel = true; }
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 bwQuickAuto_DoWork(object sender, DoWorkEventArgs e) { ProgressStart(); autoMode = true; var macroAttempt = 0; var macroMaxAttempts = 4; retrymacro: macroAttempt++; FormMacro formMacro = (FormMacro)StartMacro(appConfig.dbTo, macroProgramQuick, bwQuickAuto, macroAttempt); e.Result = formMacro.errorCode; if (formMacro.errorCode == 6) { Log.n("En kritisk feil forhindret makro i å utføre sine oppgaver. Se logg for detaljer.", Color.Red); e.Result = 6; return; } if (tableMacroQuick == null || tableMacroQuick.Rows.Count < 5 || formMacro.errorCode != 0) { System.Threading.Thread.Sleep(3000); if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen goto retrymacro; if (formMacro.errorCode != 2) Log.n("Kveldstall: Feil oppstod under kveldsranking automatisering. Feilbeskjed: " + formMacro.errorMessage + " Kode: " + formMacro.errorCode, Color.Red); return; } BudgetImporter budgetImporter = new BudgetImporter(this, DateTime.Now); if (appConfig.dailyBudgetQuickRankingAutoUpdate && appConfig.dailyBudgetIncludeInQuickRanking) { Log.n("Kveldstall: Starter nedlasting av dagens budsjett.."); processing.SetText = "Henter dagens budsjett.."; budgetImporter.FindAndDownloadBudget(bwQuickAuto); } ClearBudgetHash(BudgetCategory.Daglig); MakeBudgetPage(BudgetCategory.Daglig, bwQuickAuto); Log.n("Kveldstall: Konverterer kveldranking til PDF.."); processing.SetText = "Konverterer kveldsranking til PDF.."; string pdfBudget = CreatePDF("", "\"" + settingsPath + "\\budsjettDaglig.html\" ", bwQuickAuto); if (String.IsNullOrEmpty(pdfBudget) || !File.Exists(pdfBudget)) { // Feil under pdf generering Log.n("Kveldstall: Feil oppstod under konvertering av kveldsranking til PDF. Se logg for detaljer.", Color.Red); e.Result = 6; return; } processing.SetText = "Sender kveldstall.."; KgsaEmail email = new KgsaEmail(this); if (!email.Send(pdfBudget, DateTime.Now, "Quick", appConfig.epostEmneQuick, appConfig.epostBodyQuick)) { // Feil under pdf generering Log.n("Kveldstall: Feil oppstod under sending av kveldsranking til PDF. Se logg for detaljer.", Color.Red); e.Result = 8; return; } }
private void CheckOldDatabaseElements() { try { if (main.connection.TableExists("tblObsolete") && !main.connection.TableExists("tblUkurans")) { MessageBox.Show("Under validering av databasen har vi oppdaget gamle tabeller " + "som ikke kan konverteres til denne versjon av programmet.\nLager beholdning " + "må importeres på nytt.", "KGSA - Oppgradering av database", MessageBoxButtons.OK, MessageBoxIcon.Information); Log.n("Database: Sletter gammel lager tabell (tblObsolete).."); var cmd = new SqlCeCommand("DROP TABLE [tblObsolete]", main.connection); cmd.ExecuteNonQuery(); Log.n("Database: tblObsolete fjernet."); } else if (main.connection.TableExists("tblObsolete") && main.connection.TableExists("tblUkurans")) { var cmd = new SqlCeCommand("DROP TABLE [tblObsolete]", main.connection); cmd.ExecuteNonQuery(); Log.n("Database: tblObsolete fjernet. (Fjernet automatisk, ny tabell finnes)"); } if (main.connection.TableExists("tblVaregruppe")) { var cmd = new SqlCeCommand("DROP TABLE [tblVaregruppe]", main.connection); cmd.ExecuteNonQuery(); Log.n("Database: tblVaregruppe fjernet."); } if (!main.connection.FieldExists("tblSelgerkoder", "Navn")) // tblSelgerkoder mangler kolonnen Navn.. { if (MessageBox.Show("Under validering av databasen har vi oppdaget manglende kolonne(r) i selgerkode tabellen.\nEn oppgradering av databasen er nødvendig\nSkal vi starte oppgraderingen nå og forsøke å flytte over alle gamle selgerkoder?", "KGSA - Oppgradering av database", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes) { Log.n("Database: Henter ut gamle selgerkoder.."); DataTable dt = main.database.GetSqlDataTable("SELECT * FROM tblSelgerkoder"); Log.n("Database: Fant " + dt.Rows.Count + " selgerkoder."); Log.n("Database: Oppretter ny tabell for tblSelgerkoder.."); tableSelgerkoder.Reset(); try { Log.n("Database: Flytter eksisterende selgerkoder tilbake.."); if (dt != null) { main.salesCodes = new SalesCodes(main); int teller = 0; for (int i = 0; i < dt.Rows.Count; i++) { try { string sk = dt.Rows[i]["Selgerkode"].ToString(); string kat = dt.Rows[i]["Kategori"].ToString(); string prov = dt.Rows[i]["Provisjon"].ToString(); object g; int finans = 0, mod = 0, strom = 0, rtgsa = 0; g = dt.Rows[i]["FinansKrav"]; if (!DBNull.Value.Equals(g)) finans = Convert.ToInt32(g); g = dt.Rows[i]["ModKrav"]; if (!DBNull.Value.Equals(g)) mod = Convert.ToInt32(g); g = dt.Rows[i]["StromKrav"]; if (!DBNull.Value.Equals(g)) strom = Convert.ToInt32(g); g = dt.Rows[i]["RtgsaKrav"]; if (!DBNull.Value.Equals(g)) rtgsa = Convert.ToInt32(g); if (main.salesCodes.AddAll(sk, kat, prov, finans, mod, strom, rtgsa)) teller++; else Log.n("Klarte ikke konvertere " + dt.Rows[i]["Selgerkode"].ToString() + ".."); } catch { Log.n("Klarte ikke konvertere " + dt.Rows[i]["Selgerkode"].ToString() + ".."); } } Log.n("Database: Fullført flytting av " + teller + " selgerkoder."); } } catch (Exception ex) { Log.Unhandled(ex); Log.n("En feil oppstod under flytting av gamle selgerkoder til ny tabell. Se logg for detaljer.", Color.Red); MessageBox.Show("En feil oppstod under konvertering av gamle selgerkoder til ny tabell. Noen selgerkoder kan være tapt.\n\nSorry!", "KGSA - Feil", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } Log.n("Database: Tabell oppgradert.", Color.Green); } else MessageBox.Show("Merk at programmet vil ikke fungere som det skal til databasen er oppgradert.\nDu vil bli påminnet om oppgraderingen neste gang programmet starter på nytt", "KGSA - Informasjon", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } if (File.Exists(FormMain.settingsPath + @"\emailRecipients.txt")) { if (MessageBox.Show("Gammel database oppdaget.\nManglende tabeller er opprettet.\n\nØnsker du å importere gamle e-post adresser\ntil den nye adresseboken?", "KGSA - Informasjon", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes) { KgsaEmail email = new KgsaEmail(main); email.ImportOldEmailList(FormMain.settingsPath + @"\emailRecipients.txt"); FormEmailAddressbook form = new FormEmailAddressbook(); form.ShowDialog(); } try { File.Delete(FormMain.settingsPath + @"\emailRecipients.txt"); } catch { Log.Alert("Fikke ikke slettet gammel epostliste, filen var låst."); } } } catch (SqlCeException ex) { FormError errorMsg = new FormError("SQLCE uhåndtert unntak oppstod ved CheckOldDatabaseElements()", ex); errorMsg.ShowDialog(); return; } catch (Exception ex) { FormError errorMsg = new FormError("Generelt uhåndtert unntak oppstod ved CheckOldDatabaseElements()", ex); errorMsg.ShowDialog(); return; } }