예제 #1
0
 public PrijsBerekening(Limo limo, Arrangement arr, EventingKorting evtKorting, int aantalReserveringen,
                        DateTime startTijd, DateTime eindTijd)
 {
     Limo                = limo;
     Arrangement         = arr;
     EventingKorting     = evtKorting;
     AantalReserveringen = aantalReserveringen;
     Periode             = new Periode(startTijd, eindTijd);
     BerekenKostPrijs();
 }
예제 #2
0
        public void BerekenKostPrijs()
        {
            int teller = 0;

            if (Arrangement == Arrangement.NightLife)
            {
                PrijsPerUur.Add(teller, Limo.NightLifeArrangementPrijs);

                if (!Periode.BevatOverUren(Arrangement.NightLife))
                {
                    UurOntleder(Periode.Begin, Periode.Einde);
                }
                else
                {
                    UurOntleder(Periode.Begin, Periode.Begin.AddHours(7));
                }

                if (Periode.BevatOverUren(Arrangement))
                {
                    DateTime startTijd = Periode.Begin.AddHours(7);
                    while (startTijd < Periode.Einde)
                    {
                        PrijsPerUur.Add(teller + 1, NachtUurPrijs(Limo.EersteUurPrijs));
                        PrijsInfo.AantalOverUren += 1;
                        if (IsNachtUur(startTijd))
                        {
                            PrijsInfo.AantalNachtUren += 1;
                        }
                        else
                        {
                            PrijsInfo.AantalGewoneUren += 1;
                        }
                        teller   += 1;
                        startTijd = Periode.Begin.AddHours(7 + teller);
                    }
                }
            }

            else if (Arrangement == Arrangement.Wedding)
            {
                PrijsPerUur.Add(teller, Limo.WeddingArrangementPrijs);

                if (!Periode.BevatOverUren(Arrangement.Wedding))
                {
                    UurOntleder(Periode.Begin, Periode.Einde);
                }
                else
                {
                    UurOntleder(Periode.Begin, Periode.Begin.AddHours(7));
                }

                if (Periode.BevatOverUren(Arrangement))
                {
                    DateTime startTijd = Periode.Begin.AddHours(7);

                    while (startTijd < Periode.Einde)
                    {
                        if (IsNachtUur(startTijd))
                        {
                            PrijsPerUur.Add(teller + 1, NachtUurPrijs(Limo.EersteUurPrijs));
                            PrijsInfo.AantalNachtUren += 1;
                        }
                        else
                        {
                            PrijsPerUur.Add(teller + 1, TweedeUurPrijs(Limo.EersteUurPrijs));
                        }

                        PrijsInfo.AantalOverUren += 1;
                        teller   += 1;
                        startTijd = Periode.Begin.AddHours(7 + teller);
                    }
                }
            }

            else if (Arrangement == Arrangement.Airport || Arrangement == Arrangement.Business)
            {
                while (teller < Periode.Duur.Hours)
                {
                    DateTime huidigeTijd = Periode.Begin.AddHours(teller);

                    if (IsEersteUur(huidigeTijd))
                    {
                        PrijsPerUur.Add(teller, Limo.EersteUurPrijs);
                        if (IsNachtUur(huidigeTijd))
                        {
                            PrijsInfo.AantalNachtUren += 1;
                        }
                        else
                        {
                            PrijsInfo.AantalGewoneUren += 1;
                        }
                    }

                    else if (IsNachtUur(huidigeTijd))
                    {
                        PrijsPerUur.Add(teller, NachtUurPrijs(Limo.EersteUurPrijs));
                        PrijsInfo.AantalNachtUren += 1;
                    }

                    else
                    {
                        PrijsPerUur.Add(teller, TweedeUurPrijs(Limo.EersteUurPrijs));
                        PrijsInfo.AantalGewoneUren += 1;
                    }
                    teller += 1;
                }
            }
            //optellen van bedragen om prijs exclusief btw VOOR eventingkorting te bekomen
            foreach (KeyValuePair <int, decimal> prijsVoorUur in PrijsPerUur)
            {
                PrijsInfo.BedragExclusiefBtwVoorEventingKorting += prijsVoorUur.Value;
            }

            //eventingkorting berekenen en toekennen aan PrijsInfowaarde
            //controle geldige eventingKorting

            if (EventingKorting.IsGeldig())
            {
                PrijsInfo.AangerekendeEventingKorting = (PrijsInfo.BedragExclusiefBtwVoorEventingKorting / 100) * (decimal)EventingKorting.KortingVoorAantal(AantalReserveringen);
            }
            else
            {
                throw new InvalidOperationException("Eventingkorting niet geldig!");
            }

            //Berekening BedragExclBtwNaEventingKorting
            PrijsInfo.BedragExclusiefBtwNaEventingKorting =
                PrijsInfo.BedragExclusiefBtwVoorEventingKorting - PrijsInfo.AangerekendeEventingKorting;

            //Berekening BtwBedrag
            PrijsInfo.BtwBedrag = (PrijsInfo.BedragExclusiefBtwNaEventingKorting / 100) * BtwPercentage;

            //Berekening totaalbedrag
            PrijsInfo.TotaalTeBetalenBedrag = PrijsInfo.BedragExclusiefBtwNaEventingKorting + PrijsInfo.BtwBedrag;
        }
예제 #3
0
 public KlantCategorie(string naam, EventingKorting eventingKorting)
 {
     Naam            = naam;
     EventingKorting = eventingKorting;
 }