Beispiel #1
0
 public FormSettingsMacro(FormMain form)
 {
     this.main = form;
     this.kgsaEmail = new KgsaEmail(main);
     InitializeComponent();
     timerMsgClear.Tick += timer;
     Log.d("Makro Innstillinger åpnet.");
 }
Beispiel #2
0
        private void bwSendEmail_DoWork(object sender, DoWorkEventArgs e)
        {
            ProgressStart();
            FormSendEmail se = (FormSendEmail)e.Argument;
            KgsaEmail kgsaEmail = new KgsaEmail(this);

            string rankingType = "";
            if (se.comboBoxType.SelectedIndex == 0)
                rankingType = "Full";
            else if (se.comboBoxType.SelectedIndex == 1)
                rankingType = "AudioVideo";
            else if (se.comboBoxType.SelectedIndex == 2)
                rankingType = "Telecom";
            else if (se.comboBoxType.SelectedIndex == 3)
                rankingType = "Computer";
            else if (se.comboBoxType.SelectedIndex == 4)
                rankingType = "Cross";
            else if (se.comboBoxType.SelectedIndex == 5)
                rankingType = "Vinnprodukter";
            else if (se.comboBoxType.SelectedIndex == 6)
                rankingType = "FullUkestart";

            string epostGruppe = se.comboBoxGruppe.GetItemText(se.comboBoxGruppe.SelectedItem);
            if (se.comboBoxGruppe.SelectedIndex == 0)
                epostGruppe = "";

            string pdf = CreatePDF(rankingType, "", bwAutoRanking);
            if (!String.IsNullOrEmpty(pdf))
            {
                processing.SetText = "Sender e-post for gruppe \"" + epostGruppe + "\"..";
                if (!kgsaEmail.Send(pdf, appConfig.dbTo, epostGruppe, se.textBoxTitle.Text, se.textBoxContent.Text))
                    e.Cancel = true;
            }
            else
                e.Cancel = true;
        }
