コード例 #1
0
        internal bool loadPrisliste(Window window)
        {
            if (data == null)
            {
                data = new DataAksess2();
            }

            data.Produktbeholder = ProduktBeholder.loadData(Hjelpeklasser.GlobaleUrier.prislistefilUri());
            if (data.Produktbeholder == null)
            {
                data.Produktbeholder = new ProduktBeholder();
                window.Title         = "Corinor prisforslag - Prisliste sist endret: -";
                MessageBox.Show("Før programmet kan brukes må prislisten oppdateres.\nVær sikker på at du er koblet til Internett.", "Corinor Prisforslag", MessageBoxButton.OK, MessageBoxImage.Information);
                return(false);
            }
            else
            {
                window.Title = "Corinor prisforslag - Prisliste sist endret: " + data.Produktbeholder.SistEndret;
            }
            //window.Title = "Corinor prisforslag - Prisliste sist endret: " + data.Produktbeholder.getLastModified(Hjelpeklasser.GlobaleUrier.prislistefilUri());

            //ImportExcel.Start(data.Produktbeholder);
            //ImportExcel.StartCorian2(data.Produktbeholder);
            //ImportExcel.StartCorian4(data.Produktbeholder);

            //var antall = 0;
            //var l = new List<CorianProdukt>();

            //foreach (var p in data.Produktbeholder.ProduktListe)
            //{
            //    var t = false;
            //    foreach (var pg in p.Prisgrupper)
            //    {
            //        if (pg.Prisgrunnlag == 1034)
            //        {
            //            t = true;
            //            //antall++;

            //        }
            //    }

            //    if (t)
            //        l.Add(p);
            //}

            //MessageBox.Show("" + antall);

            return(true);
        }
