Beispiel #1
0
        private void bwAutoStore_DoWork(object sender, DoWorkEventArgs e)
        {
            ProgressStart();
            autoMode = true;
            var macroAttempt = 1;
            var macroMaxAttempts = 4;

            retrymacro:

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

            FormMacro formMacro = (FormMacro)StartMacro(DateTime.Now.AddDays(-1), macroProgramStore, bwAutoStore, macroAttempt);
            e.Result = formMacro.errorCode;
            if (formMacro.errorCode != 0)
            {
                // Feil oppstod under kjøring av macro
                macroAttempt++;
                if (formMacro.errorCode != 2)
                {
                    Log.n("Auto: Feil oppstod under kjøring av makro. Feilbeskjed: " + formMacro.errorMessage + " Kode: " + formMacro.errorCode, Color.Red);
                    processing.SetText = formMacro.errorMessage;
                }

                for (int i = 0; i < 60; i++)
                {
                    Application.DoEvents();
                    System.Threading.Thread.Sleep(50);
                }
                if (formMacro.errorCode == 6)
                    return;
                if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen
                    goto retrymacro;

                e.Result = formMacro.errorCode;
                return;
            }

            if (!File.Exists(appConfig.csvElguideExportFolder + @"\wobsolete.zip") || File.GetLastWriteTime(appConfig.csvElguideExportFolder + @"\wobsolete.zip").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 && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen
                    goto retrymacro;

                return;
            }

            Log.n("Auto: Importerer data..");
            string extracted = obsolete.Decompress(appConfig.csvElguideExportFolder + @"\wobsolete.zip");
            if (!String.IsNullOrEmpty(extracted))
            {
                if (obsolete.Import(extracted, bwImportObsolete))
                    e.Result = 0;
                else
                {
                    Log.n("Auto: Importering mislyktes!", Color.Red);
                    macroAttempt++;
                    if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen
                        goto retrymacro;

                    e.Result = 6;
                    return;
                }
            }
            else
            {
                Log.n("Auto: Utpakking mislykket av arkiv.", Color.Red);
                if (macroAttempt < macroMaxAttempts && formMacro.errorCode != 2) // Vi har flere forsøk igjen, samt bruker har ikke avbrutt prosessen
                    goto retrymacro;

                e.Result = 6;
                return;
            }

            if (appConfig.blueServerIsEnabled && appConfig.blueServerDatabaseUpdated.Date != DateTime.Now.Date)
            {
                Log.n("Auto: Oppdaterer App-databasene..");
                processing.SetText = "Oppdaterer App-databasene..";
                AppManager app = new AppManager(this);
                if (app.UpdateAll(bwAutoStore))
                    Log.n("Auto: App-databasene er klar.");
                else
                    Log.e("Auto: App-databasene er IKKE klar. Se logg for detaljer");
            }

            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);
            }
        }
Beispiel #2
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 #3
0
 private void oppdaterEANDatabasenToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (!IsBusy())
     {
         if (Log.Alert("Informasjon:\n\nEksporter EAN koder fra meny 200 i Elguide. Velg kategori 1 til 9-99-99.\n\nKlikk OK for å fortsette.",
             "EAN importering", MessageBoxButtons.OKCancel, MessageBoxIcon.None) == DialogResult.OK)
         {
             AppManager app = new AppManager(this);
             app.ImportEan();
         }
     }
 }
Beispiel #4
0
        internal void ClientConnected(BluetoothClient client)
        {
            Stream stream = null;
            try
            {
                Log.BtServer("MScanner med navn " + client.RemoteMachineName + " kobler til..");
                this.clientName = client.RemoteMachineName;
                this.clientAccepted = false;
                this.clientAppName = "Unknown";
                this.clientAppVersion = 0;
                stream = client.GetStream();
                stream.ReadTimeout = 10 * 1000;

                if (main.appConfig.blueServerDatabaseUpdated.Date != DateTime.Now.Date)
                {
                    Log.BtServer("App-databasene trenger oppdatering. Sist oppdatert: " + main.appConfig.blueServerDatabaseUpdated.ToShortDateString());
                    if (FormMain.appManagerIsBusy)
                        Log.BtServer("AppManager er opptatt: App-databasene er iferd med å bli oppdatert");
                    else
                    {
                        AppManager app = new AppManager(main);
                        app.UpdateAllAsync();
                        return;
                    }
                }

                while (true)
                {
                    try
                    {
                        if (!client.Connected || !serverStarted)
                            break;

                        if (!clientAccepted) // Client is not initialized, run init routine..
                            this.clientAccepted = serverInitConnectionRoutine(stream);

                        string strServerMsg = waitForMessage(stream);
                        if (strServerMsg.StartsWith(CMD_UPDATE_PRODUCT))
                        {
                            if (!serverUpdateRoutine(stream, strServerMsg, dataFilename))
                                break;
                        }
                        if (strServerMsg.StartsWith(CMD_UPDATE_INVENTORY))
                        {
                            if (!serverUpdateRoutine(stream, strServerMsg, inventoryFilename))
                                break;
                        }
                        if (strServerMsg.StartsWith(CMD_GOODBYE))
                        {
                            Log.BtServer("(" + this.clientName + ") Goodbye!");
                            break;
                        }

                        Thread.Sleep(300); // Used to limit the number of loops per second
                    }
                    catch (Exception ex)
                    {
                        Log.BtServer("Kommunikasjons feil med " + this.clientName + ". Kobler fra..", true);
                        Log.Unhandled(ex);
                        break;
                    }
                }

                if (stream != null)
                {
                    stream.Flush();
                    stream.Close();
                }

                if (client != null)
                    client.Close();

                Log.BtServer("(" + this.clientName + ") Koblet fra.");
            }
            catch (Exception ex)
            {
                Log.BtServer("Generell feil: " + ex.Message);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Flush();
                    stream.Close();
                    stream = null;
                }
                if (client != null)
                {
                    client.Close();
                    client = null;
                }
            }
        }
Beispiel #5
0
 private void oppdaterAppDatabaserToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (!IsBusy())
     {
         AppManager appMng = new AppManager(this);
         appMng.UpdateAllAsync();
     }
 }