コード例 #1
0
        private BedragPerMaand bepaalLeningBedragPerMaand(IEnumerable <Lening> leningen)
        {
            BedragPerMaand bedragPerMaand = new BedragPerMaand();

            foreach (Lening lening in leningen)
            {
                Maand beginMaand = (Maand)lening.Begindatum.Month;
                int   jaar       = lening.Begindatum.Year;
                int   bedrag     = 0;

                if (lening.Type == LeningType.Annuitair)
                {
                    bedrag = lening.berekenAnnuitairBedragPerMaand(lening.Bedrag, lening.Looptijd);
                }
                else if (lening.Type == LeningType.Lineair)
                {
                    bedrag = lening.berekenLineairBedragPerMaand(lening.Looptijd);
                }

                if (jaar < this.jaar)
                {
                    bedragPerMaand.voegBedragToeAanAlleMaanden(bedrag);
                }
                else
                {
                    for (Maand i = beginMaand; i <= Maand.December; i++)
                    {
                        bedragPerMaand.voegBedragToeInMaand(bedrag, i);
                    }
                }
            }

            return(bedragPerMaand);
        }
コード例 #2
0
        private Dictionary <string, BedragPerMaand> bepaalSpaardoelenPerMaand(IEnumerable <Spaardoel> spaardoelen, BedragPerMaand resultatenPerMaand)
        {
            Dictionary <string, BedragPerMaand> spaardoelBedragPerLabelPerMaand = new Dictionary <string, BedragPerMaand>();
            BedragPerMaand spaardoelenTotaalBedragPerMaand = new BedragPerMaand();

            foreach (Spaardoel spaardoel in spaardoelen)
            {
                string         label      = spaardoel.getLabelnaam();
                int            doelBedrag = spaardoel.Eindbedrag ?? 99999999;
                BedragPerMaand spaardoelBedragPerMaand = new BedragPerMaand();

                if (spaardoel.Percentage == null)
                {
                    for (Maand i = spaardoel.LaatsteMaand; i >= spaardoel.EersteMaand; i--)
                    {
                        int resterendDoelBedrag = doelBedrag - spaardoelBedragPerMaand.getTotaalBedrag();
                        if (resterendDoelBedrag == 0)
                        {
                            break;
                        }

                        int beschikbaarBedragInMaand = resultatenPerMaand.getBedragInMaand(i) - spaardoelenTotaalBedragPerMaand.getBedragInMaand(i);
                        if (beschikbaarBedragInMaand <= 0)
                        {
                            continue;
                        }

                        spaardoelBedragPerMaand.voegBedragToeInMaand(Math.Min(beschikbaarBedragInMaand, resterendDoelBedrag), i);
                        spaardoelenTotaalBedragPerMaand.voegBedragToeInMaand(spaardoelBedragPerMaand.getBedragInMaand(i), i);
                    }
                }
                else
                {
                    for (Maand i = spaardoel.EersteMaand; i <= spaardoel.LaatsteMaand; i++)
                    {
                        int resterendDoelBedrag = doelBedrag - spaardoelBedragPerMaand.getTotaalBedrag();
                        if (resterendDoelBedrag == 0)
                        {
                            break;
                        }

                        int beschikbaarBedragInMaand = resultatenPerMaand.getBedragInMaand(i) - spaardoelenTotaalBedragPerMaand.getBedragInMaand(i);
                        if (beschikbaarBedragInMaand <= 0)
                        {
                            continue;
                        }

                        int bedrag = (int)(beschikbaarBedragInMaand * ((decimal)spaardoel.Percentage / 100));
                        spaardoelBedragPerMaand.voegBedragToeInMaand(Math.Min(bedrag, resterendDoelBedrag), i);
                    }
                }

                spaardoelBedragPerLabelPerMaand[label] = spaardoelBedragPerMaand;
            }

            return(spaardoelBedragPerLabelPerMaand);
        }
コード例 #3
0
ファイル: BedragPerMaand.cs プロジェクト: Wesmaster/MoneyGrip
 public void verminderBedragenPerMaandMet(BedragPerMaand bedragenPerMaand)
 {
     Januari   -= bedragenPerMaand.Januari;
     Februari  -= bedragenPerMaand.Februari;
     Maart     -= bedragenPerMaand.Maart;
     April     -= bedragenPerMaand.April;
     Mei       -= bedragenPerMaand.Mei;
     Juni      -= bedragenPerMaand.Juni;
     Juli      -= bedragenPerMaand.Juli;
     Augustus  -= bedragenPerMaand.Augustus;
     September -= bedragenPerMaand.September;
     Oktober   -= bedragenPerMaand.Oktober;
     November  -= bedragenPerMaand.November;
     December  -= bedragenPerMaand.December;
 }