コード例 #2
0
        public static void StartCorian4(ProduktBeholder produktBeholder)
        {
            var antallPriserNullstilt = 0;

            foreach (var p in produktBeholder.ProduktListe)
            {
                //p.Navn = p.Navn.Replace("intill", "inntil");
                //p.Navn = p.Navn.Replace("og utsparing", "og utspring");

                if (p.Navn.Contains("450-699"))
                {
                    p.Navn = p.Navn.Replace("450-699", "451-700");
                }

                if (p.Navn.Contains("0-299"))
                {
                    p.Navn = p.Navn.Replace("0-299", "0-300");
                }

                if (p.Navn.Contains("300-449"))
                {
                    p.Navn = p.Navn.Replace("300-449", "301-450");
                }

                if (p.Navn.Contains("700-930"))
                {
                    p.Navn = p.Navn.Replace("700-930", "701-930");
                }


                if (p.Navn.Contains("0-349"))
                {
                    p.Navn = p.Navn.Replace("0-349", "0-350");
                }

                if (p.Navn.Contains("350-699"))
                {
                    p.Navn = p.Navn.Replace("350-699", "351-700");
                }

                if (p.Navn.Contains("700-929"))
                {
                    p.Navn = p.Navn.Replace("700-929", "701-930");
                }

                if (p.Navn.Contains("930-1230"))
                {
                    p.Navn = p.Navn.Replace("930-1230", "931-1250");
                }

                //if (pp.DybdeintervallStørrelse.Trim() == "0-299")
                //    pp.DybdeintervallStørrelse = "0-300";

                //if (pp.DybdeintervallStørrelse.Trim() == "300-449")
                //    pp.DybdeintervallStørrelse = "301-450";

                //if (pp.DybdeintervallStørrelse.Trim() == "700-930")
                //    pp.DybdeintervallStørrelse = "701-930";


                for (int i = 0; i < 5; i++)
                {
                    if (p.Prisgrupper[i].Prisgrunnlag > 0 && p.Prisgrupper[i].Avhengighet == null)
                    {
                        p.Prisgrupper[i].Prisgrunnlag = -999;
                        antallPriserNullstilt++;
                    }
                }

                for (int i = 10; i < 12; i++)
                {
                    if (p.Prisgrupper[i].Prisgrunnlag > 0 && p.Prisgrupper[i].Avhengighet == null)
                    {
                        p.Prisgrupper[i].Prisgrunnlag = -999;
                        antallPriserNullstilt++;
                    }
                }
            }



            //var antallForMangeFunnet = 0;
            //var antallPriserPåProdukterSatt = 0;
            //var antallProduktPrisgrupperHvorPrisAlleredeErSatt = 0;


            var fil = @"E:\Corinor prosjekt\Corinor 2019\Corinor-prisliste-2019-191218.xlsx";
            var wb  = new XLWorkbook(fil);

            var ws = wb.Worksheet("Table 1");

            var celleBE = "";

            for (int rad = 87; rad < 147; rad++)
            {
                var tmpCelleBE = ws.Cell("BE" + rad).Value.ToString().TrimEnd();
                if (!string.IsNullOrWhiteSpace(tmpCelleBE))
                {
                    celleBE = tmpCelleBE;
                }
                else
                {
                    var celleA = ws.Cell("A" + rad).Value.ToString().TrimEnd();

                    //if (rad >= 103 && rad <= 107)
                    //{
                    //    celleA += " Synlig underside plater og innsider vanger";
                    //}

                    var navn = celleA.ToLower()
                               .Replace("a)", "")
                               .Replace("b)", "")
                               .Replace("c)", "")
                               .Replace("d)", "")
                               .Replace("e)", "")
                               .Replace("f)", "")
                               .Replace("g)", "")
                               .Replace("pr.", "")
                               .Replace(" mm", "mm") //NB
                               .Replace("cm", "")    //NB
                               .Replace("lm ", "")
                               .Replace("lm. ", "")
                               .Replace(" stk", "")

                               .Replace("d. ", "")
                               .Trim();

                    if (navn.Contains("tillegg for andre") ||
                        celleA == "pr lm benkeplate" ||
                        celleA == "pr. lm plate" ||
                        celleA.Contains("Standard radius 12 mm"))
                    {
                        continue;
                    }

                    var spl = navn.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                    var valgtProdukt = produktBeholder.ProduktListe
                                       .Where(x => x.ProduktKategori.ToLower() == celleBE.ToLower())
                    ;

                    var prodKat = valgtProdukt.ToList();
                    if (prodKat.Count == 0)
                    {
                    }

                    if (celleBE != "Stålstenger")
                    {
                        foreach (var s in spl)
                        {
                            if (s == "pr")
                            {
                                continue;
                            }

                            if (s == "per")
                            {
                                continue;
                            }

                            if (s == "lm")
                            {
                                continue;
                            }

                            valgtProdukt = valgtProdukt.Where(x => x.Navn.ToLower().Replace(" mm", "mm").Contains(s.Replace(",", "")));

                            if (valgtProdukt.Count() == 0)
                            {
                                throw new Exception("0");
                            }
                        }
                    }

                    if (spl[0] == "hulkil" && spl[2] == "50mm")
                    {
                        valgtProdukt = valgtProdukt.Where(x => x.Navn.ToLower().Contains(" 50mm"));
                    }

                    //a) Pr. lm benkeplate            d. 451-700mm
                    //451-700 mm: Benkeplate



                    if (valgtProdukt.Count() == 0)
                    {
                        throw new Exception("fant ingen produkter!!!");
                    }

                    var typeA = valgtProdukt.FirstOrDefault(x => x.Navn.ToLower().Contains("type a"));
                    var typeB = valgtProdukt.FirstOrDefault(x => x.Navn.ToLower().Contains("type b"));

                    if (valgtProdukt.Count() == 2 && typeA == null && typeB == null)
                    {
                        var prodMedAvhengighet = valgtProdukt.FirstOrDefault(x => x.Prisgruppe.Avhengighet != null);

                        if (prodMedAvhengighet == null)
                        {
                            throw new Exception("Skulle hatt avhengighet når det er 2 produkter");
                        }


                        var pris = 0;

                        if (celleBE.ToLower() == "benkeplater")
                        {
                            pris = 725;
                        }

                        if (celleBE.ToLower() == "Barløsningsplater/Øyplater".ToLower())
                        {
                            pris = 1034;
                        }

                        if (celleBE.ToLower() == "Hjørneplater".ToLower())
                        {
                            pris = 1034;
                        }

                        if (pris == 0)
                        {
                            throw new Exception("Pris skal ikke være 0!");
                        }

                        SetPrisMedAvhengighet(prodMedAvhengighet, 0, pris);
                        SetPrisMedAvhengighet(prodMedAvhengighet, 1, pris);
                        SetPrisMedAvhengighet(prodMedAvhengighet, 2, pris);
                        SetPrisMedAvhengighet(prodMedAvhengighet, 3, pris);
                        SetPrisMedAvhengighet(prodMedAvhengighet, 4, pris);
                        SetPrisMedAvhengighet(prodMedAvhengighet, 10, pris);
                        SetPrisMedAvhengighet(prodMedAvhengighet, 11, pris);
                    }

                    var prodUtenAvhengighet = valgtProdukt.FirstOrDefault(x => x.Prisgruppe.Avhengighet == null);

                    if (typeA != null)
                    {
                        prodUtenAvhengighet = typeA;
                    }

                    SetPris(prodUtenAvhengighet, rad, ws, "R", 0);
                    SetPris(prodUtenAvhengighet, rad, ws, "W", 1);
                    SetPris(prodUtenAvhengighet, rad, ws, "Z", 2);
                    SetPris(prodUtenAvhengighet, rad, ws, "AH", 3);
                    SetPris(prodUtenAvhengighet, rad, ws, "AN", 4);
                    SetPris(prodUtenAvhengighet, rad, ws, "AQ", 10);
                    SetPris(prodUtenAvhengighet, rad, ws, "AV", 11);

                    if (typeB != null)
                    {
                        SetPris(typeB, rad, ws, "R", 0);
                        SetPris(typeB, rad, ws, "W", 1);
                        SetPris(typeB, rad, ws, "Z", 2);
                        SetPris(typeB, rad, ws, "AH", 3);
                        SetPris(typeB, rad, ws, "AN", 4);
                        SetPris(typeB, rad, ws, "AQ", 10);
                        SetPris(typeB, rad, ws, "AV", 11);
                    }



                    //Sett priser
                    //var prodUtenAvhengighet = valgtProdukt.FirstOrDefault(x => x.Prisgruppe.Avhengighet == null);

                    //int pris = Convert.ToInt32(ws.Cell("B" + rad).Value.ToString().TrimEnd());
                    //if (pris <= 0)
                    //    throw new Exception("Feil pris");

                    //prodUtenAvhengighet.Prisgrupper[0].Prisgrunnlag = pris;

                    if (valgtProdukt.Count() > 2)
                    {
                        throw new Exception("Flere enn 2 produkter");
                    }
                }
            }


            var f = produktBeholder.ProduktListe.Where(x => x.Prisgrupper[0].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[1].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[2].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[3].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[4].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[10].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[11].Prisgrunnlag == -999).ToList();

            MessageBox.Show("Feil på produkter: " + f.Count);
            wb.Dispose();
        }
