예제 #1
0
        protected Ergebnis berechneTapete(int flaeche, Tapetenrolle produkt)
        {
            Ergebnis ergebnis = null;
            int      anzahl   = (int)Math.Ceiling(1f * flaeche / (produkt.getFlaeche())); //10000f));
            decimal  preis    = anzahl * produkt.preis;

            ergebnis = new Ergebnis(flaeche, anzahl, preis, produkt);
            return(ergebnis);
        }
예제 #2
0
        protected Ergebnis berechneFliese(int flaeche, Fliesenpaket produkt)
        {
            Ergebnis ergebnis = null;

            int     anzahl = (int)Math.Ceiling((flaeche * 1f / produkt.getFlaeche()) * 1.05);
            decimal preis  = anzahl * produkt.preis;

            ergebnis = new Ergebnis(flaeche, anzahl, preis, produkt);

            return(ergebnis);
        }
예제 #3
0
        protected Ergebnis berechneTapete(int laenge, int breite, Tapetenrolle produkt)
        {
            Ergebnis ergebnis = null;

            int BahnenanzahlGesamt      = Convert.ToInt32(Math.Ceiling((breite * 1f / produkt.breite)));
            int LaengeEinerBahnSchritt1 = Convert.ToInt32(Math.Ceiling((laenge * 1f / produkt.rapport)));
            int LaengeEinerBahnSchritt2 = Convert.ToInt32(Math.Ceiling((produkt.rapport * 1f * LaengeEinerBahnSchritt1)));
            int anzahlBahnenProRolle    = Convert.ToInt32(Math.Floor((produkt.laenge * 1f / LaengeEinerBahnSchritt2)));
            int anzahlRollen            = Convert.ToInt32(Math.Ceiling((BahnenanzahlGesamt * 1f / anzahlBahnenProRolle)));

            decimal preis = anzahlRollen * produkt.preis;

            ergebnis = new Ergebnis(laenge * breite, anzahlRollen, preis, produkt);

            return(ergebnis);
        }
예제 #4
0
        public void berechneZusatzprodukte()
        {
            this.flaecheTapeten = 0;
            this.flaecheFliesen = 0;
            foreach (Ergebnis ergebnis in this.ergebnisse)
            {
                switch (ergebnis.produkt.GetType().Name)
                {
                case "Fliesenpaket":
                    this.flaecheFliesen += ergebnis.flaecheGesamt;
                    break;

                case "Tapetenrolle":
                    this.flaecheTapeten += ergebnis.flaecheGesamt;
                    break;
                }
            }
            foreach (Zusatzprodukt zusatzprodukt in this.zusatzprodukte)
            {
                Ergebnis ergebnis = new Ergebnis();
                if (zusatzprodukt.GetType() == typeof(Tapetenkleister))
                {
                    ergebnis.flaecheGesamt = this.flaecheTapeten;
                    ergebnis.anzahlProdukt = Convert.ToInt32(Math.Ceiling((this.flaecheTapeten * 1f) / 10000 / zusatzprodukt.getFlaeche()));
                    ergebnis.produkt       = zusatzprodukt;
                    ergebnis.preis         = ergebnis.anzahlProdukt * zusatzprodukt.preis;
                }
                if (zusatzprodukt.GetType() == typeof(Fliesenkleber))
                {
                    ergebnis.flaecheGesamt = this.flaecheFliesen;
                    ergebnis.anzahlProdukt = Convert.ToInt32(Math.Ceiling((this.flaecheFliesen * 1f) / 10000 / zusatzprodukt.getFlaeche()));
                }
                if (zusatzprodukt.GetType() == typeof(Fugenmoertel))
                {
                    ergebnis.flaecheGesamt = this.flaecheFliesen;
                    ergebnis.anzahlProdukt = Convert.ToInt32(Math.Ceiling((this.flaecheFliesen * 1f) / 10000 / zusatzprodukt.getFlaeche()));
                }
                ergebnis.produkt = zusatzprodukt;
                ergebnis.preis   = ergebnis.anzahlProdukt * zusatzprodukt.preis;

                this.ergebnisse.Add(ergebnis);
            }
        }
예제 #5
0
        public void kalkuliere()
        {
            this.updateProduktlisten();
            this.ergebnisse = new List <Ergebnis>();

            foreach (string key in produktlisteTapetenrollen.Keys)  // Produkt
            {
                int             flaecheWaende      = 0;
                Ergebnis        ergebnis           = null;
                List <Ergebnis> zwischenergebnisse = new List <Ergebnis>();
                foreach (Raum raum in this.raeume)
                {
                    foreach (Wand wand in raum.waende)
                    {
                        if (wand.tapete.artikelnummer == this.produktkatalog.getProdukt(key).artikelnummer)
                        {
                            if (((Tapetenrolle)this.produktkatalog.getProdukt(key)).rapport > 0)
                            {
                                zwischenergebnisse.Add(this.berechneTapete(wand.laenge, wand.breite, (Tapetenrolle)this.produktkatalog.getProdukt(key)));
                            }
                            else
                            {
                                flaecheWaende += wand.getFlaeche();
                            }
                        }
                    }
                }
                if (((Tapetenrolle)this.produktkatalog.getProdukt(key)).rapport == 0)
                {
                    ergebnis = this.berechneTapete(flaecheWaende, (Tapetenrolle)this.produktkatalog.getProdukt(key));
                }
                else
                {
                    int     anzahl  = 0;
                    int     flaeche = 0;
                    decimal preis   = 0;

                    foreach (Ergebnis zwischenergebnis in zwischenergebnisse)
                    {
                        anzahl  += zwischenergebnis.anzahlProdukt;
                        flaeche += zwischenergebnis.flaecheGesamt;
                        preis   += zwischenergebnis.preis;
                    }
                    ergebnis = new Ergebnis(flaeche, anzahl, preis, (Tapetenrolle)this.produktkatalog.getProdukt(key));
                }
                if (ergebnis != null)
                {
                    ergebnisse.Add(ergebnis);
                }
            }
            foreach (string key in produktlisteFliesenpakete.Keys)
            {
                int flaecheBoeden = 0;
                foreach (Raum raum in this.raeume)
                {
                    foreach (Boden boden in raum.boeden)
                    {
                        if (boden.fliesen.artikelnummer == this.produktkatalog.getProdukt(key).artikelnummer)
                        {
                            flaecheBoeden += boden.getFlaeche();
                        }
                    }
                }
                Ergebnis ergebnis = this.berechneFliese(flaecheBoeden, (Fliesenpaket)this.produktkatalog.getProdukt(key));
                if (ergebnis != null)
                {
                    ergebnisse.Add(ergebnis);
                }
            }
            this.berechneZusatzprodukte();
        }