public bool ClearDatabase() { try { DialogResult msgbox = MessageBox.Show("Sikker på at du vil slette lager databasen?", "KGSA - VIKTIG", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2); if (msgbox == DialogResult.Yes) { Log.n("Lager: Nullstiller databasen.."); main.database.tableUkurans.Reset(); main.database.tableVareinfo.Reset(); main.appConfig.dbObsoleteUpdated = FormMain.rangeMin; main.appConfig.dbStoreFrom = FormMain.rangeMin; main.appConfig.dbStoreTo = FormMain.rangeMin; Log.n("Lager: Nullstilling fullført."); return true; } } catch (Exception ex) { FormError errorMsg = new FormError("Feil oppstod ved sletting av lager databasen.", ex); errorMsg.ShowDialog(); } return false; }
public void callBehandlet(string serviceId, string text) { try { Log.d("Merk behandlet service id: " + serviceId + " | text: " + text); int varBit = 0; if (text == "Nei") varBit = 1; string sql = "UPDATE tblService SET [FerdigBehandlet] = " + varBit + " WHERE [ServiceID] = " + serviceId; var con = new SqlCeConnection(FormMain.SqlConStr); var command = new SqlCeCommand(sql, con); con.Open(); int var = command.ExecuteNonQuery(); con.Close(); } catch (Exception ex) { FormError errorMsg = new FormError("Unntak ved callBehandlet()", ex); errorMsg.ShowDialog(); } }
public bool Send(List<string> attachmentList, DateTime date, string type, string emailHeader, string emailBody) { try { Log.n("Forbereder sending av epost.. (" + type + ")"); List<MailAddress> recip = GetRecipients(type); if (recip.Count == 0) { Log.n("Fant ingen mottakere for denne gruppen (" + type + ")"); return false; } string tittel = FilterString(emailHeader, date); string tekst = FilterString(emailBody, date); if (main.appConfig.epostNesteMelding.Length > 5 && type != "Quick") tekst = main.appConfig.epostNesteMelding; if (InternalSendMail(recip, tittel, tekst, attachmentList, main.appConfig.epostBrukBcc)) { Log.n("E-post sendt for mottakere '" + type + "'.", Color.Green); if (main.appConfig.epostNesteMelding.Length > 0 && type != "Quick") main.appConfig.epostNesteMelding = ""; // slett melding return true; } else return false; } catch (Exception ex) { FormError errorMsg = new FormError("Feil ved sending av epost", ex); errorMsg.ShowDialog(); return false; } }
private void bwMacro_DoWork(object sender, DoWorkEventArgs e) { try { if (macroAttempt >= 3) KillElguideProcesses(); int latency = Convert.ToInt32((1000 * main.appConfig.macroLatency) + (macroAttempt * 300)); // beregn forsinkelse int extraWait = 0; double span = (DateTime.Now - Dato).TotalDays; if (span > 3 && !ignoreExtraWait) extraWait = Convert.ToInt32(span * 5); // Legg til 5 ekstra sekunder pr. dag. if (extraWait > 150) extraWait = 150; // Maks 150 ekstra sekunder int wait = 0; try { for (int i = 0; i < program.Count; i++) { if (bwMacro.CancellationPending) break; if (bwMaster != null) if (bwMaster.CancellationPending) break; string programLine = program[i]; if (programLine.StartsWith("Start")) { string str = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value; Message("[" + i + "] Starter applikasjon: " + str + ".."); if (File.Exists(str)) System.Diagnostics.Process.Start(str); else { Error(6, "Kunne ikke starte (" + str + ") - Fil mangler!"); return; } System.Threading.Thread.Sleep(latency); } else if (programLine.StartsWith("FindRow")) { string[] a = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value.Split(';'); Message("[" + i + "] Finner rad: " + a[1] + " file: " + a[0]); if (!FindRow(a)) { Error(1, "Fant ikke rad!"); break; } System.Threading.Thread.Sleep(latency / 2); } else if (programLine.StartsWith("ImportNow")) { string strAvdeling = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value; Message("[" + i + "] Importerer data for " + strAvdeling + ".."); System.Threading.Thread.Sleep(2000); if (0 != ImportCSV(Convert.ToInt32(strAvdeling))) { Error(1, "Feil oppstod under importering av CSV."); return; } } else if (programLine.StartsWith("FindProcess")) { string process = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value; ActivateApp(process); Message("[" + i + "] Finner prosess: " + process); System.Threading.Thread.Sleep(latency / 2); } else if (programLine.StartsWith("WaitForTitle")) { string title = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value.ToLower(); Message("[" + i + "] Venter på vindu med tekst: " + title); int teller = 0; while (!GetActiveWindowTitle().Contains(title) && teller < 30) { System.Threading.Thread.Sleep(latency); teller++; if (bwMacro.CancellationPending) break; if (bwMaster != null) if (bwMaster.CancellationPending) break; } if (teller >= 30) { Error(1, "Ventet for lenge på vindu med tittel '" + title + "'"); break; } System.Threading.Thread.Sleep(latency / 2); } else if (programLine.StartsWith("Wait")) { var value = Convert.ToInt32(Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value); if (value > 10) wait = extraWait; else wait = 0; decimal delay = value + wait; var teller = Math.Round(delay * main.appConfig.macroLatency, 0); Message("[" + i + "] Vent i " + teller + " sekunder."); while (teller > 0) { if (teller > 0) Message("[" + i + "] Vent i " + teller + " sekunder.", null, true); System.Threading.Thread.Sleep(1000); teller--; if (bwMacro.CancellationPending) break; if (bwMaster != null) if (bwMaster.CancellationPending) break; } } else if (programLine.StartsWith("KeyHoldStart")) { string key = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value; Message("[" + i + "] KeyHoldStart: " + key); if (key == "SHIFT") InputSimulator.SimulateKeyDown(VirtualKeyCode.SHIFT); if (key == "CONTROL") InputSimulator.SimulateKeyDown(VirtualKeyCode.CONTROL); System.Threading.Thread.Sleep(latency / 2); } else if (programLine.StartsWith("KeyHoldEnd")) { string key = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value; Message("[" + i + "] KeyHoldEnd: " + key); if (key == "SHIFT") InputSimulator.SimulateKeyUp(VirtualKeyCode.SHIFT); if (key == "CONTROL") InputSimulator.SimulateKeyUp(VirtualKeyCode.CONTROL); System.Threading.Thread.Sleep(latency / 2); } else if (programLine.StartsWith("KeyPress")) { string key = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value; Keys key_restored = (Keys)Enum.Parse(typeof(Keys), key); Message("[" + i + "] KeyPress: " + key); InputSimulator.SimulateKeyPress((VirtualKeyCode)key_restored); System.Threading.Thread.Sleep(latency / 2); } else if (programLine.StartsWith("KeyString")) { string str = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value; Message("Venter på Elguide vindu.."); int teller = 0; while (!GetActiveWindowTitle().Contains("elguide") && teller < 30) { System.Threading.Thread.Sleep(latency); teller++; if (bwMacro.CancellationPending) break; if (bwMaster != null) if (bwMaster.CancellationPending) break; } if (teller >= 30) { Error(1, "Ventet for lenge Elguide vindu."); break; } Message("[" + i + "] KeyString: " + str + ".."); InputSimulator.SimulateTextEntry(str); System.Threading.Thread.Sleep(latency / 2); } else if (programLine.StartsWith("Password")) { string str = Regex.Match(programLine, @"\(([^)]*)\)").Groups[1].Value; Message("[" + i + "] Password"); string password = str; if (Regex.IsMatch(str, @"^\d+$") && str.Length > 10) { SimpleAES simple = new SimpleAES(); password = simple.DecryptString(str); } if (!GetActiveWindowTitle().Contains("elguide")) { Error(6, "Forventet vindu var IKKE aktivt!"); System.Threading.Thread.Sleep(latency / 2); break; } InputSimulator.SimulateTextEntry(password); System.Threading.Thread.Sleep(latency / 2); } else if (programLine.StartsWith("ImportKveldstall")) { Message("[" + i + "] Legger til kveldstall kommandoer.."); GenerateCommandsQuick(); System.Threading.Thread.Sleep(latency / 2); } else { Message("[" + i + "] Ukjent kommando: " + programLine); System.Threading.Thread.Sleep(latency / 2); } if (i + 1 == program.Count) { Message("Makro fullført!", Color.Green); errorCode = 0; } } } catch (Exception ex) { Error(6, "Unntak oppstod under makro kjøring.", ex); FormError errorMsg = new FormError("Unntak oppstod under makro kjøring", ex); errorMsg.ShowDialog(); } } catch (Exception ex) { Error(1, "Ukjent feil", ex); } }
private void LagreSelgerkoder() { try { if (dataGridViewSk.CurrentRow != null) dataGridViewSk.CurrentRow.DataGridView.EndEdit(); dataGridViewSk.EndEdit(); bindingSourceSk.EndEdit(); conSk.Open(); daSk.Update(dsSk, "tblSelgerkoder"); conSk.Close(); OppdaterSelgerkoder(); Log.n("Selgerkoder Lagret.", Color.Green); main.salesCodes.Update(); } catch (Exception ex) { FormError errorMsg = new FormError("Feil oppstod under lagring av selgerkoder.", ex, "Sjekk om alle påkrevde felt er utfylt.\n\nException: "); errorMsg.ShowDialog(this); } }
private void TransPopulateSelgere() { try { if (transInitialized) return; comboDBselgerkode.Items.Clear(); if (selgerkodeList.Count == 0) { UpdateSelgerkoderUI(); } else { comboDBselgerkode.Items.Add("ALLE"); comboDBselgerkode.Items.AddRange(selgerkodeList.ToArray()); } } catch (Exception ex) { FormError errorMsg = new FormError("Feil oppstod under henting av selgerkoder", ex); errorMsg.ShowDialog(); } }
private void Reload(bool forced = false) { try { if (forced) { ClearHash(); selgerkodeList.Clear(); comboDBselgerkode.Items.Clear(); listBoxSk.Items.Clear(); listBox_GraphSelgere.Items.Clear(); _graphInitialized = false; } if (EmptyDatabase()) { Log.n("Databasen er tom. Importer transaksjoner fra Elguide!"); labelRankingLastDateBig.ForeColor = SystemColors.ControlText; labelRankingLastDateBig.Text = "(tom)"; labelRankingLastDate.ForeColor = SystemColors.ControlText; labelRankingLastDate.Text = ""; labelGraphLastDateBig.ForeColor = SystemColors.ControlText; labelGraphLastDateBig.Text = "(tom)"; labelGraphLastDate.ForeColor = SystemColors.ControlText; labelGraphLastDate.Text = ""; webRanking.Navigate(htmlImport); ShowHideGui_EmptyRanking(false); buttonOppdater.BackColor = SystemColors.ControlLight; buttonOppdater.ForeColor = SystemColors.ControlText; DataTable DT = (DataTable)dataGridTransaksjoner.DataSource; if (DT != null) DT.Clear(); selgerkodeList.Clear(); } else { labelRankingLastDateBig.Text = appConfig.dbTo.ToString("dddd", norway); labelRankingLastDate.Text = appConfig.dbTo.ToString("d. MMM", norway); labelGraphLastDateBig.Text = appConfig.dbTo.ToString("dddd", norway); labelGraphLastDate.Text = appConfig.dbTo.ToString("d. MMM", norway); if ((DateTime.Now - appConfig.dbTo).Days >= 3) { labelRankingLastDateBig.ForeColor = Color.Red; labelRankingLastDate.ForeColor = Color.Red; labelGraphLastDateBig.ForeColor = Color.Red; labelGraphLastDate.ForeColor = Color.Red; } else { labelRankingLastDateBig.ForeColor = SystemColors.ControlText; labelRankingLastDate.ForeColor = SystemColors.ControlText; labelGraphLastDateBig.ForeColor = SystemColors.ControlText; labelGraphLastDate.ForeColor = SystemColors.ControlText; } ShowHideGui_EmptyRanking(true); if (!autoMode) UpdateRank(); highlightDate = appConfig.dbTo; moveDate(0, true); InitDB(); topgraph = new TopGraph(this); salesCodes = new SalesCodes(this, true); transInitialized = false; } } catch (Exception ex) { FormError errorMsg = new FormError("Kritisk feil ved initialisering av databasen.\nInstaller programmet på nytt hvis problemet vedvarer.", ex); errorMsg.ShowDialog(this); } }
private void loadLog() { try { richLog.Text = File.ReadAllText(settingsPath + @"\Log.txt", Encoding.Unicode); richLog.ScrollToCaret(); Log.n("Åpnet log."); } catch(Exception ex) { FormError errorMsg = new FormError("Feill ved lasting av logg.", ex); errorMsg.ShowDialog(this); } }
public bool BuildPage(BudgetCategory cat, string strHash, string htmlPage, DateTime date) { pickedDate = date; string katArg = BudgetCategoryClass.TypeToName(cat); bool abort = main.HarSisteVersjonBudget(cat, strHash); try { if (!runningInBackground && !abort) main.timewatch.Start(); if (!runningInBackground) main.appConfig.savedBudgetPage = BudgetCategoryClass.TypeToName(cat); if (!abort) { Log.n("Oppdaterer [" + BudgetCategoryClass.TypeToName(cat) + "].."); OpenPage_Loading(); doc = new List<string>(); main.openXml.DeleteDocument(BudgetCategoryClass.TypeToName(cat), pickedDate); AddPage_Start(true, "Budsjett (" + BudgetCategoryClass.TypeToName(cat) + ")"); AddPage_Title("Budsjett (" + main.avdeling.Get(main.appConfig.Avdeling) + ")"); ShowProgress(); BudgetImporter importer = new BudgetImporter(main, DateTime.Now); if (main.tableMacroQuick == null) { Log.n("Fant ikke data fra Makro, forsøker å hente CSV..", null, true); main.tableMacroQuick = importer.ImportElguideBudget(main.appConfig.Avdeling); } if (main.appConfig.dailyBudgetIncludeInQuickRanking) MakeDailyBudgetFromDatabase(); DailyBudgetMacroInfo budgetInfo = null; if (main.appConfig.macroImportQuickSales) budgetInfo = importer.ImportElguideServices(); MakeDailyBudgetFromElguide(budgetInfo); AddPage_End(); if (FormMain.stopRanking) { main.ClearHash(katArg); Log.n("Lasting avbrutt", Color.Red); OpenPage_Stopped(); FormMain.stopRanking = false; } else { File.WriteAllLines(htmlPage, doc.ToArray(), Encoding.Unicode); OpenPage(htmlPage); if (!runningInBackground) Log.n("Side [" + katArg + "] tok " + main.timewatch.Stop() + " sekunder.", Color.Black, true); return true; } } else OpenPage(htmlPage); } catch (Exception ex) { Log.Unhandled(ex); if (!runningInBackground) { OpenPage_Error(); FormError errorMsg = new FormError("Feil ved generering av side for [" + katArg + "]", ex); errorMsg.ShowDialog(); } } return false; }
private void webService_Navigating(object sender, WebBrowserNavigatingEventArgs e) { try { var url = e.Url.OriginalString; if (url.Contains("#service")) { int index = url.IndexOf("#"); var s = url.Substring(index + 8, url.Length - index - 8); int serviceID = 0; if (s.Length > 0) serviceID = Convert.ToInt32(s); else { Log.n("Ingen service å søke opp.", Color.Red); return; } MakeServiceDetails(serviceID); } if (url.Contains("#list_")) { int index = url.IndexOf("#"); var status = url.Substring(index + 6, url.Length - index - 6); status = status.Replace("%20", " "); if (status == "alle") status = ""; MakeServiceList(status); } } catch (Exception ex) { FormError errorMsg = new FormError("Feil ved service navigering", ex); errorMsg.ShowDialog(this); } }
/// <summary> /// Metode for imprtering av Elguide transaksjoner fra Program 137 /// </summary> /// <param name="bw">Backgroundworker</param> /// <param name="unattended">Vil ikke bruke dialogbokser ved unattended kjøring</param> /// <returns>Success or not</returns> public bool DoImportTransactions(BackgroundWorker bw, bool unattended) { if (bw == null) throw new ArgumentNullException("Backgroundworker er null!"); if (csvFilesToImport.Count == 0) csvFilesToImport.Add(main.appConfig.csvElguideExportFolder + @"\irank.csv"); this.returnCode = 0; this.importReadErrors = 0; //this.importTimerLastValue = DateTime.MinValue; //this.importTimerLastValueChanged = DateTime.MinValue; csvImport[] csvTransAll = new csvImport[] { }; main.processing.SetValue = 0; try { // Les inn alle CSV filene til csvTransAll.. foreach (String file in csvFilesToImport) { if (bw.CancellationPending) { this.returnCode = 2; return true; } if (!File.Exists(file)) { Log.n("Finner ikke fil " + file, Color.Red); if (unattended) { if (MessageBox.Show("Finner ikke fil " + file + "\n\nKontroller import lokasjon!", "KGSA - Finner ikke fil", MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == System.Windows.Forms.DialogResult.Cancel) continue; } else this.returnCode = 9; } FileInfo f = new FileInfo(file); decimal s1 = f.Length; this.csvSizeGuess = Math.Round(s1 / numberScale, 2); Log.n("Leser CSV fra Elguide '" + file + "'.."); var csvTrans = ReadCsv(file, bw, unattended); if (csvTrans == null) { this.returnCode = 9; return false; } int oldLength = csvTransAll.Length; Array.Resize<csvImport>(ref csvTransAll, oldLength + csvTrans.Length); Array.Copy(csvTrans, 0, csvTransAll, oldLength, csvTrans.Length); Log.d("Lest ferdig '" + file + "' - Totalt: " + csvTrans.Length); } if (bw.CancellationPending) { this.returnCode = 2; return false; } if (csvTransAll.Length < 25) { Log.n("Import: Ingen eller for få transaksjoner funnet!" + "Kontroller om eksportering er korrekt eller sjekk innstillinger.", Color.Red); { this.returnCode = 4; return false; } } int csvLengde = csvTransAll.Length; Log.n("Prosesserer " + csvLengde.ToString("#,##0") + " transaksjoner.."); main.processing.SetText = "Prosesserer " + csvLengde.ToString("#,##0") + " transaksjoner.."; main.processing.SetProgressStyle = ProgressBarStyle.Marquee; DateTime dtFirst = DateTime.MaxValue; DateTime dtLast = DateTime.MinValue; int valider = 0; List<string> avd = new List<string>(); // sjekk for først og siste dato, samt hvilke avdelinger den inneholder string csvAvdelinger = ""; for (int i = 0; i < csvLengde; i++) { if (bw.CancellationPending) { this.returnCode = 2; return false; } if (!csvAvdelinger.Contains(csvTransAll[i].Avd)) csvAvdelinger += csvTransAll[i].Avd.ToString() + ";"; DateTime dtTemp = DateTime.ParseExact(csvTransAll[i].Dato.ToString(), dateFormat, FormMain.norway); //DateTime dtTemp = Convert.ToDateTime(csvTransAll[i].Dato.ToString()); if (DateTime.Compare(dtTemp, dtFirst) < 0) dtFirst = dtTemp; if (DateTime.Compare(dtTemp, dtLast) > 0) dtLast = dtTemp; if (valider < 25) { if (csvTransAll[i].Kgm.StartsWith("2") || csvTransAll[i].Kgm.StartsWith("4") || csvTransAll[i].Kgm.StartsWith("5")) valider++; } } string[] arrayAvdelinger = csvAvdelinger.Split(';'); Log.d("Avdelinger funnet i fil (funnetAvdelinger): Antall: (" + arrayAvdelinger.Length + ") Innhold: " + csvAvdelinger); string sqlRemoveAvd = ""; if (main.appConfig.importSetting.Equals("FullFavoritt")) // vi skal bare importere favoritt avdelinger foreach (string arrayAvd in arrayAvdelinger) foreach (string avdel in FormMain.Favoritter) if (arrayAvd.Equals(avdel)) // Avdelingen finnes i csv OG som favoritt avdeling.. sqlRemoveAvd += " Avdeling = '" + arrayAvd + "' OR "; // legger til avdeling for sletting før import if (main.appConfig.importSetting.Equals("Full")) // vi skal importere ALLE avdelinger i CSV, derfor må vi slette alle avdelinger før import foreach (string arrayAvd in arrayAvdelinger) sqlRemoveAvd += " Avdeling = '" + arrayAvd + "' OR "; // legger til avdeling for sletting før import if (sqlRemoveAvd.Length > 3) // Fjen sist "OR" fra sql string for å gjøre den gyldig sqlRemoveAvd = sqlRemoveAvd.Remove(sqlRemoveAvd.Length - 3); Log.n("Import: CSV inneholder " + csvLengde + " transaksjoner, solgt mellom " + dtFirst.ToString("dddd d. MMMM yyyy", FormMain.norway) + " og " + dtLast.ToString("dddd d. MMMM yyyy", FormMain.norway) + ".", Color.Black, true); string strSqlDateFirst = dtFirst.ToString("yyy-MM-dd"); string strSqlDateLast = dtLast.ToString("yyy-MM-dd"); if (valider < 25) { Log.n("Import: Bare et begrenset antall transaksjoner var gyldig (" + valider + "), kan ikke fortsett. Eksporter transaksjoner på nytt!", Color.Red); { this.returnCode = 1; return false; } } bool addPrize = false; Dictionary<string, decimal> dictPrizes = new Dictionary<string, decimal>(); if (main.appConfig.dbObsoleteUpdated != FormMain.rangeMin) addPrize = true; var table = new DataTable(); table.Columns.Add("Selgerkode", typeof(string)); table.Columns.Add("Varegruppe", typeof(Int16)); table.Columns.Add("Varekode", typeof(string)); table.Columns.Add("Dato", typeof(DateTime)); table.Columns.Add("Antall", typeof(int)); table.Columns.Add("Btokr", typeof(decimal)); table.Columns.Add("Avdeling", typeof(Int16)); table.Columns.Add("Salgspris", typeof(decimal)); table.Columns.Add("Bilagsnr", typeof(int)); table.Columns.Add("Mva", typeof(decimal)); main.processing.SetText = "Prosesserer " + csvLengde.ToString("#,##0") + " transaksjoner.. (Konverterer)"; for (int i = 0; i < csvLengde; i++) { if (bw.CancellationPending) { this.returnCode = 2; return false; } if (ImportThisLine(csvTransAll[i])) { int varegruppe = 0, avdeling = 0, bilagsnr = 0; int.TryParse(csvTransAll[i].Kgm.Substring(0, 3), out varegruppe); int.TryParse(csvTransAll[i].Avd, out avdeling); int.TryParse(csvTransAll[i].BilagsNr, out bilagsnr); DataRow dtRow = table.NewRow(); dtRow[0] = csvTransAll[i].Sk; // Selgerkode dtRow[1] = varegruppe; // varegruppe dtRow[2] = csvTransAll[i].Varenummer; // varekode dtRow[3] = csvTransAll[i].Dato; dtRow[4] = csvTransAll[i].Antall; dtRow[5] = csvTransAll[i].Btokr; dtRow[6] = avdeling; dtRow[7] = csvTransAll[i].Salgspris; dtRow[8] = bilagsnr; if (csvTransAll[i].Mva == 0) dtRow[9] = 1; else dtRow[9] = (csvTransAll[i].Mva / 100) + 1; // Lagre salgsprisen.. if (addPrize) if (csvTransAll[i].Rab == 0 && csvTransAll[i].Antall > 0 && csvTransAll[i].Dato.AddDays(main.appConfig.storeMaxAgePrizes) > main.appConfig.dbObsoleteUpdated) if (!dictPrizes.ContainsKey(csvTransAll[i].Varenummer)) dictPrizes.Add(csvTransAll[i].Varenummer, csvTransAll[i].Salgspris); // sjekk lengde på fields før vi legger dem til.. if (dtRow[0].ToString().Length < 11 && dtRow[2].ToString().Length < 25) table.Rows.Add(dtRow); else { importReadErrors++; Log.n("Import: Format feil ved linje " + i + ": Felt var for lange for databasen, hopper over.", Color.Orange); Log.d("Linje: " + dtRow[0] + ";" + dtRow[1] + ";" + dtRow[2] + ";" + dtRow[3] + ";" + dtRow[4] + ";" + dtRow[5] + ";" + dtRow[6] + ";" + dtRow[7] + ";" + dtRow[8] + ";" + dtRow[9]); } } } if (addPrize && dictPrizes.Count > 0) { Log.n("Lager: Oppdaterer vareinfo med priser fra " + dictPrizes.Count + " forskjellige varer..", null, true); UpdatePrizes(dictPrizes); Log.n("Lager: Ferdig med oppdatering av priser", null, true); } // På ditte tidspunktet kan ikke prosessen avbrytes.. main.processing.SetText = "Sletter gamle transaksjoner.."; main.processing.SupportsCancelation = false; if (table.Rows.Count >= 25) { Log.n("Import: Klar til å lagre transaksjoner. Sletter overlappende transaksjoner nå.."); try { // Slett overlappende transaksjoner vi har i databasen fra før.. string sqlRemove = "DELETE FROM tblSalg WHERE (Dato >= '" + strSqlDateFirst + "') AND (Dato <= '" + strSqlDateLast + "')"; if (!main.appConfig.importSetting.Equals("Normal")) sqlRemove += " AND (" + sqlRemoveAvd + ")"; SqlCeCommand command = new SqlCeCommand(sqlRemove, main.connection); var result = command.ExecuteNonQuery(); Log.d("Import: Slettet " + result + " transaksjoner fra databasen."); } catch (Exception ex) { Log.Unhandled(ex); } } Log.n("Import: Lagrer " + table.Rows.Count.ToString("#,##0") + " transaksjoner.."); main.processing.SetText = "Lagrer " + table.Rows.Count.ToString("#,##0") + " transaksjoner.. (kan ta litt tid)"; TimeWatch timewatch = new TimeWatch(); timewatch.Start(); // Send data til SQL server og avslutt forbindelsen main.database.DoBulkCopy(table, "tblSalg"); Log.n("Import: Lagring av " + table.Rows.Count.ToString("#,##0") + " transaksjoner tok " + timewatch.Stop() + " sekunder.", Color.Black, true); main.processing.SupportsCancelation = true; // nuller ut database periode fra-til, tvinger oppdatering ved reload senere main.appConfig.dbFrom = DateTime.MinValue; main.appConfig.dbTo = DateTime.MinValue; Log.n("Import: Importering ferdig (Tid: " + timewatch.Stop() + ")"); main.processing.SetText = "Fullført importering av transaksjoner! Vent litt.."; main.processing.SetProgressStyle = ProgressBarStyle.Continuous; main.processing.SetValue = 90; this.importCount = table.Rows.Count; this.returnCode = 0; return true; } catch (Exception ex) { FormError errorMsg = new FormError("Sorry! Kritisk uhåndtert feil oppstod under importering.", ex, "CSV filer: " + String.Join("\n", csvFilesToImport.ToArray())); errorMsg.ShowDialog(main); } this.returnCode = -1; return false; }
private csvImport[] ReadCsv(string file, BackgroundWorker bw, bool unattended) { try { FileHelperEngine engine = new FileHelperEngine(typeof(csvImport)); engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue; engine.SetProgressHandler(new ProgressChangeHandler(ReadProgressCSV)); var resCSV = engine.ReadFile(file) as csvImport[]; if (engine.ErrorManager.HasErrors) { List<string> filtLines = new List<string> () {}; foreach (ErrorInfo err in engine.ErrorManager.Errors) { if (RemoveExtraDelimiter(err.RecordString, filtLines)) { Log.d("Import: Gjenopprettet linje " + err.LineNumber + " med feil format."); } else { importReadErrors++; Log.n("Import: Format feil ved linje " + err.LineNumber + ": " + err.RecordString, Color.Red); Log.d("Import: Feilmelding: " + err.ExceptionInfo.ToString()); if (importReadErrors > 100) { Log.n("CSV er skadet eller inneholder ikke riktige ranking transaksjoner.", Color.Red); if (!unattended) { FormError errorMsg = new FormError("CSV er skadet eller inneholder ikke riktige ranking transaksjoner.", err.ExceptionInfo, "Transaksjoner som ikke kunne leses:\n" + filtLines.Count); errorMsg.ShowDialog(); } return null; } } } if (filtLines.Count > 0) { Log.d("Import: Forsøker å legge til " + filtLines.Count + " linjer med feil på nytt etter fix..."); Log.d("Import: resCSV length før: " + resCSV.Length); string tmpFile = GetTempFilename(".txt"); File.WriteAllLines(tmpFile, filtLines.ToArray(), Encoding.Unicode); var resCSVfixed = engine.ReadFile(tmpFile) as csvImport[]; int oldLength = resCSV.Length; Array.Resize<csvImport>(ref resCSV, oldLength + resCSVfixed.Length); Array.Copy(resCSVfixed, 0, resCSV, oldLength, resCSVfixed.Length); Log.d("Import: resCSV length etter: " + resCSV.Length); } } Log.d("Import: ReadCsv ferdig '" + file + "' - Totalt: " + resCSV.Length); return resCSV; } catch (IOException ex) { Log.n("CSV var låst for lesing. Forleng ventetid i makro hvis overføringen ikke ble ferdig i tide.", Color.Red); Log.d("CSV var låst.", ex); return null; } catch (Exception ex) { throw new Exception("Kritisk feil under lesing av CSV!", ex); } }
private void BuildStoreStatus(bool bg = false) { string katArg = "Obsolete"; bool abort = HarSisteVersjonStore(katArg, appConfig.strObsolete); try { if (!bg && !abort) timewatch.Start(); if (!bg) appConfig.savedStorePage = katArg; if (!abort) { Log.n("Oppdaterer [" + katArg + "].."); if (!bg) webStore.Navigate(htmlLoading); var doc = new List<string>(); DateTime dtPick = pickerLagerDato.Value; DateTime dtFra = GetFirstDayOfMonth(dtPick); DateTime dtTil = dtPick; dtPick = obsolete.FindNearestDate(dtPick); dtTil = obsolete.FindNearestDate(dtTil); dtFra = obsolete.FindNearestDate(dtFra); if (!appConfig.storeCompareMtd) dtFra = appConfig.dbStoreViewpoint; var ranking = new RankingStore(this, dtFra, dtTil, dtPick, obsolete); openXml.DeleteDocument(katArg, dtPick); GetHtmlStart(doc, true); doc.Add("<h1>Lager status (" + avdeling.Get(appConfig.Avdeling) + ")</h1>"); doc.Add("<h3>Oversikt utgåtte varer hovedlager (" + dtTil.ToString("dddd d. MMMM yyyy", norway) + ")</h3>"); doc.Add("<span class='Loading'>Beregner..</span>"); if (!bg && timewatch.ReadyForRefresh()) webStore.DocumentText = string.Join(null, doc.ToArray()); doc.RemoveAt(doc.Count - 1); doc.AddRange(ranking.GetTableHtml(false)); if (appConfig.storeShowStoreTwo) { doc.Add("<h3>Oversikt utgåtte varer B/V lager (" + dtTil.ToString("dddd d. MMMM yyyy", norway) + ")</h3>"); doc.Add("<span class='Loading'>Beregner..</span>"); if (!bg && timewatch.ReadyForRefresh()) webStore.DocumentText = string.Join(null, doc.ToArray()); doc.RemoveAt(doc.Count - 1); doc.AddRange(ranking.GetTableHtml(true)); } doc.Add("<h3>Utvikling hovedlager (Sammenlignet mot " + dtFra.ToString("dddd d. MMMM yyyy", norway) + ")</h3>"); doc.Add("<span class='Loading'>Beregner..</span>"); if (!bg && timewatch.ReadyForRefresh()) webStore.DocumentText = string.Join(null, doc.ToArray()); doc.RemoveAt(doc.Count - 1); doc.AddRange(ranking.GetTableHtmlUtvikling(false)); if (appConfig.storeShowStoreTwo) { doc.Add("<h3>Utvikling B/V lager (Sammenlignet mot " + dtFra.ToString("dddd d. MMMM yyyy", norway) + ")</h3>"); doc.Add("<span class='Loading'>Beregner..</span>"); if (!bg && timewatch.ReadyForRefresh()) webStore.DocumentText = string.Join(null, doc.ToArray()); doc.RemoveAt(doc.Count - 1); doc.AddRange(ranking.GetTableHtmlUtvikling(true)); } //obsolete.RetreieveHistoryTable(); //doc.Add("<img src='" + obsolete.SaveChartImage(appConfig.graphResX, appConfig.graphResY, "MDA", appConfig.Avdeling) + "' style='width:900px;height:auto;'><br>"); //doc.Add("<img src='" + obsolete.SaveChartImage(appConfig.graphResX, appConfig.graphResY, "AudioVideo", appConfig.Avdeling) + "' style='width:900px;height:auto;'><br>"); doc.Add(Resources.htmlEnd); if (stopRanking) { stopRanking = false; ClearHash(katArg); Log.n("Ranking stoppet.", Color.Red); webStore.Navigate(htmlStopped); } else { if (datoPeriodeVelger && !bg) { File.WriteAllLines(htmlPeriode, doc.ToArray(), Encoding.Unicode); webStore.Navigate(htmlPeriode); } else { File.WriteAllLines(htmlStoreObsolete, doc.ToArray(), Encoding.Unicode); if (!bg) webStore.Navigate(htmlStoreObsolete); if (!bg) Log.n("Ranking [" + katArg + "] tok " + timewatch.Stop() + " sekunder.", Color.Black, true); } } } else if (!bg) webStore.Navigate(htmlStoreObsolete); } catch (Exception ex) { Log.n("Feil ved generering av ranking for [" + katArg + "] Exception: " + ex.ToString(), Color.Red); if (!bg) { webStore.Navigate(htmlError); FormError errorMsg = new FormError("Feil ved generering av ranking for [" + katArg + "]", ex); errorMsg.ShowDialog(this); } } }
private void BuildStoreObsoleteList(bool bg = false) { string katArg = "ObsoleteList"; bool abort = HarSisteVersjonStore(katArg, appConfig.strObsoleteList); try { if (!bg && !abort) timewatch.Start(); if (!bg) appConfig.savedStorePage = katArg; if (!abort) { Log.n("Oppdaterer [" + katArg + "].."); if (!bg) webStore.Navigate(htmlLoading); var doc = new List<string>(); DateTime dtPick = pickerLagerDato.Value; DateTime dtFra = GetFirstDayOfMonth(dtPick); DateTime dtTil = dtPick; if (datoPeriodeVelger && !bg) { dtFra = datoPeriodeFra; dtTil = datoPeriodeTil; } var ranking = new RankingStore(this, dtFra, dtTil, dtPick, obsolete); openXml.DeleteDocument(katArg, dtPick); GetHtmlStart(doc, true); doc.Add("<h1>Utgåtte varer (" + avdeling.Get(appConfig.Avdeling) + ")</h1>"); doc.Add("<span class='Generated'>Ranking generert: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "</span><br>"); doc.AddRange(ranking.GetTableHtmlUkurantGrupper()); doc.Add(Resources.htmlEnd); if (stopRanking) { stopRanking = false; ClearHash(katArg); Log.n("Ranking stoppet.", Color.Red); webStore.Navigate(htmlStopped); } else { if (datoPeriodeVelger && !bg) { File.WriteAllLines(htmlPeriode, doc.ToArray(), Encoding.Unicode); webStore.Navigate(htmlPeriode); } else { File.WriteAllLines(htmlStoreObsoleteList, doc.ToArray(), Encoding.Unicode); if (!bg) webStore.Navigate(htmlStoreObsoleteList); if (!bg) Log.n("Ranking [" + katArg + "] tok " + timewatch.Stop() + " sekunder.", Color.Black, true); } } } else if (!bg) webStore.Navigate(htmlStoreObsoleteList); } catch (Exception ex) { Log.n("Feil ved generering av ranking for [" + katArg + "] Exception: " + ex.ToString(), Color.Red); if (!bg) { webStore.Navigate(htmlError); FormError errorMsg = new FormError("Feil ved generering av ranking for [" + katArg + "]", ex); errorMsg.ShowDialog(this); } } }
private void BuildStoreObsoleteImports(bool bg = false) { string katArg = "ObsoleteImports"; bool abort = HarSisteVersjonStore(katArg, appConfig.strObsoleteImports); try { if (!bg && !abort) timewatch.Start(); if (!bg) appConfig.savedStorePage = katArg; if (!abort) { Log.n("Oppdaterer [" + katArg + "].."); if (!bg) webStore.Navigate(htmlLoading); var doc = new List<string>(); DateTime dtPick = pickerLagerDato.Value; DateTime dtFra = GetFirstDayOfMonth(dtPick); DateTime dtTil = dtPick; if (datoPeriodeVelger && !bg) { dtFra = datoPeriodeFra; dtTil = datoPeriodeTil; } var ranking = new RankingStore(this, dtFra, dtTil, dtPick, obsolete); openXml.DeleteDocument(katArg, dtPick); GetHtmlStart(doc, true); doc.Add("<span class='Title'>Lager status (" + avdeling.Get(appConfig.Avdeling) + ")</span><span style='font-size:10.0pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;color:gray;float:right'>Ranking generert: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "</span><br><br>"); doc.Add("<span class='xTitle'>Viser alle importeringer</span>"); doc.AddRange(ranking.GetTableHtmlReport()); doc.Add(Resources.htmlEnd); if (stopRanking) { stopRanking = false; ClearHash(katArg); Log.n("Ranking stoppet.", Color.Red); webStore.Navigate(htmlStopped); } else { if (datoPeriodeVelger && !bg) { File.WriteAllLines(htmlPeriode, doc.ToArray(), Encoding.Unicode); webStore.Navigate(htmlPeriode); } else { File.WriteAllLines(htmlStoreObsoleteImports, doc.ToArray(), Encoding.Unicode); if (!bg) webStore.Navigate(htmlStoreObsoleteImports); if (!bg) Log.n("Ranking [" + katArg + "] tok " + timewatch.Stop() + " sekunder.", Color.Black, true); } } } else if (!bg) webStore.Navigate(htmlStoreObsoleteImports); } catch (Exception ex) { Log.n("Feil ved generering av ranking for [" + katArg + "] Exception: " + ex.ToString(), Color.Red); if (!bg) { webStore.Navigate(htmlError); FormError errorMsg = new FormError("Feil ved generering av ranking for [" + katArg + "]", ex); errorMsg.ShowDialog(this); } } }
private void exportDatabase() { try { if (IsBusy(true)) return; SaveFileDialog saveFileDB = new SaveFileDialog(); saveFileDB.InitialDirectory = Convert.ToString(Environment.SpecialFolder.MyDocuments); saveFileDB.Filter = "Compact database (*.SDF)|*.sdf|Alle filer (*.*)|*.*"; saveFileDB.FilterIndex = 1; saveFileDB.FileName = "KGSA " + databaseVersion + " " + appConfig.dbFrom.ToString("yyMMd") + "-" + appConfig.dbTo.ToString("yyMMd"); if (saveFileDB.ShowDialog() == DialogResult.OK) { processing.SetVisible = true; processing.SetText = "Eksporterer databasen.."; try { if (File.Exists(saveFileDB.FileName)) { Log.n("File eksisterer allerede, skriver over..", Color.Black, true); File.Delete(saveFileDB.FileName); } processing.SetText = "Eksporterer databasen.."; File.Copy(settingsPath + @"\" + databaseName, saveFileDB.FileName); Log.n("Fullført eksportering av databasen. (" + saveFileDB.FileName + ")", Color.Green); processing.SetText = "Ferdig!"; } catch (IOException ex) { FormError errorMsg = new FormError("Filen er i bruk eller ble nektet tilgang.", ex); errorMsg.ShowDialog(this); } catch (Exception ex) { FormError errorMsg = new FormError("Ukjent feil oppstod under eksportering av databasen.\nOperasjon avbrutt.", ex); errorMsg.ShowDialog(this); } } } catch { Log.n("Feil under eksportering av databasen.", Color.Red); } }
private void importDatabase() { try { if (IsBusy()) return; DialogResult iAmSure = MessageBox.Show("Importering av en database bytter ut den eksisterende!\nAlle transaksjoner, lagerstatus, e-post adresser og selgerkoder i den gjeldende databasen blir slettet\n\n\nEr du sikker på du vil fortsette?", "KGSA - Advarsel" , MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information,MessageBoxDefaultButton.Button2); if (iAmSure == DialogResult.Yes) { OpenFileDialog importFileDB = new OpenFileDialog(); importFileDB.InitialDirectory = Convert.ToString(Environment.SpecialFolder.MyDocuments); importFileDB.Filter = "Compact database (*.SDF)|*.sdf"; importFileDB.FilterIndex = 1; if (importFileDB.ShowDialog() == DialogResult.OK) { try { if (!importFileDB.FileName.ToLower().Contains(databaseVersion.ToLower())) if (MessageBox.Show("Databasen kan være inkompatibel med denne versjonen av KGSA!\nGjeldene versjon: " + databaseVersion + "\n\nSikker på at du vil fortsette?", "KGSA - Advarsel", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) != DialogResult.Yes) return; processing.SetVisible = true; processing.SetText = "Importerer databasen.."; string sqlSource = @"Data Source=" + importFileDB.FileName; if (!connection.TableExists("tblSelgerkoder") || !connection.FieldExists("tblSalg", "Mva")) { Log.n("Databasen (" + importFileDB.FileName + ") er ikke kompatibel med denne versjonen av KGSA.", Color.Red); MessageBox.Show("Databasen er ikke kompatibel med denne versjonen av KGSA.\nImportering avbrutt!", "KGSA - Database ikke kompatibel", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); processing.SetText = "Importering avbrutt.."; return; } Log.n("Importerer ny database (" + importFileDB.FileName + ") .."); try { database.CloseConnection(); processing.SetValue = 20; if (File.Exists(settingsPath + @"\DatabaseCopy.sdf")) File.Delete(settingsPath + @"\DatabaseCopy.sdf"); File.Copy(importFileDB.FileName, settingsPath + @"\DatabaseCopy.sdf"); processing.SetValue = 60; if (File.Exists(settingsPath + @"\DatabaseBackup.sdf")) File.Delete(settingsPath + @"\DatabaseBackup.sdf"); File.Replace(settingsPath + @"\DatabaseCopy.sdf", fileDatabase, settingsPath + @"\DatabaseBackup.sdf"); processing.SetText = "Kopiering fullført. Initialiserer.."; processing.SetValue = 70; database.OpenConnection(); database.VerifyDatabase(); RetrieveDbStore(); RetrieveDb(true); processing.SetValue = 80; ReloadStore(true); Reload(true); ReloadBudget(true); RunTopGraphUpdate(); processing.SetValue = 95; UpdateUi(); if (File.Exists(settingsPath + @"\DatabaseBackup.sdf")) File.Delete(settingsPath + @"\DatabaseBackup.sdf"); processing.SetText = "Ferdig!"; } catch (IOException ex) { FormError errorMsg = new FormError("Ingen tilgang", ex, "Filen/databasen er i bruk eller ingen tilgang."); errorMsg.ShowDialog(this); } catch(Exception ex) { Log.Unhandled(ex); Log.n("Ukjent feil oppstod under importering av databasen. Se logg for detaljer.", Color.Red); } finally { if (File.Exists(settingsPath + @"\DatabaseCopy.sdf")) File.Delete(settingsPath + @"\DatabaseCopy.sdf"); } } catch (SqlCeException ex) { FormError errorMsg = new FormError("Feil under lesing av databasen.", ex, "Databasen er i feil versjon, er skadet eller programmet ble nektet tilgang."); errorMsg.ShowDialog(this); } catch (Exception ex) { FormError errorMsg = new FormError("Ukjent feil oppstod.", ex, "Feil under innhenting av ny database."); errorMsg.ShowDialog(this); } } } } catch(Exception ex) { Log.Unhandled(ex); } }
private void AddSelgerkoderAuto() { try { if (MessageBox.Show("KGSA vil forsøke å legge selgerkoder til i riktig avdeling utifra salgsmønster.\nDette vil overskrive eksisterende selgerkoder!\n\nEr du sikker?", "KGSA - Informasjon", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) != System.Windows.Forms.DialogResult.Yes) return; processing.SetVisible = true; Log.Status("Prosesserer.."); toolStripComboBoxSkFilter.SelectedIndex = 0; salesCodes.Clear(); OppdaterSelgerkoder(); this.Update(); if (appConfig.importSetting.StartsWith("Full")) { processing.SetValue = 5; Log.Status("Legger til [Kasse] selgere.."); processing.SetText = "Legger til [Kasse] selgere.."; using (DataTable dt = database.GetSqlDataTable("SELECT TOP 3 Selgerkode, SUM(Antall) AS Antall FROM tblSalg WHERE (Avdeling = '" + appConfig.Avdeling.ToString() + "') AND (Dato >= '" + appConfig.dbTo.AddMonths(-1).ToString("yyy-MM-dd") + "') AND (Dato <= '" + appConfig.dbTo.ToString("yyy-MM-dd") + "') GROUP BY Selgerkode ORDER BY Antall DESC")) { List<string> selgere = new List<string>(); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) selgere.Add(dt.Rows[i][0].ToString().Trim()); for (int i = 0; i < selgere.Count; i++) if (selgere[i] != "INT") salesCodes.Add(selgere[i], "Kasse", "Selger"); } } } processing.SetValue = 15; var dataselgere = ""; Log.Status("Legger til [Data] selgere.."); processing.SetText = "Legger til [Data] selgere.."; using (DataTable dt = database.GetSqlDataTable("SELECT TOP 12 Selgerkode, SUM(Antall) AS Antall FROM tblSalg " + " WHERE (Varegruppe = '534' OR Varegruppe = '533') AND (Avdeling = '" + appConfig.Avdeling.ToString() + "') AND (Dato >= '" + appConfig.dbTo.AddMonths(-1).ToString("yyy-MM-dd") + "') AND (Dato <= '" + appConfig.dbTo.ToString("yyy-MM-dd") + "') GROUP BY Selgerkode ORDER BY Antall DESC")) { List<string> selgere = new List<string>(); if (dt.Rows.Count > 0) { decimal most = (int)dt.Rows[0][1]; decimal divide = 6; decimal compare = Math.Round(most / divide, 0); for (int i = 0; i < dt.Rows.Count; i++) if ((int)dt.Rows[i][1] >= compare) selgere.Add(dt.Rows[i][0].ToString().Trim()); for (int i = 0; i < selgere.Count; i++) if (selgere[i] != "INT") { salesCodes.Add(selgere[i], "Data", "Selger"); dataselgere += selgere[i]; } } } processing.SetValue = 30; Log.Status("Legger til [AudioVideo] selgere.."); processing.SetText = "Legger til [AudioVideo] selgere.."; using (DataTable dt = database.GetSqlDataTable("SELECT TOP 12 Selgerkode, SUM(Antall) AS Antall FROM tblSalg " + " WHERE (Varegruppe = '224') AND (Avdeling = '" + appConfig.Avdeling.ToString() + "') AND (Dato >= '" + appConfig.dbTo.AddMonths(-1).ToString("yyy-MM-dd") + "') AND (Dato <= '" + appConfig.dbTo.ToString("yyy-MM-dd") + "') GROUP BY Selgerkode ORDER BY Antall DESC")) { List<string> selgere = new List<string>(); if (dt.Rows.Count > 0) { decimal most = (int)dt.Rows[0][1]; decimal divide = 6; decimal compare = Math.Round(most / divide, 0); for (int i = 0; i < dt.Rows.Count; i++) if ((int)dt.Rows[i][1] >= compare) selgere.Add(dt.Rows[i][0].ToString().Trim()); for (int i = 0; i < selgere.Count; i++) if (selgere[i] != "INT") salesCodes.Add(selgere[i], "AudioVideo", "Selger"); } } processing.SetValue = 45; Log.Status("Legger til [Tele] selgere.."); processing.SetText = "Legger til [Tele] selgere.."; using (DataTable dt = database.GetSqlDataTable("SELECT TOP 12 Selgerkode, SUM(Antall) AS Antall " + " FROM tblSalg WHERE (Varegruppe = '431') AND (Avdeling = '" + appConfig.Avdeling.ToString() + "') AND (Dato >= '" + appConfig.dbTo.AddMonths(-1).ToString("yyy-MM-dd") + "') AND (Dato <= '" + appConfig.dbTo.ToString("yyy-MM-dd") + "') GROUP BY Selgerkode ORDER BY Antall DESC")) { List<string> selgere = new List<string>(); if (dt.Rows.Count > 0) { decimal most = (int)dt.Rows[0][1]; decimal divide = 6; decimal compare = Math.Round(most / divide, 0); for (int i = 0; i < dt.Rows.Count; i++) if ((int)dt.Rows[i][1] >= compare) selgere.Add(dt.Rows[i][0].ToString().Trim()); for (int i = 0; i < selgere.Count; i++) if (selgere[i] != "INT") salesCodes.Add(selgere[i], "Tele", "Selger"); } } processing.SetValue = 60; Log.Status("Legger til [Data] selgere.."); processing.SetText = "Legger til [Data] selgere.."; using (DataTable dt = database.GetSqlDataTable("SELECT TOP 12 Selgerkode, SUM(Antall) AS Antall FROM tblSalg WHERE " + " (Varegruppe = '580') AND (Avdeling = '" + appConfig.Avdeling.ToString() + "') AND (Dato >= '" + appConfig.dbTo.AddMonths(-1).ToString("yyy-MM-dd") + "') AND (Dato <= '" + appConfig.dbTo.ToString("yyy-MM-dd") + "') GROUP BY Selgerkode ORDER BY Antall DESC")) { List<string> selgere = new List<string>(); if (dt.Rows.Count > 0) { decimal most = (int)dt.Rows[0][1]; decimal divide = 6; decimal compare = Math.Round(most / divide, 0); for (int i = 0; i < dt.Rows.Count; i++) if ((int)dt.Rows[i][1] >= compare) selgere.Add(dt.Rows[i][0].ToString().Trim()); //for (int i = 0; i < selgere.Count; i++) // Legg til første match av potensielle teknikere som "TeknikerAlle" //{ // if (!dataselgere.Contains(selgere[i])) // { // sKoder.Add(selgere[i], "Teknikere", "TeknikerAlle"); // dataselgere += selgere[i]; // break; // } //} for (int i = 0; i < selgere.Count; i++) // Legg til resten av potensielle teknikere if (!dataselgere.Contains(selgere[i])) salesCodes.Add(selgere[i], "Teknikere", "Selger"); } } processing.SetValue = 75; if (appConfig.importSetting.StartsWith("Full")) { Log.Status("Legger til [SDA] og [MDA] selgere.."); processing.SetText = "Legger til [SDA] og [MDA] selgere.."; using (DataTable dtMda = database.GetSqlDataTable("SELECT TOP 20 Selgerkode, SUM(Antall) AS Antall " + " FROM tblSalg WHERE (Varegruppe LIKE '3%') AND (Avdeling = '" + appConfig.Avdeling.ToString() + "') AND (Dato >= '" + appConfig.dbTo.AddMonths(-1).ToString("yyy-MM-dd") + "') AND (Dato <= '" + appConfig.dbTo.ToString("yyy-MM-dd") + "') GROUP BY Selgerkode ORDER BY Antall DESC")) { DataTable dtSda = database.GetSqlDataTable("SELECT TOP 20 Selgerkode, SUM(Antall) AS Antall " + " FROM tblSalg WHERE (Varegruppe LIKE '1%') AND (Avdeling = '" + appConfig.Avdeling.ToString() + "') AND (Dato >= '" + appConfig.dbTo.AddMonths(-1).ToString("yyy-MM-dd") + "') AND (Dato <= '" + appConfig.dbTo.ToString("yyy-MM-dd") + "') GROUP BY Selgerkode ORDER BY Antall DESC"); List<string> selgereMda = new List<string>(); List<string> selgereSda = new List<string>(); if (dtMda.Rows.Count > 0) { for (int i = 0; i < dtSda.Rows.Count; i++) { for (int d = 0; d < dtMda.Rows.Count; d++) if ((string)dtSda.Rows[i][0] == (string)dtMda.Rows[d][0]) { if ((int)dtSda.Rows[i][1] >= (int)dtMda.Rows[d][1]) selgereMda.Add(dtSda.Rows[i][0].ToString().Trim()); else selgereSda.Add(dtMda.Rows[d][0].ToString().Trim()); } } for (int i = 0; i < selgereMda.Count; i++) if (selgereMda[i] != "INT") salesCodes.Add(selgereMda[i], "MDA", "Selger"); for (int i = 0; i < selgereSda.Count; i++) if (selgereSda[i] != "INT") salesCodes.Add(selgereSda[i], "SDA", "Selger"); } } } processing.SetValue = 99; ClearHash(); // med fra om oppdatering av ranking OppdaterSelgerkoder(); Log.n("Fullført automatisk utfylling av selgerkoder. Kontroller selgerkode listen!", Color.Green); processing.SetText = "Ferdig!"; processing.HideDelayed(); this.Activate(); if (appConfig.importSetting.StartsWith("Full")) MessageBox.Show("Automatisk utfylling av selgerkoder fullført.\n\nSelgere er blitt tilknyttet " + "en kategori basert på en analyse av transaksjoner den siste måneden.\nKategorien [Aftersales] må " + "velges manuelt, samt [Kasse], [MDA] og [SDA] er vanskelig å finne automatisk.\n" + "Sjekk over selgerkodene og manuelt legg de til i riktig avdeling.", "KGSA - Informasjon", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("Automatisk utfylling av selgerkoder fullført.\n\nSelgere er blitt tilknyttet " + "en kategori basert på en analyse av transaksjoner den siste måneden.\nKategoriene [Aftersales], [MDA], [SDA] og [Kasse] må " + "velges manuelt.\n" + "Sjekk over selgerkodene og legg de til i riktig avdeling.", "KGSA - Informasjon", MessageBoxButtons.OK, MessageBoxIcon.Information); LagreSelgerkoder(); } catch (Exception ex) { processing.SetVisible = false; FormError errorMsg = new FormError("Feil oppstod under prosessering av selgerkoder.", ex); errorMsg.ShowDialog(this); } }
private void NavigateWeb(WebBrowserNavigatingEventArgs e) { try { var url = e.Url.OriginalString; if (url.Contains("#link") && !url.Contains("#linkx")) { var page = currentPage(); int index = url.IndexOf("#"); bool month = true; if (url.Substring(index + 5, 1) == "d") month = false; var type = url.Substring(index + 6, 1); var data = url.Substring(index + 7, url.Length - index - 7); processing.SetVisible = true; processing.SetText = "Søker.."; InitDB(); tabControlMain.SelectedTab = tabPageTrans; this.Update(); SearchDB(page, month, type, data); processing.SetVisible = false; Log.Status("Ferdig."); } else if (url.Contains("#vinn")) // klikk på vinnprodukt selgerkode { int index = url.IndexOf("#"); var selger = url.Substring(index + 5, url.Length - index - 5); if (selger.Length > 0) RunVinnSelger(selger); else Log.Alert("Ugyldig selgerkode!"); } else if (url.Contains("#graf")) { int index = url.IndexOf("#graf"); if (url.Length > index + 7) { string navn = url.Substring(index + 5, url.Length - index - 5); RunGraph(navn); } } } catch (Exception ex) { processing.SetVisible = false; FormError errorMsg = new FormError("Feil ved navigering", ex); errorMsg.ShowDialog(this); } }
private void LagreSelgerkoder() { try { if (dataGridViewSk.CurrentRow != null) dataGridViewSk.CurrentRow.DataGridView.EndEdit(); dataGridViewSk.EndEdit(); bindingSourceSk.EndEdit(); var msg = salesCodes.DeleteDuplicates(); if (!String.IsNullOrEmpty(msg)) { Log.n(msg, Color.Red); MessageBox.Show(msg, "KGSA - Advarsel", MessageBoxButtons.OK, MessageBoxIcon.Warning); daSk.Update(dsSk, "tblSelgerkoder"); OppdaterSelgerkoder(); return; } daSk.Update(dsSk, "tblSelgerkoder"); OppdaterSelgerkoder(); Log.n("Selgerkoder Lagret.", Color.Green); salesCodes.Update(); ClearHash(); } catch (Exception ex) { FormError errorMsg = new FormError("Feil oppstod under lagring av selgerkoder.", ex, "Sjekk om alle påkrevde felt er utfylt.\n\nException: "); errorMsg.ShowDialog(this); } }
private void ReloadBudget(bool forced = false) { try { if (forced) { ClearBudgetHash(BudgetCategory.None); } if (EmptyDatabase()) { webBudget.Navigate(htmlImport); groupBudgetPages.Enabled = false; groupBudgetChoices.Enabled = false; buttonBudgetUpdate.BackColor = SystemColors.ControlLight; buttonBudgetUpdate.ForeColor = SystemColors.ControlText; } else { groupBudgetPages.Enabled = true; groupBudgetChoices.Enabled = true; budget = new BudgetObj(this); if (!autoMode) UpdateBudget(); moveBudgetDate(0, true); } } catch (Exception ex) { FormError errorMsg = new FormError("Kritisk feil ved initialisering av databasen.\nInstaller programmet på nytt hvis problemet vedvarer.", ex); errorMsg.ShowDialog(this); } }
private void SelgerkodeClick(object sender, EventArgs e) { try { var kat = sender.ToString(); if (tabControlMain.SelectedTab == tabPageTrans) { var cellvalue = lastRightClickValue; lastRightClickValue = ""; if (!salesCodes.Add(cellvalue.Trim(), kat, "Selger")) Log.n("Kunne ikke legge til selger '" + cellvalue + "' for selgeren finnes allerede.", Color.Red); else { Log.n("Selger '" + cellvalue.Trim() + "' lagt til avdeling '" + kat + "' med provisjon Selger.", Color.Green); } } else { foreach (string element in listBoxSk.SelectedItems) { if (!salesCodes.Add(element.Trim(), kat, "Selger")) Log.n("Kunne ikke legge til selger '" + element + "' for selgeren finnes allerede.", Color.Red); else Log.n("Selger '" + element.Trim() + "' lagt til avdeling '" + kat + "' med provisjon Selger.", Color.Green); } listBoxSk.ClearSelected(); LagreSelgerkoder(); } OppdaterSelgerkoder(); } catch (Exception ex) { FormError errorMsg = new FormError("Unntak oppstod under lagring av ny selgerkode.", ex); errorMsg.ShowDialog(this); } }
public bool BuildPage_Report(string strCat, string strHash, string htmlPage, DateTime date) { pickedDate = date; bool abort = main.HarSisteVersjonStore(strCat, strHash); try { if (!runningInBackground && !abort) main.timewatch.Start(); if (!runningInBackground) main.appConfig.savedStorePage = strCat; if (!abort) { Log.n("Oppdaterer [" + strCat + "].."); OpenPage_Loading(); doc = new List<string>(); main.openXml.DeleteDocument(strCat, pickedDate); AddPage_Start(true, "Lager (" + main.avdeling.Get(main.appConfig.Avdeling) + ")"); AddPage_Title("Lager (" + main.avdeling.Get(main.appConfig.Avdeling) + ")"); ShowProgress(); MakeJumplist(); ShowProgress(); MakeWeeklyReport(pickedDate); AddPage_End(); if (FormMain.stopRanking) { main.ClearHash(strCat); Log.n("Lasting avbrutt", Color.Red); OpenPage_Stopped(); FormMain.stopRanking = false; } else { File.WriteAllLines(htmlPage, doc.ToArray(), Encoding.Unicode); OpenPage(htmlPage); if (!runningInBackground) Log.n("Side [" + strCat + "] tok " + main.timewatch.Stop() + " sekunder.", Color.Black, true); } } else OpenPage(htmlPage); } catch (Exception ex) { Log.Unhandled(ex); if (!runningInBackground) { OpenPage_Error(); FormError errorMsg = new FormError("Feil ved generering av side for [" + strCat + "]", ex); errorMsg.ShowDialog(); } } return false; }
private void SelgerkoderPopulateSelgere() { try { listBoxSk.Items.Clear(); if (selgerkodeList.Count == 0) { UpdateSelgerkoderUI(); } else { listBoxSk.Items.AddRange(selgerkodeList.ToArray()); } } catch (Exception ex) { FormError errorMsg = new FormError("Feil oppstod under henting av selgerkoder", ex); errorMsg.ShowDialog(this); } }
private void dataGridViewSk_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { try { if (dataGridViewSk.CurrentRow != null) for (int i = 0; i < dsSk.Tables["tblSelgerkoder"].Rows.Count; i++) dsSk.Tables["tblSelgerkoder"].Rows[i]["Avdeling"] = main.appConfig.Avdeling; } catch (DeletedRowInaccessibleException ex) { Log.n("Unntak oppstod under oppdatering av selgerliste. Exception: " + ex, Color.Red); } catch (Exception ex) { FormError errorMsg = new FormError("Unntak oppstod under oppdatering av selgerliste", ex); errorMsg.ShowDialog(this); } }
public void SaveSettings() { try { var serializerObj = new XmlSerializer(typeof(AppSettings)); TextWriter writeFileStream = new StreamWriter(settingsFile); using (writeFileStream) { serializerObj.Serialize(writeFileStream, appConfig); } } catch (Exception ex) { FormError errorMsg = new FormError("Uhåndtert feil under lagring av innstillinger.", ex); errorMsg.ShowDialog(); return; } }
/// <summary> /// Show detailed modal error dialog. Will only create a log entry if FormMain.automode is true /// </summary> /// <param name="exception">Exception object, optionally Null, but not recommended</param> /// <param name="details">Explain the possible nature of the problem when possible</param> /// <param name="title">The title of the error dialg</param> public static void ErrorDialog(Exception exception, string details, string title) { n("Uhåndtert unntak oppstod! Unntak melding: " + exception.Message + Environment.NewLine + "Exception: " + exception.ToString(), Color.Red); if (!FormMain.autoMode) using (FormError error = new FormError(title, exception, details)) error.ShowDialog(); }
public void UpdateUi() { try { this.Text = "KGSA (" + avdeling.Get(appConfig.Avdeling) + ")"; UpdateFavorites(); InitSelgerkoder(); // Oppdater Vis meny. btokrToolStripMenuItem.Checked = appConfig.kolInntjen; provisjonToolStripMenuItem.Checked = appConfig.kolProv; varekToolStripMenuItem.Checked = !appConfig.kolVarekoder; omsetningToolStripMenuItem.Checked = appConfig.kolSalgspris; favorittAvdelingerToolStripMenuItem.Checked = appConfig.favVis; grafikkToolStripMenuItem.Checked = appConfig.graphVis; rabattToolStripMenuItem.Checked = appConfig.kolRabatt; if (appConfig.rankingCompareLastyear > 0) sammenligningToolStripMenuItem.Checked = true; else sammenligningToolStripMenuItem.Checked = false; if (appConfig.rankingCompareLastmonth > 0) sistMånedSammenligningToolStripMenuItem.Checked = true; else sistMånedSammenligningToolStripMenuItem.Checked = false; // Show / Hide experimental features if (appConfig.experimental) { androidAppToolStripMenuItem1.Visible = true; } else { androidAppToolStripMenuItem1.Visible = false; } inkluderBudsjettMålIKveldstallToolStripMenuItem.Checked = appConfig.dailyBudgetIncludeInQuickRanking; oppdaterAutomatiskToolStripMenuItem.Checked = appConfig.dailyBudgetQuickRankingAutoUpdate; // Setup bluetooth server menues if (appConfig.blueServerIsEnabled) { avToolStripMenuItem.Checked = false; påAutoToolStripMenuItem.Checked = true; } else { avToolStripMenuItem.Checked = true; påAutoToolStripMenuItem.Checked = false; } // Oppdater Ny graf kontroller comboBox_GraphLengde.SelectedIndex = appConfig.graphLengthIndex; checkBox_GraphHitrateMTD.Checked = appConfig.graphHitrateMTD; checkBox_GraphZoom.Checked = appConfig.graphScreenZoom; // Aktiver makro knapper og meny hvis relevante makro innstillinger er tilstede. if (!String.IsNullOrEmpty(appConfig.macroElguide) && !String.IsNullOrEmpty(appConfig.epostAvsender) && !String.IsNullOrEmpty(appConfig.epostSMTPserver) && appConfig.epostSMTPport > 0 && !String.IsNullOrEmpty(appConfig.epostEmne) && !String.IsNullOrEmpty(appConfig.csvElguideExportFolder)) { try { if (File.Exists(macroProgramService)) buttonServiceMacro.Enabled = true; else buttonServiceMacro.Enabled = false; } catch (Exception ex) { buttonServiceMacro.Enabled = false; Log.Unhandled(ex); } try { if (File.Exists(macroProgram)) buttonRankingMakro.Enabled = true; else buttonRankingMakro.Enabled = false; } catch (Exception ex) { buttonRankingMakro.Enabled = false; Log.Unhandled(ex); } try { if (File.Exists(macroProgramStore)) buttonLagerMakro.Enabled = true; else buttonLagerMakro.Enabled = false; } catch (Exception ex) { buttonLagerMakro.Enabled = false; Log.Unhandled(ex); } } else ShowHideGui_Macro(false); // Aktiver send ranking data meny hvis.. if (!String.IsNullOrEmpty(appConfig.epostAvsender) && !String.IsNullOrEmpty(appConfig.epostSMTPserver) && appConfig.epostSMTPport > 0 && !String.IsNullOrEmpty(appConfig.epostEmne) && !EmptyDatabase()) { toolMenuSendrank.Enabled = true; } // Aktiver timer.. if (appConfig.autoRank && !EmptyDatabase()) { SetTimer(); Log.n("Automatisk sending av ranking aktivert. Neste automatiske utsending: " + timerNextRun.ToShortTimeString(), Color.Black, true); UpdateTimer(); } else SetStatusInfo("timer", "ranking", "", DateTime.MinValue); // Aktiver Quick timer.. if (appConfig.autoQuick && !EmptyDatabase()) { SetTimerQuick(); Log.n("Automatisk sending av kveldsranking aktivert. Neste automatiske utsending: " + timerNextRunQuick.ToShortTimeString(), Color.Black, true); UpdateTimerQuick(); } else SetStatusInfo("timer", "kveldstall", "", DateTime.MinValue); // Aktiver Service Auto Import timer.. if (appConfig.AutoService) { SetTimerService(); Log.n("Automatisk importering av servicer aktivert. Neste automatiske import: " + timerNextRunService.ToShortTimeString(), Color.Black, true); UpdateTimerService(); } else SetStatusInfo("timer", "service", "", DateTime.MinValue); // Aktiver AutoStore import timer.. if (appConfig.AutoStore) { SetTimerAutoStore(); Log.n("Automatisk importering av lager aktivert. Neste automatiske import: " + timerNextRunAutoStore.ToShortTimeString(), Color.Black, true); UpdateTimerAutoStore(); } else SetStatusInfo("timer", "lager", "", DateTime.MinValue); if (!EmptyDatabase()) { SetStatusInfo("db", "ranking", "Transaksjoner fra " + appConfig.dbFrom.ToString("d. MMMM yyyy", norway) + " til " + appConfig.dbTo.ToString("d. MMMM yyyy", norway), appConfig.dbTo); } else SetStatusInfo("db", "ranking", "", DateTime.MinValue); if (!EmptyStoreDatabase()) { SetStatusInfo("db", "lager", "Lager database var sist oppdatert " + appConfig.dbStoreTo.ToString("d. MMMM yyyy", norway), appConfig.dbStoreTo); } else SetStatusInfo("db", "lager", "", DateTime.MinValue); if (service.dbServiceDatoFra != service.dbServiceDatoTil) { SetStatusInfo("db", "service", "Service database var sist oppdatert " + service.dbServiceDatoTil.ToString("d. MMMM yyyy", norway), service.dbServiceDatoTil); } else SetStatusInfo("db", "service", "", DateTime.MinValue); if (appConfig.histogramVis) { panel4.Visible = true; toolStripMenuItemVisHist.Checked = true; string kat = currentPage(); if (kat == "Butikk" || kat == "Data" || kat == "AudioVideo" || kat == "Tele") RunTopGraphUpdate(kat); else RunTopGraphUpdate(); } else { panel4.Visible = false; toolStripMenuItemVisHist.Checked = false; } checkBoxLogDebug.Checked = appConfig.debug; checkBoxLogDebugSql.Checked = appConfig.debugSql; if (appConfig.importSetting.StartsWith("Full")) ShowHideGui_FullTrans(true); else ShowHideGui_FullTrans(false); if (!String.IsNullOrEmpty(appConfig.savedTab)) foreach (TabPage tab in tabControlMain.TabPages) if (tab.Text == appConfig.savedTab) tabControlMain.SelectedTab = tab; } catch(Exception ex) { FormError errorMsg = new FormError("Feil oppstod under oppdatering av UI", ex); errorMsg.ShowDialog(this); } }
private bool SaveDb() { try { if (dataGridView1.CurrentRow != null) dataGridView1.CurrentRow.DataGridView.EndEdit(); dataGridView1.EndEdit(); bindingSource1.EndEdit(); con.Open(); da.Update(ds, "tblBudgetTimer"); con.Close(); RefreshDataGrid(); return true; } catch (Exception ex) { FormError errorMsg = new FormError("Feil oppstod under lagring av timer.", ex, "Sjekk om alle påkrevde felt er utfylt.\n\nException: "); errorMsg.ShowDialog(this); } return false; }
private void delayedAutoRanking() { try { processing.SetVisible = true; processing.SetProgressStyle = ProgressBarStyle.Continuous; processing.SetBackgroundWorker = bwAutoRanking; for (int b = 0; b < 100; b++) { processing.SetText = "Starter automatisk ranking om " + (((b / 10) * -1) + 10) + " sekunder.."; processing.SetValue = b; Application.DoEvents(); System.Threading.Thread.Sleep(100); if (processing.userPushedCancelButton) { Log.n("Brukeren avbrøt handlingen."); return; } } RestoreWindow(); processing.SetProgressStyle = ProgressBarStyle.Marquee; processing.SetText = "Starter automatisk ranking rutine.."; Log.n("Starter automatisk ranking rutine.."); processing.SetBackgroundWorker = bwAutoRanking; bwAutoRanking.RunWorkerAsync(); // Starter jobb som starter makro, importering, ranking, pdf konvertering og sending på mail. } catch (Exception ex) { FormError errorMsg = new FormError("Uhåndtert unntak oppstod ved delayedAutoRanking.", ex); errorMsg.ShowDialog(this); } }