Beispiel #3
0
        private void bwAutoRanking_DoWork(object sender, DoWorkEventArgs e)
        {
            ProgressStart();
            autoMode = true;
            var macroAttempt = 1;
            var macroMaxAttempts = 4;

            retrymacro:

            Log.n("Auto: Kjører makro.. [" + macroAttempt + "]");

            DateTime date = appConfig.dbTo;
            double span = (DateTime.Now - appConfig.dbTo).TotalDays;
            if (span > 31)
                date = DateTime.Now.AddMonths(-1); // Begrens oss til å importere en måned bak i tid
            if (appConfig.dbTo == DateTime.Now)
                date = GetFirstDayOfMonth(appConfig.dbTo);

            var macroForm = (FormMacro)StartMacro(date, macroProgram, bwAutoRanking, macroAttempt);
            if (macroForm.errorCode != 0)
            {
                // Feil oppstod under kjøring av macro
                macroAttempt++;
                Log.n("Auto: Feil oppstod under kjøring av makro. Feilbeskjed: " + macroForm.errorMessage + " Kode: " + macroForm.errorCode, Color.Red);
                for (int i = 0; i < 60; i++)
                {
                    Application.DoEvents();
                    System.Threading.Thread.Sleep(50);
                }
                if (macroForm.errorCode == 6)
                    return;
                if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen
                    goto retrymacro;

                return;
            }

            if (!File.Exists(appConfig.csvElguideExportFolder + @"\irank.csv") || File.GetLastWriteTime(appConfig.csvElguideExportFolder + @"\irank.csv").Date != DateTime.Now.Date)
            {
                // CSV finnes ikke eller filen er ikke oppdatert i dag i.e. data ble ikke eksportert riktig med makro
                macroAttempt++;
                Log.n("Auto: CSV er IKKE oppdatert, eller ingen tilgang. Sjekk CSV lokasjon og makro innstillinger.", Color.Red);
                for (int i = 0; i < 60; i++)
                {
                    Application.DoEvents();
                    System.Threading.Thread.Sleep(50);
                }
                if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen
                    goto retrymacro;

                return;
            }

            Log.n("Auto: Importerer data..");

            csvFilesToImport.Clear();
            ImportManager importMng = new ImportManager(this, csvFilesToImport);
            importMng.DoImportTransactions(bwAutoRanking, true);
            if (importMng.returnCode != 0)
            {
                // Feil under importering
                macroAttempt++;
                Log.n("Auto: Feil oppstod under importering. Kode: " + importMng.returnCode, Color.Red);
                for (int i = 0; i < 60; i++)
                {
                    Application.DoEvents();
                    System.Threading.Thread.Sleep(50);
                }
                if (macroAttempt < macroMaxAttempts && macroForm.errorCode != 2)
                    goto retrymacro;

                return;
            }

            // Oppdaterer gjeldene datoer.. vi oppdaterer UI etter ferdig jobb
            RetrieveDb(true);

            // Hvis valgt, avbryt utsending hvis vi ikke har tall fra i går.
            if (appConfig.epostOnlySendUpdated)
            {
                int dager = (DateTime.Now - appConfig.dbTo).Days;
                Log.n("Auto: Kontrollerer dato på sist transaksjon.. (dager: " + dager + ")");
                if (dager > 1)
                {
                    Log.n("Auto: Fant ingen transaksjoner fra gårsdagen. Avbryter..", Color.Red);
                    return;
                }
                else
                    Log.n("Auto: Fant transaksjoner fra gårsdagen. Fortsetter..", Color.Green);
            }

            // Legg ved service rapport
            if (appConfig.AutoService && appConfig.epostIncService && service.dbServiceDatoFra.Date != service.dbServiceDatoTil.Date)
            {
                Log.n("Auto: Legger ved service rapport..");
                MakeServiceOversikt(true, bwAutoRanking);
            }

            if (appConfig.onlineImporterAuto)
            {
                OnlineImporter importer = new OnlineImporter(this);

                Log.n("Auto: Oppdatere Prisguide.no produkter..");
                processing.SetText = "Oppdaterer Prisguide.no produkter..";

                bool successfull = importer.StartProcessingPrisguide(bwAutoStore);
                if (!successfull)
                    Log.n("Auto: Misslykket oppdatering av Prisguide.no produkter. Se logg for detaljer.", Color.Red);

                Log.n("Auto: Oppdatere Ukenytt produkter fra Elkjop.no..");
                processing.SetText = "Oppdaterer Ukenytt produkter fra Elkjop.no..";

                successfull = importer.StartProcessingWeekly(bwAutoStore);
                if (!successfull)
                    Log.n("Auto: Misslykket oppdatering av Ukenytt produkter. Se logg for detaljer.", Color.Red);
            }

            List<string> openXmlFiles = new List<string> { };
            if (appConfig.openXml_AllSalesRep_AutoSend)
            {
                bool sendNow = false;
                if (appConfig.openXml_AllSalesRep_AutoSend_Daily)
                    sendNow = true;
                else
                {
                    if (appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Sunday)
                        sendNow = true;
                    else if (!appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Monday)
                        sendNow = true;
                }

                if (sendNow)
                {
                    Log.n("Auto: Starter generering av regneark..");
                    string file = openXml.CreateDocumentSpecial(OpenXML.DOC_ALL_SALES_REP, bwAutoRanking);
                    if (!string.IsNullOrEmpty(file))
                        openXmlFiles.Add(file);
                }
            }

            processing.SetText = "Klargjør for sending av ranking..";
            Log.n("Auto: Konverterer ranking til PDF..");

            KgsaEmail kgsaEmail = new KgsaEmail(this);

            string pdfAlt = CreatePDF("Full", "", bwAutoRanking);
            processing.SetText = "Sender e-post for gruppe 'Full'..";
            if (openXmlFiles.Count > 0)
            {
                openXmlFiles.Add(pdfAlt);
                kgsaEmail.Send(openXmlFiles, appConfig.dbTo, "Full", appConfig.epostEmne, appConfig.epostBody);
            }
            else
                kgsaEmail.Send(pdfAlt, appConfig.dbTo, "Full", appConfig.epostEmne, appConfig.epostBody);

            string pdfComputer = CreatePDF("Computer", "", bwAutoRanking);
            processing.SetText = "Sender e-post for gruppe 'Computer'..";
            kgsaEmail.Send(pdfComputer, appConfig.dbTo, "Computer", appConfig.epostEmne, appConfig.epostBody);

            string pdfAudioVideo = CreatePDF("AudioVideo", "", bwAutoRanking);
            processing.SetText = "Sender e-post for gruppe 'AudioVideo'..";
            kgsaEmail.Send(pdfAudioVideo, appConfig.dbTo, "AudioVideo", appConfig.epostEmne, appConfig.epostBody);

            string pdfTelecom = CreatePDF("Telecom", "", bwAutoRanking);
            processing.SetText = "Sender e-post for gruppe 'Telecom'..";
            kgsaEmail.Send(pdfTelecom, appConfig.dbTo, "Telecom", appConfig.epostEmne, appConfig.epostBody);

            string pdfCross = CreatePDF("Cross", "", bwAutoRanking);
            processing.SetText = "Sender e-post for gruppe 'Cross'..";
            kgsaEmail.Send(pdfCross, appConfig.dbTo, "Cross", appConfig.epostEmne, appConfig.epostBody);

            string pdfVinn = CreatePDF("Vinnprodukter", "", bwAutoRanking);
            processing.SetText = "Sender e-post for gruppe 'Vinn'..";
            kgsaEmail.Send(pdfVinn, appConfig.dbTo, "Vinnprodukter", appConfig.epostEmne, appConfig.epostBody);

            if (appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Sunday)
            {
                string pdfAltUkestart = CreatePDF("FullUkestart", "", bwAutoRanking);
                processing.SetText = "Sender e-post for gruppe 'FullUkestart'..";
                kgsaEmail.Send(pdfAltUkestart, appConfig.dbTo, "FullUkestart", appConfig.epostEmne, appConfig.epostBody);
            }
            else if (!appConfig.ignoreSunday && DateTime.Now.Date.DayOfWeek == DayOfWeek.Monday)
            {
                string pdfAltUkestart = CreatePDF("FullUkestart", "", bwAutoRanking);
                processing.SetText = "Sender e-post for gruppe 'FullUkestart'..";
                kgsaEmail.Send(pdfAltUkestart, appConfig.dbTo, "FullUkestart", appConfig.epostEmne, appConfig.epostBody);
            }

            if (String.IsNullOrEmpty(pdfAlt) && String.IsNullOrEmpty(pdfComputer) && String.IsNullOrEmpty(pdfAudioVideo) && String.IsNullOrEmpty(pdfTelecom))
            {
                // Feil under pdf generering og sending av epost
                Log.n("Auto: Feil oppstod under generering av PDF og sending av epost. Se logg for detaljer.", Color.Red);
                return;
            }

            if (appConfig.pdfExport && !String.IsNullOrEmpty(appConfig.pdfExportFolder) && !String.IsNullOrEmpty(pdfAlt))
            {
                Log.n("Auto: Lagrer kopi av PDF til..");
                try
                {
                    File.Copy(pdfAlt, appConfig.pdfExportFolder);
                }
                catch { Log.n("Auto: Feil oppstod under kopiering av PDF."); }
            }

            // App database update
            if (appConfig.blueServerIsEnabled)
            {
                Log.n("Auto: Oppdaterer App-databasene..");
                AppManager app = new AppManager(this);
                if (app.UpdateAll(bwAutoRanking))
                    Log.n("Auto: App-databasene er oppdatert");
                else
                    Log.e("Auto: App-databasene er IKKE oppdatert. Se logg for detaljer");
            }
        }