コード例 #4
0
ファイル: BedragPerMaand.cs プロジェクト: Wesmaster/MoneyGrip
 public void voegBedragenPerMaandToe(BedragPerMaand bedragenPerMaand)
 {
     Januari   += bedragenPerMaand.Januari;
     Februari  += bedragenPerMaand.Februari;
     Maart     += bedragenPerMaand.Maart;
     April     += bedragenPerMaand.April;
     Mei       += bedragenPerMaand.Mei;
     Juni      += bedragenPerMaand.Juni;
     Juli      += bedragenPerMaand.Juli;
     Augustus  += bedragenPerMaand.Augustus;
     September += bedragenPerMaand.September;
     Oktober   += bedragenPerMaand.Oktober;
     November  += bedragenPerMaand.November;
     December  += bedragenPerMaand.December;
 }
コード例 #5
0
        private BedragPerMaand bepaalReservingBedragPerMaand(IEnumerable <Reservering> reserveringen)
        {
            BedragPerMaand reserveringenPerMaand = new BedragPerMaand();

            reserveringenPerMaand.voegBedragToeAanAlleMaanden(reserveringen.Where(r => r.Maand == Maand.Alle).Sum(r => r.Bedrag));
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.Januari).Sum(r => r.Bedrag), Maand.Januari);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.Februari).Sum(r => r.Bedrag), Maand.Februari);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.Maart).Sum(r => r.Bedrag), Maand.Maart);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.April).Sum(r => r.Bedrag), Maand.April);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.Mei).Sum(r => r.Bedrag), Maand.Mei);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.Juni).Sum(r => r.Bedrag), Maand.Juni);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.Juli).Sum(r => r.Bedrag), Maand.Juli);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.Augustus).Sum(r => r.Bedrag), Maand.Augustus);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.September).Sum(r => r.Bedrag), Maand.September);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.Oktober).Sum(r => r.Bedrag), Maand.Oktober);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.November).Sum(r => r.Bedrag), Maand.November);
            reserveringenPerMaand.voegBedragToeInMaand(reserveringen.Where(r => r.Maand == Maand.December).Sum(r => r.Bedrag), Maand.December);

            return(reserveringenPerMaand);
        }
コード例 #6
0
        private BedragPerMaand bepaalAfschrijvingBedragPerMaand(IEnumerable <Afschrijving> afschrijvingen)
        {
            BedragPerMaand bedragPerMaand = new BedragPerMaand();

            foreach (Afschrijving afschrijving in afschrijvingen)
            {
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.Januari, jaar), Maand.Januari);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.Februari, jaar), Maand.Februari);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.Maart, jaar), Maand.Maart);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.April, jaar), Maand.April);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.Mei, jaar), Maand.Mei);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.Juni, jaar), Maand.Juni);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.Juli, jaar), Maand.Juli);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.Augustus, jaar), Maand.Augustus);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.September, jaar), Maand.September);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.Oktober, jaar), Maand.Oktober);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.November, jaar), Maand.November);
                bedragPerMaand.voegBedragToeInMaand(afschrijving.bepaalAfschrijfBedrag(Maand.December, jaar), Maand.December);
            }

            return(bedragPerMaand);
        }
