コード例 #1
0
ファイル: Obsolete.cs プロジェクト: tborgund/kgsa
        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;
        }
コード例 #2
0
ファイル: FormService.cs プロジェクト: tborgund/kgsa
        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();
            }
        }
コード例 #3
0
ファイル: Email.cs プロジェクト: tborgund/kgsa
        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;
            }
        }
コード例 #4
0
ファイル: FormMacro.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #5
0
ファイル: FormKrav.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #6
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
        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();
            }
        }
コード例 #7
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #8
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
 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);
     }
 }
コード例 #9
0
ファイル: PageBudgetDaily.cs プロジェクト: tborgund/kgsa
        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;
        }
コード例 #10
0
ファイル: FormMain.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #11
0
ファイル: ImportManager.cs プロジェクト: tborgund/kgsa
        /// <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;
        }
コード例 #12
0
ファイル: ImportManager.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #13
0
ファイル: FormStore.cs プロジェクト: tborgund/kgsa
        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);
                }
            }
        }
コード例 #14
0
ファイル: FormStore.cs プロジェクト: tborgund/kgsa
        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);
                }
            }
        }
コード例 #15
0
ファイル: FormStore.cs プロジェクト: tborgund/kgsa
        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);
                }
            }
        }
コード例 #16
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #17
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #18
0
ファイル: FormSelgere.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #19
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #20
0
ファイル: FormSelgere.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #21
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #22
0
ファイル: FormSelgere.cs プロジェクト: tborgund/kgsa
 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);
     }
 }
コード例 #23
0
ファイル: PageStorePrisguide.cs プロジェクト: tborgund/kgsa
        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;
        }
コード例 #24
0
ファイル: FormSelgere.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #25
0
ファイル: FormKrav.cs プロジェクト: tborgund/kgsa
 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);
     }
 }
コード例 #26
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
 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;
     }
 }
コード例 #27
0
ファイル: LogMessage.cs プロジェクト: tborgund/kgsa
 /// <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();
 }
コード例 #28
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
        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);
            }
        }
コード例 #29
0
ファイル: FormBudgetTimer.cs プロジェクト: tborgund/kgsa
        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;
        }
コード例 #30
0
ファイル: FormEssentials.cs プロジェクト: tborgund/kgsa
        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);
            }
        }