Beispiel #1
0
        public static void KombinierterKredit3()
        {
            Finanzierung fina = new Finanzierung();
            Finanzierung.GetKombinierterKredit3(fina);

            using (StreamWriter writer = File.CreateText(DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".txt"))
            {
                var sortedQuellen = fina.Quellen.OrderBy(da => da.Prioritaet);

                foreach (Darlehen dar in sortedQuellen)
                {
                    writer.WriteLine(String.Format("Tilgungsplan Darlehen Summe {0}EUR Zinsen: {1}%", dar.Summe.ToString("F2"), (dar.Zinszeitraeume[0].Zinssatz * 100.0).ToString("F2")));
                    foreach (Annuitaet ann in dar.Annuitaeten)
                    {
                        writer.WriteLine(String.Format(
                            "{0} Darlehen: {1} EUR  Tilgung: {2} EUR  Zinsen: {3} EUR  Annuität: {4} EUR"
                            , ann.Zahlungsdatum.ToString()
                            , ann.DarlehenssumeVorZahlung.ToString("F2").PadLeft(10)
                            , ann.Gesamttilgung.ToString("F2").PadLeft(10)
                            , ann.Zins.Zins.ToString("F2").PadLeft(10)
                            , (ann.Gesamttilgung + ann.Zins.Zins).ToString("F2").PadLeft(10)));
                    }
                }
            }

            //Console.ReadKey();
        }
Beispiel #2
0
        private static void KombinierterKredit2()
        {
            Darlehen kredit = new Darlehen();
            double zinssatz = 0.0155;

            kredit.Auszahlungstag = new LocalDateTime(2016, 1, 1, 12, 0);
            kredit.Faelligkeitstag = new LocalDateTime(2045, 12, 31, 0, 0);
            kredit.Summe = 100000;
            kredit.Zinszeitraeume.Add(
                new Zinsfestschreibung(kredit.Auszahlungstag, kredit.Faelligkeitstag, zinssatz));
            kredit.Anfangstilgung = 0.05;
            kredit.Zahlungsperiode = Period.FromMonths(1);
            kredit.BeginnTilgung = kredit.Auszahlungstag + kredit.Zahlungsperiode;
            kredit.BeginnZinsZahlung = kredit.Auszahlungstag + kredit.Zahlungsperiode;

            kredit.Tilgungen.Add(new Tilgungszahlung(2000, new LocalDateTime(2016, 2, 18, 12, 0)));
            kredit.Prioritaet = 1;

            Darlehen kredit2 = new Darlehen();
            kredit2.Auszahlungstag = new LocalDateTime(2016, 1, 1, 12, 0);
            kredit2.Faelligkeitstag = new LocalDateTime(2045, 12, 31, 0, 0);
            kredit2.Summe = 50000;
            kredit2.Zinszeitraeume.Add(
                new Zinsfestschreibung(kredit2.Auszahlungstag, kredit2.Faelligkeitstag, zinssatz));
            kredit2.Anfangstilgung = 0.05;
            kredit2.Zahlungsperiode = Period.FromMonths(1);
            kredit2.BeginnTilgung = kredit2.Auszahlungstag + kredit2.Zahlungsperiode;
            kredit2.BeginnZinsZahlung = kredit2.Auszahlungstag + kredit2.Zahlungsperiode;

            kredit2.Tilgungen.Add(new Tilgungszahlung(2000, new LocalDateTime(2016, 2, 18, 12, 0)));
            kredit2.Prioritaet = 0;
            Finanzierung fina = new Finanzierung();
            fina.Quellen.Add(kredit);
            fina.Quellen.Add(kredit2);

            Tilgungsplan.BerechneTilgungsplanFesteAnnuitaet(fina);

            foreach (Darlehen dar in fina.Quellen)
            {
                Console.WriteLine(String.Format("Tilgungsplan Darlehen Summe {0}EUR", dar.Summe.ToString("F2")));
                foreach (Annuitaet ann in dar.Annuitaeten)
                {
                    Console.WriteLine(String.Format(
                        "{0} Darlehen: {1} EUR  Tilgung: {2} EUR  Zinsen: {3} EUR  Annuität: {4} EUR"
                        , ann.Zahlungsdatum.ToString()
                        , ann.DarlehenssumeVorZahlung.ToString("F2").PadLeft(10)
                        , ann.Gesamttilgung.ToString("F2").PadLeft(10)
                        , ann.Zins.Zins.ToString("F2").PadLeft(10)
                        , (ann.Gesamttilgung + ann.Zins.Zins).ToString("F2").PadLeft(10)));
                }
            }

            Console.ReadKey();
        }