コード例 #7
0
        public Begroting genereerOverzicht()
        {
            BedragPerMaand inkomstenPerMaand;
            BedragPerMaand contractenPerMaand;
            BedragPerMaand budgettenPerMaand;
            BedragPerMaand reserveringenPerMaand;
            BedragPerMaand afschrijvingenPerMaand;
            BedragPerMaand leningenPerMaand;
            BedragPerMaand uitgavenPerMaand  = new BedragPerMaand();
            BedragPerMaand resultaatPerMaand = new BedragPerMaand();
            Dictionary <string, BedragPerMaand> spaardoelenPerMaand;

            if (inkomsten != null)
            {
                inkomstenPerMaand = bepaalBedragenPerMaand(inkomsten);
                resultaatPerMaand.voegBedragenPerMaandToe(inkomstenPerMaand);
                begroting.Inkomst = inkomstenPerMaand;
            }
            if (contracten != null)
            {
                contractenPerMaand = bepaalBedragenPerMaand(contracten);
                uitgavenPerMaand.voegBedragenPerMaandToe(contractenPerMaand);
                begroting.Contract = contractenPerMaand;
            }
            if (budgetten != null)
            {
                budgettenPerMaand = bepaalBedragenPerMaand(budgetten);
                uitgavenPerMaand.voegBedragenPerMaandToe(budgettenPerMaand);
                begroting.Budget = budgettenPerMaand;
            }
            if (reserveringen != null)
            {
                reserveringenPerMaand = bepaalReservingBedragPerMaand(reserveringen);
                uitgavenPerMaand.voegBedragenPerMaandToe(reserveringenPerMaand);
                begroting.Reservering = reserveringenPerMaand;
            }
            if (afschrijvingen != null)
            {
                afschrijvingenPerMaand = bepaalAfschrijvingBedragPerMaand(afschrijvingen);
                uitgavenPerMaand.voegBedragenPerMaandToe(afschrijvingenPerMaand);
                begroting.Afschrijving = afschrijvingenPerMaand;
            }
            if (leningen != null)
            {
                leningenPerMaand = bepaalLeningBedragPerMaand(leningen);
                uitgavenPerMaand.voegBedragenPerMaandToe(leningenPerMaand);
                begroting.Lening = leningenPerMaand;
            }
            begroting.Uitgaven = uitgavenPerMaand;

            resultaatPerMaand.verminderBedragenPerMaandMet(uitgavenPerMaand);
            begroting.Resultaat = resultaatPerMaand;

            if (spaardoelen != null)
            {
                spaardoelenPerMaand = bepaalSpaardoelenPerMaand(spaardoelen, resultaatPerMaand);
                begroting.Spaardoel = spaardoelenPerMaand;
            }

            return(begroting);
        }
コード例 #8
0
        private BedragPerMaand bepaalBedragenPerMaand(IEnumerable <BedragPerPeriode> bedragenPerPeriode)
        {
            BedragPerMaand bedragPerMaand = new BedragPerMaand();

            IEnumerable <BedragPerPeriode> bedragenPerMaand = bedragenPerPeriode.Where(b => b.Interval == Interval.Maand);

            foreach (BedragPerPeriode bedrag in bedragenPerMaand)
            {
                Maand beginMaand = bedrag.Begindatum.Year == jaar ? (Maand)bedrag.Begindatum.Month : Maand.Januari;
                Maand eindMaand  = bedrag.Einddatum.HasValue && bedrag.Einddatum.Value.Year == jaar ? (Maand)bedrag.Einddatum.Value.Month : Maand.December;
                bedragPerMaand.voegBedragToeInMaanden(bedrag.Bedrag, beginMaand, eindMaand);
            }

            IEnumerable <BedragPerPeriode> bedragenPerJaar = bedragenPerPeriode.Where(b => b.Interval == Interval.Jaar);

            foreach (BedragPerPeriode bedragPerJaar in bedragenPerJaar)
            {
                bedragPerMaand.voegBedragToeInMaand(bedragPerJaar.Bedrag, (Maand)bedragPerJaar.Begindatum.Month);
            }

            IEnumerable <BedragPerPeriode> bedragenPerKwartaal = bedragenPerPeriode.Where(b => b.Interval == Interval.Kwartaal);

            foreach (BedragPerPeriode bedragPerKwartaal in bedragenPerKwartaal)
            {
                Maand beginMaand = (Maand)bedragPerKwartaal.Begindatum.Month;
                Maand eindMaand  = bedragPerKwartaal.Einddatum.HasValue ? (Maand)bedragPerKwartaal.Einddatum.Value.Month : Maand.December;
                int   bedrag     = bedragPerKwartaal.Bedrag;

                switch (beginMaand)
                {
                case Maand.Februari:
                case Maand.Mei:
                case Maand.Augustus:
                case Maand.November:
                {
                    bedragPerMaand.voegBedragToeInMaand(bedrag / 3 * Math.Max(1, Math.Min((int)(eindMaand - beginMaand), 2)), beginMaand);
                    break;
                }

                case Maand.Maart:
                case Maand.Juni:
                case Maand.September:
                case Maand.December:
                {
                    bedragPerMaand.voegBedragToeInMaand(bedrag / 3, beginMaand);
                    break;
                }

                default: break;
                }

                while (beginMaand <= Maand.Oktober && beginMaand < eindMaand)
                {
                    switch (beginMaand)
                    {
                    case Maand.Januari:
                    case Maand.April:
                    case Maand.Juli:
                    case Maand.Oktober:
                    {
                        int bedragDezeMaand = bedrag;
                        if (eindMaand - beginMaand < 2)
                        {
                            bedragDezeMaand = bedrag / 3 * (eindMaand - beginMaand + 1);
                        }
                        bedragPerMaand.voegBedragToeInMaand(bedragDezeMaand, beginMaand);
                        break;
                    }

                    default: break;
                    }
                    beginMaand++;
                }
            }
            return(bedragPerMaand);
        }