コード例 #3
0
        internal static void StartCorian(ProduktBeholder produktBeholder)
        {
            //foreach (var p in produktBeholder.ProduktListe)
            //{
            //    if (p.Prisgrupper[0].Prisgrunnlag > 0) p.Prisgrupper[0].Prisgrunnlag = -999;
            //    if (p.Prisgrupper[1].Prisgrunnlag > 0) p.Prisgrupper[1].Prisgrunnlag = -999;
            //    if (p.Prisgrupper[2].Prisgrunnlag > 0) p.Prisgrupper[2].Prisgrunnlag = -999;
            //    if (p.Prisgrupper[3].Prisgrunnlag > 0) p.Prisgrupper[3].Prisgrunnlag = -999;
            //    if (p.Prisgrupper[4].Prisgrunnlag > 0) p.Prisgrupper[4].Prisgrunnlag = -999;

            //}


            var fil    = @"C:\P\Corinor 2018\Corinor-prisliste-20180305.txt";
            var linjer = File.ReadAllLines(fil, Encoding.GetEncoding(1252));
            var antallProdukterFaaNyPris = 0;

            for (int i = 0; i < linjer.Length; i++)
            {
                var l = linjer[i];

                if (l.Contains(") Pr."))
                {
                    var spl    = l.Split(new [] { " " }, StringSplitOptions.RemoveEmptyEntries);
                    var priser = new double[] {
                        double.Parse(spl[spl.Length - 5]),
                        double.Parse(spl[spl.Length - 4]),
                        double.Parse(spl[spl.Length - 3]),
                        double.Parse(spl[spl.Length - 2]),
                        double.Parse(spl[spl.Length - 1])
                    };

                    if (!(spl[spl.Length - 5].Length == spl[spl.Length - 1].Length &&
                          spl[spl.Length - 5].Length == spl[spl.Length - 2].Length &&
                          spl[spl.Length - 5].Length == spl[spl.Length - 3].Length &&
                          spl[spl.Length - 5].Length == spl[spl.Length - 4].Length))
                    {
                        //MessageBox.Show("Priser ikke riktig lengde");
                        //return;
                    }

                    //var ww = produktBeholder.ProduktListe.FirstOrDefault().Navn;
                    //var w222 = ww.ToLower().Substring(0, 8).Replace(" ", "");
                    //var l2 = l.ToLower().Replace(" ", "");
                    //var fff = l2.Contains(w222);

                    //var kk = "450-699".Contains("450-699");

                    int n = 8;
                    var w = produktBeholder.ProduktListe
                            .Where(x => l.ToLower().Contains(x.ProduktKategori.ToLower().Substring(0, 6)))
                            .Where(x => l.ToLower().Replace(" ", "").Contains(x.Navn.ToLower().Substring(0, n).Replace(" ", "")))
                            .Where(x => x.Prisgruppe.Avhengighet == null)
                            .ToList();

                    if (w.Count > 1)
                    {
                        while (w.Count > 1)
                        {
                            n++;
                            w = produktBeholder.ProduktListe
                                .Where(x => l.ToLower().Contains(x.ProduktKategori.ToLower().Substring(0, 6)))
                                .Where(x => l.ToLower().Replace(" ", "").Contains(x.Navn.ToLower().Substring(0, n).Replace(" ", "")))
                                .Where(x => x.Prisgruppe.Avhengighet == null)
                                .ToList();
                        }
                    }

                    if (w.Count > 1)
                    {
                    }

                    if (w.Count() == 0)
                    {
                    }

                    if (w.Count == 1)
                    {
                        var produkt = w.FirstOrDefault();
                        produkt.Prisgrupper[0].Prisgrunnlag = priser[0];
                        produkt.Prisgrupper[1].Prisgrunnlag = priser[1];
                        produkt.Prisgrupper[2].Prisgrunnlag = priser[2];
                        produkt.Prisgrupper[3].Prisgrunnlag = priser[3];
                        produkt.Prisgrupper[4].Prisgrunnlag = priser[4];

                        antallProdukterFaaNyPris++;
                    }

                    //foreach (var produkt in produktBeholder.ProduktListe)
                    //{


                    //    if (l.ToLower().Contains(produkt.ProduktKategori.ToLower().Substring(0, 6)))
                    //        //&& produkt.Prisgrupper[0].Prisgrunnlag == -999)
                    //    {
                    //        produkt.Prisgrupper[0].Prisgrunnlag = priser[0];
                    //        produkt.Prisgrupper[1].Prisgrunnlag = priser[1];
                    //        produkt.Prisgrupper[2].Prisgrunnlag = priser[2];
                    //        produkt.Prisgrupper[3].Prisgrunnlag = priser[3];
                    //        produkt.Prisgrupper[4].Prisgrunnlag = priser[4];

                    //        break;
                    //    }
                    //}
                }
            }

            MessageBox.Show(antallProdukterFaaNyPris + " av " + produktBeholder.ProduktListe.Count + " produkter har fått ny pris");
        }