Beispiel #3
0
        public LinePlot(Finanzierung fina)
            : this()
        {
            var timeAxis = new DateTimeAxis {StringFormat="yyyy-MM-dd"};

            timeAxis.Title = UIStrings.Datum;

            var linearAxis = new LinearAxis();

            linearAxis.StringFormat = "C1";
            linearAxis.Title = UIStrings.Gesamtbetrag;
            linearAxis.Unit = System.Globalization.RegionInfo.CurrentRegion.CurrencySymbol;

            this.Axes.Add(timeAxis);
            this.Axes.Add(linearAxis);

            List<AreaPoint> basePoints = new List<AreaPoint>();

            for (int i = fina.Quellen.Count -1; i >=0; i--)
            {
                List<AreaPoint> points = new List<AreaPoint>();

                Darlehen darlehen = fina.Quellen.FirstOrDefault(da => da.Prioritaet == i);
                double baseVal = 0.0;

                foreach (Annuitaet an in darlehen.Annuitaeten)
                {
                    AreaPoint basisPunkt = basePoints.FirstOrDefault(pt => pt.Date == an.Zahlungsdatum.ToDateTimeUnspecified());

                    if(basisPunkt != null)
                    {
                        baseVal = basisPunkt.Value;
                    }

                    points.Add(new AreaPoint
                                {
                                    Date = an.Zahlungsdatum.ToDateTimeUnspecified()
                                    , Value = an.DarlehenssummeNachZahlung + baseVal
                                    , Base = baseVal
                                    , TrackerValue = an.DarlehenssummeNachZahlung
                                    , DateString = an.Zahlungsdatum.ToDateTimeUnspecified().ToString("yyyy-MM-dd")
                                });

                    if (basisPunkt != null)
                    {
                        basisPunkt.Value += an.DarlehenssummeNachZahlung;
                    }
                    else
                    {
                        basePoints.Add(new AreaPoint
                                {
                                    Date = an.Zahlungsdatum.ToDateTimeUnspecified()
                                    ,
                                    Value = an.DarlehenssummeNachZahlung + baseVal
                                    ,
                                    Base = baseVal
                                    ,
                                    TrackerValue = an.DarlehenssummeNachZahlung
                                    ,
                                    DateString = an.Zahlungsdatum.ToDateTimeUnspecified().ToString("yyyy-MM-dd")
                                });
                    }

                    baseVal = 0.0;
                }

                AreaSeries series = new AreaSeries()
                {
                    ItemsSource = points,
                    Title = darlehen.Bezeichnung,
                    CanTrackerInterpolatePoints = false,
                    TrackerFormatString = "Darlehen {0} \n Restbetrag: {TrackerValue:C} \n {DateString}",
                    DataFieldX = "Date",
                    DataFieldY = "Value",
                    DataFieldX2 = "Date",
                    DataFieldY2 = "Base"
                };

                this.Series.Add(series);
            }
        }