Beispiel #4
0
        private void bwQuickAuto_DoWork(object sender, DoWorkEventArgs e)
        {
            ProgressStart();
            autoMode = true;

            var macroAttempt = 0;
            var macroMaxAttempts = 4;

            retrymacro:
            macroAttempt++;

            FormMacro formMacro = (FormMacro)StartMacro(appConfig.dbTo, macroProgramQuick, bwQuickAuto, macroAttempt);
            e.Result = formMacro.errorCode;
            if (formMacro.errorCode == 6)
            {
                Log.n("En kritisk feil forhindret makro i å utføre sine oppgaver. Se logg for detaljer.", Color.Red);
                e.Result = 6;
                return;
            }

            if (tableMacroQuick == null || tableMacroQuick.Rows.Count < 5 || formMacro.errorCode != 0)
            {
                System.Threading.Thread.Sleep(3000);
                if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen
                    goto retrymacro;
                if (formMacro.errorCode != 2)
                    Log.n("Kveldstall: Feil oppstod under kveldsranking automatisering. Feilbeskjed: " + formMacro.errorMessage + " Kode: " + formMacro.errorCode, Color.Red);
                return;
            }

            BudgetImporter budgetImporter = new BudgetImporter(this, DateTime.Now);

            if (appConfig.dailyBudgetQuickRankingAutoUpdate && appConfig.dailyBudgetIncludeInQuickRanking)
            {
                Log.n("Kveldstall: Starter nedlasting av dagens budsjett..");
                processing.SetText = "Henter dagens budsjett..";
                budgetImporter.FindAndDownloadBudget(bwQuickAuto);
            }

            ClearBudgetHash(BudgetCategory.Daglig);
            MakeBudgetPage(BudgetCategory.Daglig, bwQuickAuto);

            Log.n("Kveldstall: Konverterer kveldranking til PDF..");
            processing.SetText = "Konverterer kveldsranking til PDF..";

            string pdfBudget = CreatePDF("", "\"" + settingsPath + "\\budsjettDaglig.html\" ", bwQuickAuto);
            if (String.IsNullOrEmpty(pdfBudget) || !File.Exists(pdfBudget))
            {
                // Feil under pdf generering
                Log.n("Kveldstall: Feil oppstod under konvertering av kveldsranking til PDF. Se logg for detaljer.", Color.Red);
                e.Result = 6;
                return;
            }

            processing.SetText = "Sender kveldstall..";
            KgsaEmail email = new KgsaEmail(this);
            if (!email.Send(pdfBudget, DateTime.Now, "Quick", appConfig.epostEmneQuick, appConfig.epostBodyQuick))
            {
                // Feil under pdf generering
                Log.n("Kveldstall: Feil oppstod under sending av kveldsranking til PDF. Se logg for detaljer.", Color.Red);
                e.Result = 8;
                return;
            }
        }