コード例 #4
0
        public static void StartCorian3(ProduktBeholder produktBeholder)
        {
            var antallPriserNullstilt = 0;
            //foreach (var p in produktBeholder.ProduktListe)
            //{

            //    p.Navn = p.Navn.Replace("intill", "inntil");
            //    p.Navn = p.Navn.Replace("og utsparing", "og utspring");


            //    for (int i = 0; i < 5; i++)
            //    {
            //        if (p.Prisgrupper[i].Prisgrunnlag > 0 && p.Prisgrupper[i].Avhengighet == null)
            //        {
            //            p.Prisgrupper[i].Prisgrunnlag = -999;
            //            antallPriserNullstilt++;
            //        }
            //    }
            //}

            var fil = @"C:\P\Corinor 2018\Corinor-prisliste-20180305 Corian.xlsx";
            var wb  = new XLWorkbook(fil);

            var antallForMangeFunnet        = 0;
            var antallPriserPåProdukterSatt = 0;
            var antallProduktPrisgrupperHvorPrisAlleredeErSatt = 0;



            for (int sheetNr = 34; sheetNr < 37; sheetNr++) //XLS SHEET
            {
                var ws = wb.Worksheet("Sheet" + sheetNr);

                var antallRaderFunnet = 0;

                for (int rad = 1; rad < 20; rad++)
                {
                    var celleA = ws.Cell("A" + rad).Value.ToString().TrimEnd();

                    if (celleA.ToLower().Contains("Mixa 851"))
                    {
                    }

                    if (string.IsNullOrEmpty(celleA))
                    {
                        continue;
                    }

                    antallRaderFunnet++;

                    if (celleA.ToLower().StartsWith("a)") ||
                        celleA.ToLower().StartsWith("b)") ||
                        celleA.ToLower().StartsWith("c)") ||
                        celleA.ToLower().StartsWith("d)") ||
                        celleA.ToLower().StartsWith("e)") ||
                        celleA.ToLower().StartsWith("f)") ||
                        celleA.ToLower().StartsWith("g)") ||
                        celleA.ToLower().StartsWith("h)") ||
                        celleA.ToLower().StartsWith("i)") ||
                        celleA.ToLower().StartsWith("j)") ||
                        celleA.ToLower().StartsWith("k)") ||
                        celleA.ToLower().StartsWith("l)") ||
                        celleA.ToLower().StartsWith("m)")
                        )
                    {
                        IEnumerable <CorianProdukt> produkter = null;

                        if (celleA == "f)")
                        {
                            celleA = ws.Cell("B" + rad).Value.ToString().TrimEnd();
                        }

                        if (celleA.ToLower().Contains("rillefelt ved kum"))
                        {
                            produkter = produktBeholder.ProduktListe.Where(x => x.Navn.ToLower().Contains("rillefelt ved kum"));
                        }
                        else
                        {
                            var n = 0;
                            while (produkter == null || (produkter.Count() == 0 && n < celleA.Length))
                            {
                                var celleASub = celleA.Remove(0, n++);
                                produkter = produktBeholder.ProduktListe.Where(x => x.Navn.ToLower().Contains(celleASub.ToLower()));
                            }

                            produkter = produkter.Where(x => x.Prisgruppe.Avhengighet == null);

                            if (produkter.Count() > 1)
                            {
                                var celleB = ws.Cell("B" + rad).Value.ToString().TrimEnd().Replace("d.", "").Replace(" ", "");
                                produkter = produkter.Where(x => x.Navn.ToLower().Replace(" ", "").Contains(celleB.ToLower()));
                            }

                            if (produkter.Count() > 1)
                            {
                                var celleB = ws.Cell("C" + rad).Value.ToString().TrimEnd().Replace("d.", "").Replace(" ", "");
                                produkter = produkter.Where(x => x.Navn.ToLower().Replace(" ", "").Contains(celleB.ToLower()));
                            }

                            if (produkter.Count() > 1)
                            {
                                if (celleA.ToLower().Contains("andre tykkelser"))
                                {
                                    produkter = produkter.Where(x => x.Navn.ToLower().Contains("andre tykkelser"));
                                }
                                else
                                {
                                    produkter = produkter.Where(x => !x.Navn.ToLower().Contains("andre tykkelser"));
                                }

                                //if (celleA.ToLower().Contains("endevange"))
                                //    produkter = produkter.Where(x => x.Navn.ToLower().Contains("endevange"));
                                //else
                                //    produkter = produkter.Where(x => !x.Navn.ToLower().Contains("endevange"));
                            }
                        }



                        if (produkter.Count() == 1 || celleA.ToLower().Contains("rillefelt ved kum"))
                        {
                            foreach (var produkt in produkter)
                            {
                                var  priser = new int[5];
                                char col    = 'A';

                                int i = 0;
                                while (i < 5 && i < 100)
                                {
                                    int pris = 0;
                                    int.TryParse(ws.Cell(col.ToString() + rad).Value.ToString().TrimEnd(), out pris);

                                    col++;
                                    if (pris > 0)
                                    {
                                        priser[i] = pris;
                                        i++;
                                    }
                                }


                                for (int k = 0; k < 5; k++)
                                {
                                    if (produkt.Prisgrupper[k].Prisgrunnlag == -999)
                                    {
                                        if (priser[k] > 100)//Ingen priser under 100
                                        {
                                            produkt.Prisgrupper[k].Prisgrunnlag = priser[k];
                                        }
                                        else
                                        {
                                            MessageBox.Show("FEIL: Pris er 0");
                                        }
                                    }
                                    else
                                    {
                                        antallProduktPrisgrupperHvorPrisAlleredeErSatt++;
                                        //MessageBox.Show("FEIL: Finnes ikke pris på produktet fra før!");
                                    }
                                }

                                antallPriserPåProdukterSatt++;
                            }
                        }
                        else if (produkter.Count() > 1)
                        {
                            antallForMangeFunnet++;
                        }
                    }
                }
            }

            var f = produktBeholder.ProduktListe.Where(x => x.Prisgrupper[0].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[1].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[2].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[3].Prisgrunnlag == -999 ||
                                                       x.Prisgrupper[4].Prisgrunnlag == -999).ToList();

            MessageBox.Show("Feil på produkter: " + f.Count);
            wb.Dispose();
        }