Beispiel #4
0
        public static void BerechneTilgungsplanFesteAnnuitaet(Finanzierung finanzierung)
        {
            ////Gesamte Annuität berechnen
            ////Alle Zinszahlungen addieren
            //double gesamtannuitaet = 0;

            //foreach(Darlehen dar in finanzierung.Quellen)
            //{
            //    LocalDateTime startZinszahlung = dar.BeginnZinsZahlung;
            //    LocalDateTime endeZinszahlung = dar.BeginnZinsZahlung + dar.Zahlungsperiode;

            //    Zinsfestschreibung ersteFestschreibung = Zinsfestschreibung.GetZinsfestschreibung(startZinszahlung, dar.Zinszeitraeume);

            //    if (ersteFestschreibung == null)
            //        throw new ArgumentNullException("Keine Zinsfestschreibung gefunden!");

            //    double jahreszins = ersteFestschreibung.Zinssatz;

            //    gesamtannuitaet += Zinsfestschreibung.GetZinssatzFuerPeriode(startZinszahlung, endeZinszahlung, jahreszins);

            //    gesamtannuitaet += dar.Anfangstilgung * dar.Summe / 12.0;
            //}

            double ueberschuessigeRegelmaessigeTilgung = 0;
            double ueberschuessigeErsteTilgung = 0;
            LocalDateTime ldt_DefaultValue = new LocalDateTime(0, 1, 1, 0, 1);
            LocalDateTime beginnUeberschuessigeTilgung = ldt_DefaultValue;

            List<Tilgungszahlung> ueberschuessigeSondertilgungen = null;

            ////Tilgungen aus Vorlagen erstellen
            foreach(Darlehen dar in finanzierung.Quellen)
            {
                List<Tilgungszahlung> tilgungVorlagen = new List<Tilgungszahlung>(dar.Tilgungen.Where(til => til.ArtDerVorlage != TilgungVorlageArt.Einmalig));

                foreach(Tilgungszahlung tilg in tilgungVorlagen)
                {
                    var neueTilgungen = Tilgungszahlung.GetListTilgungen(tilg);
                    foreach(Tilgungszahlung ti in neueTilgungen)
                    {
                        dar.Tilgungen.Add(ti);
                    }

                    dar.Tilgungen.Remove(tilg);
                }
            }

            for(int prioCounter = 0; prioCounter < finanzierung.Quellen.Count; prioCounter++)
            {
                Darlehen dar = finanzierung.Quellen.FirstOrDefault(da => da.Prioritaet == prioCounter);

                if(ueberschuessigeSondertilgungen != null)
                {
                    foreach(Tilgungszahlung tilg in ueberschuessigeSondertilgungen)
                    {
                        dar.Tilgungen.Add(tilg);
                    }
                }

                List<Tilgungszahlung> auszahlungen = new List<Tilgungszahlung>();

                foreach(Tilgungszahlung tilgungsz in dar.Tilgungen)
                {
                    if(tilgungsz.Betrag < 0.0)
                    {
                        auszahlungen.Add(tilgungsz);
                    }
                }

                foreach(Tilgungszahlung ausz in auszahlungen)
                {
                    dar.Tilgungen.Remove(ausz);
                }

                bool weiterrechnen = true;

                Annuitaet aktuelleAnnuitaet = null;
                Annuitaet letzteAnnuitaet = null;

                ////Kontostand vor Beginn der Tilgung
                double kontostandVorTilgung = 0.0;

                ////Erste Annuitaet besetzen

                aktuelleAnnuitaet = new Annuitaet();
                aktuelleAnnuitaet.Zahlungsdatum = dar.BeginnZinsZahlung;

                ////Auszahlungen
                List<Tilgungszahlung> auszahlungenVorBeginn = new List<Tilgungszahlung>(auszahlungen.Where(tilg => (tilg.Zeitpunkt <= aktuelleAnnuitaet.Zahlungsdatum)));

                foreach (Tilgungszahlung ausz in auszahlungenVorBeginn)
                {
                    aktuelleAnnuitaet.Tilgungen.Add(ausz);

                    ////Da Auszahlungen negativ sind, der Kontostand aber für
                    ////einen Kredit positiv, muss hier Subtrahiert werden
                    kontostandVorTilgung -= ausz.Betrag;
                }

                foreach (Tilgungszahlung ausz in aktuelleAnnuitaet.Tilgungen)
                {
                    auszahlungen.Remove(ausz);
                }

                aktuelleAnnuitaet.DarlehenssumeVorZahlung = 0.0;

                Zinsfestschreibung festschr = dar.Zinszeitraeume.FirstOrDefault(zz => zz.ZeitpunktFestschreibung <= aktuelleAnnuitaet.Zahlungsdatum
                                                                    && zz.ZeitpunktAuslauf >= dar.BeginnZinsZahlung);

                if(festschr == null)
                    throw new ArgumentOutOfRangeException("Keine Zinsfestschreibung gefunden!");

                double effZins = festschr.GetZinssatzProPeriode(dar.Auszahlungstag, aktuelleAnnuitaet.Zahlungsdatum);

                aktuelleAnnuitaet.Zins = new Zinszahlung(effZins, kontostandVorTilgung, aktuelleAnnuitaet.Zahlungsdatum);

                ////Der feste Betrag der Annuitaeten
                double annuitaet = aktuelleAnnuitaet.Zins.Zins;
                double ersteTilgung = festschr.Anfangstilgung;

                if (aktuelleAnnuitaet.Zahlungsdatum >= dar.BeginnTilgung)
                {

                    annuitaet = ersteTilgung + aktuelleAnnuitaet.Zins.Zins;

                    dar.Annuitaet = annuitaet;

                    Tilgungszahlung ersteTilgungszahlung = new Tilgungszahlung(ersteTilgung, aktuelleAnnuitaet.Zahlungsdatum);
                    ersteTilgungszahlung.IsRegelm = true;
                    if (ersteTilgungszahlung.Betrag > 0.0)
                    {
                        aktuelleAnnuitaet.Tilgungen.Add(ersteTilgungszahlung);
                    }

                    if (beginnUeberschuessigeTilgung != ldt_DefaultValue && beginnUeberschuessigeTilgung <= aktuelleAnnuitaet.Zahlungsdatum && aktuelleAnnuitaet.DarlehenssummeNachZahlung > 0)
                    {
                        if (ueberschuessigeErsteTilgung > 0)
                        {

                            if(aktuelleAnnuitaet.DarlehenssummeNachZahlung >= ueberschuessigeErsteTilgung)
                            {
                                aktuelleAnnuitaet.Tilgungen.Add(new Tilgungszahlung(ueberschuessigeErsteTilgung, aktuelleAnnuitaet.Zahlungsdatum));
                                ueberschuessigeErsteTilgung = 0;
                            }
                            else
                            {
                                ueberschuessigeErsteTilgung -= aktuelleAnnuitaet.DarlehenssummeNachZahlung;
                                aktuelleAnnuitaet.Tilgungen.Add(new Tilgungszahlung(aktuelleAnnuitaet.DarlehenssummeNachZahlung, aktuelleAnnuitaet.Zahlungsdatum));
                            }
                        }
                        else if (ueberschuessigeRegelmaessigeTilgung > 0)
                        {
                            aktuelleAnnuitaet.Tilgungen.Add(new Tilgungszahlung(ueberschuessigeRegelmaessigeTilgung, aktuelleAnnuitaet.Zahlungsdatum));
                        }
                    }
                    else if(aktuelleAnnuitaet.DarlehenssummeNachZahlung <= 0)
                    {
                        double ueberschuss = aktuelleAnnuitaet.DarlehenssummeNachZahlung;
                        ersteTilgungszahlung.Betrag += ueberschuss;
                        ueberschuessigeErsteTilgung -= ueberschuss;
                    }

                }

                dar.Annuitaeten.Add(aktuelleAnnuitaet);
                festschr.Restsumme = aktuelleAnnuitaet.DarlehenssummeNachZahlung;

                weiterrechnen = aktuelleAnnuitaet.Zahlungsdatum <= dar.BeginnTilgung || aktuelleAnnuitaet.DarlehenssummeNachZahlung > 0;

                LocalDateTime zahlungLetzteAnnuitaet = aktuelleAnnuitaet.Zahlungsdatum;

                bool schalterErsteTilgung = true;

                Zinsfestschreibung alteZinsfestschreibung = null;

                while(weiterrechnen)
                {
                    letzteAnnuitaet = aktuelleAnnuitaet;
                    LocalDateTime zahlungsDatumDieseAnnuitaet = zahlungLetzteAnnuitaet + dar.Zahlungsperiode;

                    Zinsfestschreibung aktuelleFestschreibung = dar.Zinszeitraeume.FirstOrDefault(zf =>
                                                zf.ZeitpunktFestschreibung <= zahlungsDatumDieseAnnuitaet
                                                && zf.ZeitpunktAuslauf >= zahlungsDatumDieseAnnuitaet);

                    if(aktuelleFestschreibung == null)
                    {
                        throw new ArgumentOutOfRangeException("Keine Zinsfestschreibung für Annuität vom " + zahlungsDatumDieseAnnuitaet.ToString() + " gefunden! Restbetrag " + letzteAnnuitaet.DarlehenssummeNachZahlung.ToString("C2"));
                    }

                    bool zinswechsel = aktuelleFestschreibung != alteZinsfestschreibung;

                    aktuelleAnnuitaet = new Annuitaet();
                    aktuelleAnnuitaet.Zahlungsdatum = zahlungsDatumDieseAnnuitaet;
                    aktuelleAnnuitaet.DarlehenssumeVorZahlung = letzteAnnuitaet.DarlehenssummeNachZahlung;
                    aktuelleAnnuitaet.Zins = new Zinszahlung(aktuelleFestschreibung.GetZinssatzProPeriode(zahlungLetzteAnnuitaet, aktuelleAnnuitaet.Zahlungsdatum), aktuelleAnnuitaet.DarlehenssumeVorZahlung, aktuelleAnnuitaet.Zahlungsdatum);

                    auszahlungenVorBeginn = new List<Tilgungszahlung>(auszahlungen.Where(tilg => (tilg.Zeitpunkt <= aktuelleAnnuitaet.Zahlungsdatum)));

                    foreach (Tilgungszahlung ausz in auszahlungenVorBeginn)
                    {
                        aktuelleAnnuitaet.Tilgungen.Add(ausz);
                    }

                    foreach (Tilgungszahlung ausz in aktuelleAnnuitaet.Tilgungen)
                    {
                        auszahlungen.Remove(ausz);
                    }

                    dar.Annuitaeten.Add(aktuelleAnnuitaet);

                    if (aktuelleAnnuitaet.Zahlungsdatum >= dar.BeginnTilgung)
                    {
                        ////Sondertilgungen seit letzter Annuitaet ermitteln
                        var tilgungVorBeginn = dar.Tilgungen.Where(an =>
                            an.Zeitpunkt <= zahlungsDatumDieseAnnuitaet
                            && an.Zeitpunkt > zahlungLetzteAnnuitaet);

                        if(schalterErsteTilgung || zinswechsel)
                        {
                            ersteTilgung = aktuelleFestschreibung.Anfangstilgung;
                            annuitaet = ersteTilgung + aktuelleAnnuitaet.DarlehenssumeVorZahlung * aktuelleFestschreibung.Zinssatz / 12.0;
                            dar.Annuitaet = annuitaet;
                            schalterErsteTilgung = false;
                        }

                        if (annuitaet <= 0.0)
                        {
                            annuitaet = aktuelleAnnuitaet.Zins.Zins + aktuelleFestschreibung.Anfangstilgung;
                        }

                        Tilgungszahlung annuitaetsTilgung = new Tilgungszahlung(annuitaet - aktuelleAnnuitaet.Zins.Zins, aktuelleAnnuitaet.Zahlungsdatum);
                        annuitaetsTilgung.IsRegelm = true;
                        if (annuitaetsTilgung.Betrag > 0.0)
                        {
                            aktuelleAnnuitaet.Tilgungen.Add(annuitaetsTilgung);
                        }

                        double betragSondertilgungen = 0;

                        foreach (Tilgungszahlung tilg in tilgungVorBeginn)
                        {
                            ////Sondertilgungen werden mit der Annuität gemeinsam verrechnet
                            tilg.Zeitpunkt = aktuelleAnnuitaet.Zahlungsdatum;
                            aktuelleAnnuitaet.Tilgungen.Add(tilg);
                            betragSondertilgungen += tilg.Betrag;
                        }

                        if (beginnUeberschuessigeTilgung != ldt_DefaultValue && beginnUeberschuessigeTilgung <= aktuelleAnnuitaet.Zahlungsdatum && aktuelleAnnuitaet.DarlehenssummeNachZahlung > 0)
                        {
                            if (ueberschuessigeErsteTilgung > 0)
                            {

                                if (aktuelleAnnuitaet.DarlehenssummeNachZahlung >= ueberschuessigeErsteTilgung)
                                {
                                    aktuelleAnnuitaet.Tilgungen.Add(new Tilgungszahlung(ueberschuessigeErsteTilgung, aktuelleAnnuitaet.Zahlungsdatum));
                                    ueberschuessigeErsteTilgung = 0;
                                }
                                else
                                {
                                    ueberschuessigeErsteTilgung -= aktuelleAnnuitaet.DarlehenssummeNachZahlung;
                                    aktuelleAnnuitaet.Tilgungen.Add(new Tilgungszahlung(aktuelleAnnuitaet.DarlehenssummeNachZahlung, aktuelleAnnuitaet.Zahlungsdatum));
                                }
                            }
                            else if (ueberschuessigeRegelmaessigeTilgung > 0)
                            {
                                if (ueberschuessigeRegelmaessigeTilgung <= aktuelleAnnuitaet.DarlehenssummeNachZahlung)
                                {
                                    aktuelleAnnuitaet.Tilgungen.Add(new Tilgungszahlung(ueberschuessigeRegelmaessigeTilgung, aktuelleAnnuitaet.Zahlungsdatum));
                                }
                                else
                                {
                                    double differenz = ueberschuessigeRegelmaessigeTilgung - aktuelleAnnuitaet.DarlehenssummeNachZahlung;
                                    aktuelleAnnuitaet.Tilgungen.Add(new Tilgungszahlung(aktuelleAnnuitaet.DarlehenssummeNachZahlung, aktuelleAnnuitaet.Zahlungsdatum));
                                    ueberschuessigeErsteTilgung += differenz;
                                }
                            }
                        }
                        else if (aktuelleAnnuitaet.DarlehenssummeNachZahlung <= 0)
                        {
                            double ueberschuss = aktuelleAnnuitaet.DarlehenssummeNachZahlung;

                            foreach (Tilgungszahlung tilgSonder in aktuelleAnnuitaet.Tilgungen.Where(til => !til.IsRegelm))
                            {
                                ////Überschuss noch vorhanden
                                if (ueberschuss < 0)
                                {
                                    if (Math.Abs(ueberschuss) > tilgSonder.Betrag)
                                    {
                                        ueberschuss += tilgSonder.Betrag;
                                        ueberschuessigeErsteTilgung += tilgSonder.Betrag;
                                        tilgSonder.Betrag = 0.0;
                                    }
                                    else
                                    {
                                        tilgSonder.Betrag += ueberschuss;
                                        ueberschuessigeErsteTilgung -= ueberschuss;
                                        ueberschuss = 0.0;
                                    }
                                }
                                else
                                {
                                    break;
                                }
                            }

                            if (ueberschuss < 0.0)
                            {
                                annuitaetsTilgung.Betrag += ueberschuss;
                                ueberschuessigeErsteTilgung -= ueberschuss;
                            }
                            weiterrechnen = false;
                        }
                    }

                    //if (aktuelleAnnuitaet.DarlehenssummeNachZahlung < 0)
                    //{
                    //    ueberschuessigeErsteTilgung -= aktuelleAnnuitaet.DarlehenssummeNachZahlung;
                    //    annuitaetsTilgung.Betrag -=letzteAnnuitaet.DarlehenssummeNachZahlung;
                    //    weiterrechnen = false;
                    //}
                    //else if (aktuelleAnnuitaet.DarlehenssummeNachZahlung == 0)
                    //{
                    //    weiterrechnen = false;
                    //}
                    aktuelleFestschreibung.Restsumme = aktuelleAnnuitaet.DarlehenssummeNachZahlung;
                    letzteAnnuitaet = aktuelleAnnuitaet;
                    alteZinsfestschreibung = aktuelleFestschreibung;

                    zahlungLetzteAnnuitaet = letzteAnnuitaet.Zahlungsdatum;

                }

                ueberschuessigeRegelmaessigeTilgung += annuitaet;
                beginnUeberschuessigeTilgung = aktuelleAnnuitaet.Zahlungsdatum;
                ueberschuessigeSondertilgungen = new List<Tilgungszahlung>(dar.Tilgungen.Where(tz => tz.Zeitpunkt > aktuelleAnnuitaet.Zahlungsdatum));

                foreach(Tilgungszahlung ueberTilg in ueberschuessigeSondertilgungen)
                {
                    dar.Tilgungen.Remove(ueberTilg);
                }

                dar.IsCalculated = true;
            }

            finanzierung.DatumErledigung = new LocalDateTime();

            foreach(Darlehen dar in finanzierung.Quellen.Where(da => da.IsCalculated))
            {
                finanzierung.Gesamtannuitaet += dar.Annuitaet;
                if(finanzierung.DatumErledigung < dar.Annuitaeten[dar.Annuitaeten.Count -1].Zahlungsdatum)
                {
                    finanzierung.DatumErledigung = dar.Annuitaeten[dar.Annuitaeten.Count - 1].Zahlungsdatum;
                }
            }
        }
        private void Berechne(Finanzierung fina)
        {
            try
            {
                this.OriginalFina = (Finanzierung)fina.Clone();

                Tilgungsplan.BerechneTilgungsplanFesteAnnuitaet(fina);
                this.CurrentPlot = new LinePlot(fina);
            }
            catch (Exception ex)
            {

                TaskDialogOptions tdo = new TaskDialogOptions();
                tdo.MainIcon = VistaTaskDialogIcon.Warning;
                tdo.MainInstruction = ex.Message;
                tdo.Owner = App.window;
                tdo.CommonButtons = TaskDialogCommonButtons.Close;

                TaskDialogInterop.TaskDialog.Show(tdo);
            }
        }
        public void AddFinaQuelle(Finanzierung fina, double finanzierungsluecke)
        {
            Darlehen dar = new Darlehen();

            dar.Summe = finanzierungsluecke;

            int naechstePrio = 0;

            ////Nächst höhere Priorität ermitteln
            if (fina.Quellen.Count > 0)
            {
                naechstePrio = fina.Quellen.Max(da => da.Prioritaet);
                naechstePrio++;
                dar.Prioritaet = naechstePrio;
            }

            var viewModel = new EigenschaftenDarlehenViewModel(dar);

            var window = new EigenschaftenDarlehenView();
            window.Owner = App.window;
            window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;

            EventHandler handler = null;
            handler = delegate
            {
                viewModel.RequestClose -= handler;
                window.Close();
            };

            viewModel.RequestClose += handler;
            window.DataContext = viewModel;
            window.ShowDialog();

            if (viewModel.DialogResult == true)
            {
                fina.Quellen.Add(dar);
            }
        }
