Пример #1
0
        private static void EinfacherKredit()
        {
            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)));

            Tilgungsplan plan = Tilgungsplan.BerechnePlanFesteAnnuitaet(kredit);

            Console.WriteLine(String.Format("Tilgungsplan Darlehen Summe {0}EUR, feste Annuitaet {1}EUR", kredit.Summe.ToString("F2"), plan.FesteAnnuitaet.ToString("F2")));
            foreach (Annuitaet ann in kredit.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();
        }
 public EigenschaftenDarlehenViewModel(Darlehen kredit)
     : this()
 {
     this.Kredit = kredit;
     //if(this.Kredit.IsCalculated)
     //{
     this.CurrentPlot = new DarlehenPlotModel(this.Kredit);
     //}
 }
Пример #3
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();
        }
Пример #4
0
 public override object Clone()
 {
     Darlehen klon = new Darlehen();
     klon.Initialisiere(this);
     return klon;
 }
Пример #5
0
        public DarlehenPlotModel(Core.Darlehen darlehen)
        {
            // TODO: Complete member initialization
            this.darlehen = darlehen;

            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;

            var linearAxis2 = new LinearAxis();

            linearAxis2.StringFormat = "C1";
            linearAxis2.Title = UIStrings.Gesamtbetrag;
            linearAxis2.Unit = System.Globalization.RegionInfo.CurrentRegion.CurrencySymbol;
            linearAxis2.Position = AxisPosition.Right;
            linearAxis2.Key = "Secondary";
            linearAxis2.Minimum = 0.0;

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

            List<ValuePoint> pointsAnnuitaet = new List<ValuePoint>();
            List<ValuePoint> pointsZinsen = new List<ValuePoint>();
            List<ValuePoint> pointsRegelm = new List<ValuePoint>();

            foreach(Annuitaet ann in this.darlehen.Annuitaeten)
            {
                if (ann.AnnuitaetGesamt > 0.0)
                {
                    pointsAnnuitaet.Add(new ValuePoint
                                {
                                    Date = ann.Zahlungsdatum.ToDateTimeUnspecified()
                                    ,
                                    Value = ann.AnnuitaetGesamt
                                    ,
                                    TrackerValue = ann.AnnuitaetGesamt
                                    ,
                                    DateString = ann.Zahlungsdatum.ToDateTimeUnspecified().ToString("yyyy-MM-dd")
                                });
                }

                if (ann.Zins.Zins > 0.0)
                {
                    pointsZinsen.Add(new ValuePoint
                                {
                                    Date = ann.Zahlungsdatum.ToDateTimeUnspecified(),
                                    Value = ann.Zins.Zins,
                                    TrackerValue = ann.Zins.Zins,
                                    DateString = ann.Zahlungsdatum.ToDateTimeUnspecified().ToString("yyyy-MM-dd")
                                });
                }

                if (ann.GesamtRegelmTilgung > 0.0)
                {
                    pointsRegelm.Add(new ValuePoint
                                {
                                    Date = ann.Zahlungsdatum.ToDateTimeUnspecified(),
                                    Value = ann.GesamtRegelmTilgung,
                                    TrackerValue = ann.GesamtRegelmTilgung,
                                    DateString = ann.Zahlungsdatum.ToDateTimeUnspecified().ToString("yyyy-MM-dd")

                                });
                }

            }

            LineSeries seriesAnnuitaet = new LineSeries()
            {
                ItemsSource = pointsAnnuitaet,
                Title = UIStrings.Annuitaet,
                CanTrackerInterpolatePoints = false,
                DataFieldX = "Date",
                DataFieldY = "Value",
                YAxisKey = "Secondary"
            };

            LineSeries seriesZinsen = new LineSeries()
            {
                ItemsSource = pointsZinsen,
                Title = UIStrings.Zinsen,
                CanTrackerInterpolatePoints = false,
                DataFieldX = "Date",
                DataFieldY = "Value"
            };

            LineSeries seriesRegelm = new LineSeries()
            {
                ItemsSource = pointsRegelm,
                Title = UIStrings.regelmTilgung,
                CanTrackerInterpolatePoints = false,
                DataFieldX = "Date",
                DataFieldY = "Value"
            };

            this.Series.Add(seriesAnnuitaet);
            this.Series.Add(seriesZinsen);
            this.Series.Add(seriesRegelm);
        }