コード例 #5
0
        public static void Start(ProduktBeholder p)
        {
            foreach (var pp in p.HeltreProduktliste)
            {
                //pp.DybdeintervallStørrelse = pp.DybdeintervallStørrelse.Replace("Inntill", "inntil");
                //pp.DybdeintervallStørrelse = pp.DybdeintervallStørrelse.Replace("Inntil", "inntil");

                pp.Pris = -1;

                //if (pp.DybdeintervallStørrelse.Trim() == "450-699")
                //    pp.DybdeintervallStørrelse = "451-700";

                //if (pp.DybdeintervallStørrelse.Trim() == "0-299")
                //    pp.DybdeintervallStørrelse = "0-300";

                //if (pp.DybdeintervallStørrelse.Trim() == "300-449")
                //    pp.DybdeintervallStørrelse = "301-450";

                //if (pp.DybdeintervallStørrelse.Trim() == "700-930")
                //    pp.DybdeintervallStørrelse = "701-930";

                //if (pp.DybdeintervallStørrelse.Trim() == "931-1250")
                //    pp.DybdeintervallStørrelse = "961-1250";

                //pp.Treslag = pp.Treslag.Replace("Amerikansk", "amerikansk");
                //pp.Treslag = pp.Treslag.Replace("Europeisk", "europeisk");
                //if (pp.Treslag.Contains(pinusRadiata)) pp.Treslag = pinusRadiataStavbredde90;
                //if (pp.Treslag.Contains(eikRustik)) pp.Treslag = EikRustikStavbredde75;
                //if (pp.Treslag.Contains("Bambus design vertikal T. 38")) pp.Treslag = "Bambus design vertikal T. 38";

                //pp.Treslag = pp.Treslag.Replace("Sort eik", "Eik sort");
                //pp.Treslag = pp.Treslag.Replace("Bambus vertikal", "Bambus vertikal herning");
            }


            var mmInt   = 0;
            var mmTekst = new[] { " fingerskjøtet", " fingerskjøtet", " hele staver", " hele staver" };
            //var kolonner = new[] { "S", "X", "AB", "AG", "AL", "AR", "AV", "AZ", "BD", "BH", "BL" };
            //var kolonner = new[] { "M", "O", "S", "X", "AB", "AF", "AL", "AR", "AV", "AZ", "BD" };
            var kolonner = new[] { "J", "L", "O", "T", "X", "AA", "AG", "AM", "AP", "AS", "AW" };


            var stoerrelser = new[] { "", "", "", "", "", "", "", "", "", "", "" };
            var type        = new[] { "Benkeplate", "Benkeplate", "Benkeplate", "Benkeplate", "Benkeplate", "Halv hjørneplate", "Halv hjørneplate", "Halv hjørneplate", "Hel hjørneplate", "Hel hjørneplate", "Hel hjørneplate" };
            var fil         = @"E:\Corinor prosjekt\Corinor 2019\Corinor-prisliste-2019-191218.xlsx";
            var wb          = new XLWorkbook(fil);

            var ws           = wb.Worksheet("Table 1");
            var mm           = "";
            var newLineRader = 0;

            for (int rad = 339; rad < 385; rad++)
            {
                var celleA = ws.Cell("A" + rad).Value.ToString().TrimEnd();

                var tallIStarten = 0;
                if (celleA.Length >= 5 && celleA.Substring(0, 5).EndsWith(" mm") && int.TryParse(celleA.Substring(0, 2), out tallIStarten))
                {
                    celleA = celleA.Substring(0, 5);
                    mm     = celleA + mmTekst[mmInt];
                    mmInt++;
                    for (int i = 0; i < 11; i++)
                    {
                        //var space = i == 0 ? " " : "";
                        var adresse = kolonner[i] + (rad + 1);

                        if (adresse == "AW371")
                        {
                            stoerrelser[i] = "1200x1200";
                        }
                        else
                        {
                            stoerrelser[i] = ws.Cell(adresse).Value.ToString().Trim().Replace(Environment.NewLine, "");
                        }
                        //stoerrelser[i] += space + ws.Cell(kolonner[i] + (rad + 2)).Value.ToString().Trim();
                    }

                    rad++;
                    continue;
                }

                if (rad == RadOverFlereLinjer)
                {
                    celleA = celleA.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries)[newLineRader].Trim();
                }


                //if (celleA == pinusRadiata)
                //    celleA = pinusRadiataStavbredde90;

                //if (celleA == eikRustik)
                //    celleA = EikRustikStavbredde75;

                if (celleA == "Eik rustik" && mm == "40 mm fingerskjøtet")
                {
                    celleA = "Eik rustik, Stavbredde 79 mm";
                }

                //if(celleA == "Eik sort")
                //    celleA = "Sort eik";

                //var prods = p.HeltreProduktliste
                //    .Where(x => x.Tykkelse == mm)
                //    .Where(x => x.Treslag == celleA)
                //    ;

                for (int i = 0; i < 11; i++)
                {
                    var s = stoerrelser[i];
                    var k = kolonner[i];
                    var t = type[i];

                    if (string.IsNullOrEmpty(s))
                    {
                        MessageBox.Show("FEIL: Størrelse har ikke noe verdi. Sjekk om har satt opp riktig kolonner i kolonner array");
                    }

                    var ppListe = p.HeltreProduktliste
                                  .Where(x => x.Tykkelse == mm)
                                  .Where(x => x.Treslag == celleA)
                                  .Where(x => x.Type == t)
                                  .Where(x => x.DybdeintervallStørrelse == s)
                                  .ToList()
                    ;
                    double?nypris = -1;

                    if (rad == RadOverFlereLinjer)
                    {
                        double tmp = -1;
                        double.TryParse((ws.Cell(k + rad).Value as string).Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries)[newLineRader], out tmp);
                        if (tmp != -1)
                        {
                            nypris = tmp;
                        }
                    }
                    else
                    {
                        var vv           = Convert.ToString(ws.Cell(k + rad).Value);
                        var nyPrisString = vv as string;
                        nyPrisString = nyPrisString.Replace(" ", "");
                        if (!string.IsNullOrEmpty(nyPrisString))
                        {
                            nypris = Convert.ToDouble(nyPrisString); // as double?;
                        }
                    }

                    if (nypris.HasValue)
                    {
                        if (ppListe.Count() != 1)
                        {
                            MessageBox.Show("Feil antall");
                        }

                        var pp = ppListe.First();
                        if (pp.Pris != -1)
                        {
                            MessageBox.Show("Produktet har allerede pris");
                        }

                        pp.Pris = nypris.Value;
                    }
                }

                if (rad == RadOverFlereLinjer && newLineRader < 8)
                {
                    newLineRader++;
                    rad--;
                }

                //if (prods.Count() == 11)
                //{

                //}
                //else
                //{
                //    MessageBox.Show("Feil antall");
                //}
            }

            var f = p.HeltreProduktliste.Where(x => x.Pris == -1).ToList();

            MessageBox.Show("Feil på produkter: " + f.Count);
            wb.Dispose();
        }
