Beispiel #1
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 #2
0
        private void bwMacroRanking_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, bwMacroRanking, 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;

                e.Result = macroForm.errorCode;
                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;
            }
        }
Beispiel #3
0
        private void bwMacro_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                FormMain.autoMode = true;
                SendMessage("Starter test makro..");

                DateTime date = DateTime.Now;
                date = date.AddDays(-2);

                FormMacro form = new FormMacro(main, date, FormMain.macroProgram, 0, true, bwMacro);
                form.StartPosition = FormStartPosition.CenterScreen;
                form.ShowDialog();
                if (form.errorCode != 0)
                {
                    e.Result = "Makro returnerte med feilkode " + form.errorCode + " - Feilmelding: " + form.errorMessage;
                    return;
                }

                SendMessage("Importerer data..");

                var csvFilesToImport = new List<string>() { };
                ImportManager importMng = new ImportManager(main, csvFilesToImport);
                importMng.DoImportTransactions(bwMacro, false);

                if (importMng.returnCode != 0)
                {
                    e.Result = "Importering misslyktes med feilkode " + importMng.returnCode;
                    return;
                }

                SendMessage("Forbereder ranking..");
                main.RetrieveDb(true);

                SendMessage("Lager PDF..");
                string pdf = main.CreatePDF("Full", "", bwMacro);

                List<MailAddress> recip = new List<MailAddress>() { };
                recip.Add(new MailAddress(kgsaEmail.emailDb.Rows[0]["Address"].ToString(), kgsaEmail.emailDb.Rows[0]["Name"].ToString()));

                SendMessage("Sender e-post for mottaker " + kgsaEmail.emailDb.Rows[0]["Address"].ToString() + "..");
                if (!kgsaEmail.InternalSendMail(recip, main.appConfig.epostEmne, main.appConfig.epostBody, new List<string> { pdf }, main.appConfig.epostBrukBcc))
                {
                    e.Result = "Sending av e-post misslyktes";
                    return;
                }

                e.Result = "OK";
            }
            catch (Exception ex)
            {
                SendMessage("Kritisk feil oppstod under kjøring av Test Makro! Se logg for detaljer.", Color.Red);
                Log.Unhandled(ex);
                e.Result = "Exception: " + ex.Message;
            }
        }
Beispiel #4
0
        private void bwImport_DoWork(object sender, DoWorkEventArgs e)
        {
            ProgressStart();

            ImportManager importMng = new ImportManager(this, csvFilesToImport);
            importMng.DoImportTransactions(bwImport, false);

            e.Result = importMng;
            csvFilesToImport.Clear();
        }