Beispiel #7
0
 public override object Clone()
 {
     Finanzierung klon = new Finanzierung();
     klon.Initialisiere(this);
     return klon;
 }
Beispiel #8
0
        public static void PrioritaetErhoehen(Finanzierung fina, Darlehen dar)
        {
            int aktuellePrio = dar.Prioritaet;
            int naechstHoeherPrio = int.MaxValue;
            Darlehen naechsthoeheresDarlehen = null;
            int aktuelleDiff = int.MaxValue;

            foreach (Darlehen da in fina.Quellen)
            {
                if (da.Prioritaet < aktuellePrio && (aktuellePrio - da.Prioritaet <= aktuelleDiff))
                {
                    aktuelleDiff = aktuellePrio - da.Prioritaet;
                    naechstHoeherPrio = da.Prioritaet;
                    naechsthoeheresDarlehen = da;
                }
            }

            if (naechsthoeheresDarlehen != null)
            {
                naechsthoeheresDarlehen.Prioritaet = aktuellePrio;
                dar.Prioritaet = naechstHoeherPrio;
            }

            fina.Quellen.OrderBy(da => da.Prioritaet);
        }
Beispiel #9
0
        public static Finanzierung GetKombinierterKredit3(Finanzierung fina)
        {
            int prioritaet = 0;

            Darlehen kreditA = new Darlehen();
            kreditA.Bezeichnung = "Kredit A";

            LocalDateTime auszahlungstag = new LocalDateTime(2016, 1, 1, 12, 0);
            LocalDateTime faelligkeitsTag = new LocalDateTime(2045, 1, 1, 0, 0);

            kreditA.Auszahlungstag = auszahlungstag;
            kreditA.Faelligkeitstag = faelligkeitsTag;
            kreditA.Summe = 170000.0;
            kreditA.Zinszeitraeume.Add(
                new Zinsfestschreibung(kreditA.Auszahlungstag, kreditA.Faelligkeitstag, 0.002));
            kreditA.Anfangstilgung = 0.0198;
            kreditA.Zahlungsperiode = Period.FromMonths(1);
            kreditA.BeginnTilgung = kreditA.Auszahlungstag + kreditA.Zahlungsperiode;
            kreditA.BeginnZinsZahlung = kreditA.Auszahlungstag + kreditA.Zahlungsperiode;

            kreditA.Tilgungen.Add(new Tilgungszahlung(20000, kreditA.BeginnTilgung + kreditA.Zahlungsperiode));

            for (int i = 16; i <= 40; i++)
            {
                kreditA.Tilgungen.Add(new Tilgungszahlung(3000, new LocalDateTime(2000 + i, 12, 1, 12, 0)));
            }

            kreditA.Prioritaet = prioritaet;
            fina.Quellen.Add(kreditA);

            prioritaet++;

            Darlehen kreditBank = new Darlehen();
            kreditBank.Bezeichnung = "Bankdarlehen";

            kreditBank.Auszahlungstag = auszahlungstag;
            kreditBank.Faelligkeitstag = faelligkeitsTag;
            kreditBank.Summe = 203240.85;
            kreditBank.Zinszeitraeume.Add(
                new Zinsfestschreibung(kreditBank.Auszahlungstag, kreditBank.Faelligkeitstag, 0.0116));
            kreditBank.Anfangstilgung = 0.03;
            kreditBank.Zahlungsperiode = Period.FromMonths(1);
            kreditBank.BeginnTilgung = kreditBank.Auszahlungstag + kreditBank.Zahlungsperiode;
            kreditBank.BeginnZinsZahlung = kreditBank.Auszahlungstag + kreditBank.Zahlungsperiode;

            kreditBank.Prioritaet = prioritaet;
            fina.Quellen.Add(kreditBank);

            prioritaet++;

            //Darlehen kreditKfW124 = new Darlehen();
            //kreditKfW124.Bezeichnung = "KfW 124";
            //kreditKfW124.Auszahlungstag = auszahlungstag;
            //kreditKfW124.Faelligkeitstag = faelligkeitsTag;
            //kreditKfW124.Summe = 50000;
            //kreditKfW124.Zinszeitraeume.Add(
            //    new Zinsfestschreibung(kreditKfW124.Auszahlungstag, kreditKfW124.Faelligkeitstag, 0.0146));
            //kreditKfW124.Anfangstilgung = 0.0242;
            //kreditKfW124.Zahlungsperiode = Period.FromMonths(1);
            //kreditKfW124.BeginnTilgung = kreditKfW124.Auszahlungstag + kreditKfW124.Zahlungsperiode;
            //kreditKfW124.BeginnZinsZahlung = kreditKfW124.Auszahlungstag + kreditKfW124.Zahlungsperiode;

            //kreditKfW124.Prioritaet = prioritaet;
            //fina.Quellen.Add(kreditKfW124);

            //prioritaet++;

            Darlehen kreditKfW153 = new Darlehen();
            kreditKfW153.Bezeichnung = "KfW 153";
            kreditKfW153.Auszahlungstag = auszahlungstag;
            kreditKfW153.Faelligkeitstag = faelligkeitsTag;
            kreditKfW153.Summe = 50000;
            kreditKfW153.Zinszeitraeume.Add(
                new Zinsfestschreibung(kreditKfW153.Auszahlungstag, kreditKfW153.Faelligkeitstag, 0.01));
            kreditKfW153.Anfangstilgung = 0.0297;
            kreditKfW153.Zahlungsperiode = Period.FromMonths(1);
            kreditKfW153.BeginnTilgung = kreditKfW153.Auszahlungstag + kreditKfW153.Zahlungsperiode;
            kreditKfW153.BeginnZinsZahlung = kreditKfW153.Auszahlungstag + kreditKfW153.Zahlungsperiode;

            kreditKfW153.Prioritaet = prioritaet;
            prioritaet++;
            fina.Quellen.Add(kreditKfW153);

            Tilgungsplan.BerechneTilgungsplanFesteAnnuitaet(fina);

            return fina;
        }