コード例 #6
0
        public bool importPrisliste()
        {
            System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog();
            dlg.CheckPathExists  = true;
            dlg.CheckFileExists  = true;
            dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            dlg.ShowHelp         = false;
            dlg.Filter           = "Prislistefil|*.data";
            dlg.Title            = "Velg en prisliste som skal importeres";

            System.Windows.Forms.DialogResult res = dlg.ShowDialog();

            if (res == System.Windows.Forms.DialogResult.OK)
            {
                bool erPrislisteFil = ProduktBeholder.erPrislistefil(dlg.FileName);

                if (!erPrislisteFil)
                {
                    MessageBox.Show("Den valgte filen er ikke en gyldig prislistefil", "Corinor prisforslag", MessageBoxButton.OK, MessageBoxImage.Error);
                    return(false);
                }

                MessageBoxResult utfør = MessageBox.Show("Du er i ferd med å overskrive den gjeldene prislisten.\nDersom du gjør dette vil den tidligere prislisten gå tapt!\n\n Er du sikker på at du vil fortsette?", "Corinor prisforslag", MessageBoxButton.YesNo, MessageBoxImage.Warning);

                if (utfør != MessageBoxResult.Yes)
                {
                    return(false);
                }

                //Ta backup av nåværende prisliste
                string fra = Hjelpeklasser.GlobaleUrier.prislistefilUri(); //Path.Combine(Hjelpeklasser.GlobaleUrier.standardMappe(), Path.GetFileName(dlg.FileName));
                if (File.Exists(fra))
                {
                    string tilBackupmappe = Path.Combine(Hjelpeklasser.GlobaleUrier.standardMappe2(), "Backup");

                    try
                    {
                        if (!Directory.Exists(tilBackupmappe))
                        {
                            Directory.CreateDirectory(tilBackupmappe);
                        }

                        string tilBackupUrl = Path.Combine(tilBackupmappe, Hjelpeklasser.GlobaleUrier.prislisteNavn);

                        File.Copy(fra, tilBackupUrl, true);
                    }
                    catch
                    {
                        Console.WriteLine("Error: Klarte ikke å ta backup av prislisten.");
                    }
                }

                //Importer
                try
                {
                    string til = Hjelpeklasser.GlobaleUrier.prislistefilUri(); //Path.Combine(Hjelpeklasser.GlobaleUrier.standardMappe(), Path.GetFileName(dlg.FileName));
                    File.Copy(dlg.FileName, til, true);
                    return(true);
                }
                catch
                {
                    MessageBox.Show("Klarte ikke å importere prislisten.", "Corinor prisforslag", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }

            return(false);
        }
コード例 #7
0
        void p_PrislisteDownloded(object sender, EventArgs e)
        {
            var tempfilUrl = sender as string;

            if (tempfilUrl == null)
            {
                setUploadImage("Ingen prisliste lastet ned.\nPrøv igjen senere.", BildeEnum.Error);
                return;
            }

            //#Sjekk om tempfil kan åpnes
            var pbtest = ProduktBeholder.loadData(tempfilUrl);

            if (pbtest == null)
            {
                setUploadImage("Nedlastet prisliste var korrupt og kunne ikke benyttes.\nPrøv igjen senere.", BildeEnum.Error);
                return;
            }
            //###

            //Sjekk om nedlastet prisliste er nyere enn den gjeldene
            if (pbtest.SistEndret > data.Produktbeholder.SistEndret)
            {
                try
                {
                    string til = Hjelpeklasser.GlobaleUrier.prislistefilUri();
                    File.Copy(tempfilUrl, til, true);
                }
                catch
                {
                    setUploadImage("Klarte ikke å overskrive gjeldene prisliste", BildeEnum.Error);
                    return;
                }

                try
                {
                    File.Delete(tempfilUrl);
                }
                catch
                {
                    Console.WriteLine("Klarte ikke å slette tempfil: " + tempfilUrl);
                }

                loadPrisliste(hovedVindu);

                Corinor.Properties.Settings.Default.SisteUpdate = DateTime.Now;
                Corinor.Properties.Settings.Default.Save();

                var tekst = string.Format("Prislisten er oppdatert.\nForrige sjekk: {0}", Corinor.Properties.Settings.Default.SisteUpdate);
                setUploadImage(tekst, BildeEnum.OK);

                MessageBox.Show("Prislisten er oppdatert", "Corinor prisforslag", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                Corinor.Properties.Settings.Default.SisteUpdate = DateTime.Now;
                Corinor.Properties.Settings.Default.Save();

                var tekst = string.Format("Nyeste prisliste er allerede i systemet.\nForrige sjekk: {0}\n7 dager til neste sjekk", Corinor.Properties.Settings.Default.SisteUpdate);
                setUploadImage(tekst, BildeEnum.OK);
            }
        }