Beispiel #5
0
        private void CheckOldDatabaseElements()
        {
            try
            {
                if (main.connection.TableExists("tblObsolete") && !main.connection.TableExists("tblUkurans"))
                {
                    MessageBox.Show("Under validering av databasen har vi oppdaget gamle tabeller "
                        + "som ikke kan konverteres til denne versjon av programmet.\nLager beholdning "
                        + "må importeres på nytt.", "KGSA - Oppgradering av database", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Log.n("Database: Sletter gammel lager tabell (tblObsolete)..");
                    var cmd = new SqlCeCommand("DROP TABLE [tblObsolete]", main.connection);
                    cmd.ExecuteNonQuery();
                    Log.n("Database: tblObsolete fjernet.");
                }
                else if (main.connection.TableExists("tblObsolete") && main.connection.TableExists("tblUkurans"))
                {
                    var cmd = new SqlCeCommand("DROP TABLE [tblObsolete]", main.connection);
                    cmd.ExecuteNonQuery();
                    Log.n("Database: tblObsolete fjernet. (Fjernet automatisk, ny tabell finnes)");
                }

                if (main.connection.TableExists("tblVaregruppe"))
                {
                    var cmd = new SqlCeCommand("DROP TABLE [tblVaregruppe]", main.connection);
                    cmd.ExecuteNonQuery();
                    Log.n("Database: tblVaregruppe fjernet.");
                }

                if (!main.connection.FieldExists("tblSelgerkoder", "Navn")) // tblSelgerkoder mangler kolonnen Navn..
                {
                    if (MessageBox.Show("Under validering av databasen har vi oppdaget manglende kolonne(r) i selgerkode tabellen.\nEn oppgradering av databasen er nødvendig\nSkal vi starte oppgraderingen nå og forsøke å flytte over alle gamle selgerkoder?", "KGSA - Oppgradering av database", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes)
                    {
                        Log.n("Database: Henter ut gamle selgerkoder..");
                        DataTable dt = main.database.GetSqlDataTable("SELECT * FROM tblSelgerkoder");
                        Log.n("Database: Fant " + dt.Rows.Count + " selgerkoder.");

                        Log.n("Database: Oppretter ny tabell for tblSelgerkoder..");

                        tableSelgerkoder.Reset();

                        try
                        {
                            Log.n("Database: Flytter eksisterende selgerkoder tilbake..");
                            if (dt != null)
                            {
                                main.salesCodes = new SalesCodes(main);
                                int teller = 0;
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    try
                                    {
                                        string sk = dt.Rows[i]["Selgerkode"].ToString();
                                        string kat = dt.Rows[i]["Kategori"].ToString();
                                        string prov = dt.Rows[i]["Provisjon"].ToString();
                                        object g;
                                        int finans = 0, mod = 0, strom = 0, rtgsa = 0;

                                        g = dt.Rows[i]["FinansKrav"];
                                        if (!DBNull.Value.Equals(g))
                                            finans = Convert.ToInt32(g);
                                        g = dt.Rows[i]["ModKrav"];
                                        if (!DBNull.Value.Equals(g))
                                            mod = Convert.ToInt32(g);
                                        g = dt.Rows[i]["StromKrav"];
                                        if (!DBNull.Value.Equals(g))
                                            strom = Convert.ToInt32(g);
                                        g = dt.Rows[i]["RtgsaKrav"];
                                        if (!DBNull.Value.Equals(g))
                                            rtgsa = Convert.ToInt32(g);

                                        if (main.salesCodes.AddAll(sk, kat, prov, finans, mod, strom, rtgsa))
                                            teller++;
                                        else
                                            Log.n("Klarte ikke konvertere " + dt.Rows[i]["Selgerkode"].ToString() + "..");
                                    }
                                    catch
                                    {
                                        Log.n("Klarte ikke konvertere " + dt.Rows[i]["Selgerkode"].ToString() + "..");
                                    }
                                }
                                Log.n("Database: Fullført flytting av " + teller + " selgerkoder.");
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.Unhandled(ex);
                            Log.n("En feil oppstod under flytting av gamle selgerkoder til ny tabell. Se logg for detaljer.", Color.Red);
                            MessageBox.Show("En feil oppstod under konvertering av gamle selgerkoder til ny tabell. Noen selgerkoder kan være tapt.\n\nSorry!", "KGSA - Feil", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }

                        Log.n("Database: Tabell oppgradert.", Color.Green);
                    }
                    else
                        MessageBox.Show("Merk at programmet vil ikke fungere som det skal til databasen er oppgradert.\nDu vil bli påminnet om oppgraderingen neste gang programmet starter på nytt", "KGSA - Informasjon", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }

                if (File.Exists(FormMain.settingsPath + @"\emailRecipients.txt"))
                {
                    if (MessageBox.Show("Gammel database oppdaget.\nManglende tabeller er opprettet.\n\nØnsker du å importere gamle e-post adresser\ntil den nye adresseboken?", "KGSA - Informasjon", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes)
                    {
                        KgsaEmail email = new KgsaEmail(main);
                        email.ImportOldEmailList(FormMain.settingsPath + @"\emailRecipients.txt");

                        FormEmailAddressbook form = new FormEmailAddressbook();
                        form.ShowDialog();
                    }
                    try
                    {
                        File.Delete(FormMain.settingsPath + @"\emailRecipients.txt");
                    }
                    catch
                    {
                        Log.Alert("Fikke ikke slettet gammel epostliste, filen var låst.");
                    }
                }
            }
            catch (SqlCeException ex)
            {
                FormError errorMsg = new FormError("SQLCE uhåndtert unntak oppstod ved CheckOldDatabaseElements()", ex);
                errorMsg.ShowDialog();
                return;
            }
            catch (Exception ex)
            {
                FormError errorMsg = new FormError("Generelt uhåndtert unntak oppstod ved CheckOldDatabaseElements()", ex);
                errorMsg.ShowDialog();
                return;
            }
        }