Пример #6
0
        public static Tilgungsplan BerechnePlanFesteAnnuitaet(Darlehen kredit)
        {
            Tilgungsplan plan = new Tilgungsplan();
            plan.Kredit = kredit;

            ////Annuität aus Anfangstilgung berechnen

            bool weiterRechnen = true;

            Annuitaet aktuelleAnnuitaet = null;
            Annuitaet letzteAnnuitaet = null;

            ////Erste Annuitaet besetzen
            var tilgungVorBeginn = kredit.Tilgungen.Where(an => an.Zeitpunkt <= kredit.BeginnTilgung);
            if (aktuelleAnnuitaet == null)
            {
                aktuelleAnnuitaet = new Annuitaet();
            }

            aktuelleAnnuitaet.Zahlungsdatum = kredit.BeginnTilgung;
            aktuelleAnnuitaet.DarlehenssumeVorZahlung = kredit.Summe;
            double effZins = kredit.Zinszeitraeume[0].GetZinssatzProPeriode(kredit.Auszahlungstag, aktuelleAnnuitaet.Zahlungsdatum);
            aktuelleAnnuitaet.Zins = new Zinszahlung(effZins, kredit.Summe, aktuelleAnnuitaet.Zahlungsdatum);

            plan.FesteAnnuitaet = aktuelleAnnuitaet.Zins.Zins + (kredit.Summe * kredit.Anfangstilgung) / 12.0;

            aktuelleAnnuitaet.Tilgungen.Add(new Tilgungszahlung(plan.FesteAnnuitaet - aktuelleAnnuitaet.Zins.Zins, aktuelleAnnuitaet.Zahlungsdatum));
            foreach (Tilgungszahlung tilg in tilgungVorBeginn)
            {
                ////Sondertilgungen werden mit der Annuität gemeinsam verrechnet
                tilg.Zeitpunkt = aktuelleAnnuitaet.Zahlungsdatum;
                aktuelleAnnuitaet.Tilgungen.Add(tilg);
            }

            kredit.Annuitaeten.Add(aktuelleAnnuitaet);

            LocalDateTime zahlungLetzteAnnuitaet = aktuelleAnnuitaet.Zahlungsdatum;

            letzteAnnuitaet = aktuelleAnnuitaet;

            while (weiterRechnen)
            {
                LocalDateTime zahlungsDatumDieseAnnuitaet = zahlungLetzteAnnuitaet + kredit.Zahlungsperiode;

                Zinsfestschreibung aktuelleFestschreibung = kredit.Zinszeitraeume.FirstOrDefault(an =>
                    an.ZeitpunktFestschreibung <= zahlungsDatumDieseAnnuitaet
                    && an.ZeitpunktAuslauf >= zahlungsDatumDieseAnnuitaet);

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

                ////Sondertilgungen seit letzter Annuitaet ermitteln
                tilgungVorBeginn = kredit.Tilgungen.Where(an =>
                    an.Zeitpunkt <= zahlungsDatumDieseAnnuitaet
                    && an.Zeitpunkt > zahlungLetzteAnnuitaet);

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

                Tilgungszahlung annuitaetsTilgung = new Tilgungszahlung(plan.FesteAnnuitaet - aktuelleAnnuitaet.Zins.Zins, aktuelleAnnuitaet.Zahlungsdatum);

                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;
                }

                kredit.Annuitaeten.Add(aktuelleAnnuitaet);
                if (aktuelleAnnuitaet.DarlehenssummeNachZahlung < 0)
                {
                    annuitaetsTilgung.Betrag = letzteAnnuitaet.DarlehenssummeNachZahlung - betragSondertilgungen;
                    weiterRechnen = false;
                }
                else if (aktuelleAnnuitaet.DarlehenssummeNachZahlung == 0)
                {
                    weiterRechnen = false;
                }
                letzteAnnuitaet = aktuelleAnnuitaet;
                zahlungLetzteAnnuitaet = letzteAnnuitaet.Zahlungsdatum;
            }

            return plan;
        }
Пример #7
0
 private void MoveFinaQuelleUp(Darlehen dar)
 {
     Finanzierung.PrioritaetErhoehen(this.Fina, dar);
     this.QuellenVS.SortDescriptions.Add(new SortDescription("Prioritaet", ListSortDirection.Ascending));
     this.QuellenVS.View.Refresh();
 }
Пример #8
0
        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);
            }
        }
Пример #9
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);
        }
Пример #10
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;
        }