public decimal GetEingenommeneZinsenImZeitraum(ZeitSpanne zeitSpanne)
        {
            IList<AusleihVorgang> alleAusleihvorgaenge = _bankService.GetAlleAusleihvorgaenge()
                .Where(ausleihVorgang => ausleihVorgang.Datum.Date <= zeitSpanne.EndDatum.Date).OrderBy(ausleihvorgang => ausleihvorgang.Datum).ToList();

            if (alleAusleihvorgaenge.Count == 0)
                return 0.0m;

            decimal eingenommenZinsen = 0m;
            AusleihVorgang fruehsterAusleihvorgang = alleAusleihvorgaenge.First();
            int days = GetDays(zeitSpanne.EndDatum, fruehsterAusleihvorgang.Datum);

            foreach (AusleihVorgang ausleihVorgang in alleAusleihvorgaenge)
            {
                decimal ausgeliehenerBetrag = ausleihVorgang.Betrag;

                for (int tage = 1; tage <= days; tage++)
                {
                    decimal zuZahlenderBetragFuerTag = GetBetrag(fruehsterAusleihvorgang.Datum.AddDays(tage), ausgeliehenerBetrag, ausleihVorgang.VorgangsNummer);
                    decimal zinsenFuerTag = DreisatzAnwenden(zuZahlenderBetragFuerTag, ausleihVorgang.ZinsSatz);
                    eingenommenZinsen += zinsenFuerTag;
                    ausgeliehenerBetrag = zuZahlenderBetragFuerTag + zinsenFuerTag;
                }
            }

            return eingenommenZinsen;
        }
        public decimal BetragMitZinsenFuerZeitraumBerechnen(decimal betrag, decimal zinsSatz, Guid vorgangsNummer, ZeitSpanne zeitSpanne)
        {
            DateTime startDatum = zeitSpanne.StartDatum.Date;
            int days = GetDays(zeitSpanne.EndDatum, startDatum);
            decimal zuZahlenderBetrag = 0m;

            IList<RueckzahlVorgang> rueckzahlVorgaenge = _bankService.GetAlleRueckzahlvorgaengeByVorgangsNummer(vorgangsNummer);

            if (days == 0)
                betrag = GetBetrag(startDatum, betrag, vorgangsNummer);
            else
            {
                for (int ausleihTag = 1; ausleihTag <= days; ausleihTag++)
                {
                    IEnumerable<RueckzahlVorgang> rueckzahlungenFuerDatum =
                        rueckzahlVorgaenge.Where(
                            rueckzahlVorgang => DatumIstGleich(rueckzahlVorgang, startDatum.AddDays(ausleihTag)));
                    betrag = rueckzahlungenFuerDatum.Aggregate(betrag,
                                                               (current, rueckzahlVorgang) =>
                                                               current - rueckzahlVorgang.Betrag);

                    decimal tagesZinsen = DreisatzAnwenden(betrag, zinsSatz);

                    zuZahlenderBetrag = zuZahlenderBetrag + tagesZinsen;
                }
            }

            zuZahlenderBetrag += betrag;

            if (zuZahlenderBetrag <= 0.0m)
                return 0.0m;

            return zuZahlenderBetrag;
        }
        public decimal GetAusgezahltesGeldFuerZeitraum(ZeitSpanne zeitSpanne)
        {
            List<AusleihVorgang> ausleihVorgaenge = _bankService.GetAlleAusleihvorgaenge().Where(
                ausleihVorgang => ausleihVorgang.Datum.Date >= zeitSpanne.StartDatum.Date && ausleihVorgang.Datum.Date <= zeitSpanne.EndDatum.Date).ToList();

            return ausleihVorgaenge.Sum(ausleihVorgang => ausleihVorgang.Betrag);
        }
Beispiel #4
0
        public decimal GetAusgezahltesGeldFuerZeitraum(ZeitSpanne zeitSpanne)
        {
            List <AusleihVorgang> ausleihVorgaenge = _bankService.GetAlleAusleihvorgaenge().Where(
                ausleihVorgang => ausleihVorgang.Datum.Date >= zeitSpanne.StartDatum.Date && ausleihVorgang.Datum.Date <= zeitSpanne.EndDatum.Date).ToList();

            return(ausleihVorgaenge.Sum(ausleihVorgang => ausleihVorgang.Betrag));
        }
Beispiel #5
0
        public decimal GetEingenommeneZinsenImZeitraum(ZeitSpanne zeitSpanne)
        {
            IList <AusleihVorgang> alleAusleihvorgaenge = _bankService.GetAlleAusleihvorgaenge()
                                                          .Where(ausleihVorgang => ausleihVorgang.Datum.Date <= zeitSpanne.EndDatum.Date).OrderBy(ausleihvorgang => ausleihvorgang.Datum).ToList();

            if (alleAusleihvorgaenge.Count == 0)
            {
                return(0.0m);
            }

            decimal        eingenommenZinsen       = 0m;
            AusleihVorgang fruehsterAusleihvorgang = alleAusleihvorgaenge.First();
            int            days = GetDays(zeitSpanne.EndDatum, fruehsterAusleihvorgang.Datum);

            foreach (AusleihVorgang ausleihVorgang in alleAusleihvorgaenge)
            {
                decimal ausgeliehenerBetrag = ausleihVorgang.Betrag;

                for (int tage = 1; tage <= days; tage++)
                {
                    decimal zuZahlenderBetragFuerTag = GetBetrag(fruehsterAusleihvorgang.Datum.AddDays(tage), ausgeliehenerBetrag, ausleihVorgang.VorgangsNummer);
                    decimal zinsenFuerTag            = DreisatzAnwenden(zuZahlenderBetragFuerTag, ausleihVorgang.ZinsSatz);
                    eingenommenZinsen  += zinsenFuerTag;
                    ausgeliehenerBetrag = zuZahlenderBetragFuerTag + zinsenFuerTag;
                }
            }

            return(eingenommenZinsen);
        }
Beispiel #6
0
        public decimal GetRueckgezahlteBetraegeFuerZeitraum(ZeitSpanne zeitSpanne)
        {
            List <AusleihVorgang> ausleihVorgaenge = _bankService.GetAlleAusleihvorgaenge().ToList();

            decimal erhaltenesGeld = 0m;


            foreach (AusleihVorgang ausleihVorgang in ausleihVorgaenge)
            {
                IList <RueckzahlVorgang> alleRueckzahlvorgaengeByVorgangsNummer = _bankService.GetAlleRueckzahlvorgaengeByVorgangsNummer(ausleihVorgang.VorgangsNummer)
                                                                                  .Where(rueckzahlung => rueckzahlung.Datum.Date >= zeitSpanne.StartDatum.Date && rueckzahlung.Datum.Date <= zeitSpanne.EndDatum.Date).ToList();
                erhaltenesGeld += alleRueckzahlvorgaengeByVorgangsNummer.Sum(rueckzahlung => rueckzahlung.Betrag);
            }

            return(erhaltenesGeld);
        }
 public decimal GetEingenommeneZinsenImZeitraum(ZeitSpanne zeitSpanne)
 {
     throw new NotImplementedException();
 }
 public decimal GetAusgezahltesGeldFuerZeitraum(ZeitSpanne zeitSpanne)
 {
     throw new NotImplementedException();
 }
        public decimal GetRueckgezahlteBetraegeFuerZeitraum(ZeitSpanne zeitSpanne)
        {
            List<AusleihVorgang> ausleihVorgaenge = _bankService.GetAlleAusleihvorgaenge().ToList();

            decimal erhaltenesGeld = 0m;

            foreach (AusleihVorgang ausleihVorgang in ausleihVorgaenge)
            {
                IList<RueckzahlVorgang> alleRueckzahlvorgaengeByVorgangsNummer = _bankService.GetAlleRueckzahlvorgaengeByVorgangsNummer(ausleihVorgang.VorgangsNummer)
                    .Where(rueckzahlung => rueckzahlung.Datum.Date >= zeitSpanne.StartDatum.Date && rueckzahlung.Datum.Date <= zeitSpanne.EndDatum.Date).ToList();
                erhaltenesGeld += alleRueckzahlvorgaengeByVorgangsNummer.Sum(rueckzahlung => rueckzahlung.Betrag);
            }

            return erhaltenesGeld;
        }
Beispiel #10
0
 public decimal BetragMitZinsenFuerZeitraumBerechnen(decimal betrag, decimal zinsSatz, Guid vorgangsNummer, ZeitSpanne zeitSpanne)
 {
     throw new NotImplementedException();
 }
Beispiel #11
0
        public decimal BetragMitZinsenFuerZeitraumBerechnen(decimal betrag, decimal zinsSatz, Guid vorgangsNummer, ZeitSpanne zeitSpanne)
        {
            DateTime startDatum        = zeitSpanne.StartDatum.Date;
            int      days              = GetDays(zeitSpanne.EndDatum, startDatum);
            decimal  zuZahlenderBetrag = 0m;

            IList <RueckzahlVorgang> rueckzahlVorgaenge = _bankService.GetAlleRueckzahlvorgaengeByVorgangsNummer(vorgangsNummer);

            if (days == 0)
            {
                betrag = GetBetrag(startDatum, betrag, vorgangsNummer);
            }
            else
            {
                for (int ausleihTag = 1; ausleihTag <= days; ausleihTag++)
                {
                    IEnumerable <RueckzahlVorgang> rueckzahlungenFuerDatum =
                        rueckzahlVorgaenge.Where(
                            rueckzahlVorgang => DatumIstGleich(rueckzahlVorgang, startDatum.AddDays(ausleihTag)));
                    betrag = rueckzahlungenFuerDatum.Aggregate(betrag,
                                                               (current, rueckzahlVorgang) =>
                                                               current - rueckzahlVorgang.Betrag);

                    decimal tagesZinsen = DreisatzAnwenden(betrag, zinsSatz);

                    zuZahlenderBetrag = zuZahlenderBetrag + tagesZinsen;
                }
            }

            zuZahlenderBetrag += betrag;

            if (zuZahlenderBetrag <= 0.0m)
            {
                return(0.0m);
            }


            return(zuZahlenderBetrag);
        }
Beispiel #12
0
 public decimal GetRueckgezahlteBetraegeFuerZeitraum(ZeitSpanne zeitSpanne)
 {
     throw new NotImplementedException();
 }
Beispiel #13
0
 public decimal GetEingenommeneZinsenImZeitraum(ZeitSpanne zeitSpanne)
 {
     throw new NotImplementedException();
 }
Beispiel #14
0
 public decimal GetAusgezahltesGeldFuerZeitraum(ZeitSpanne zeitSpanne)
 {
     throw new NotImplementedException();
 }
 public decimal GetRueckgezahlteBetraegeFuerZeitraum(ZeitSpanne zeitSpanne)
 {
     throw new NotImplementedException();
 }
 public decimal BetragMitZinsenFuerZeitraumBerechnen(decimal betrag, decimal zinsSatz, Guid vorgangsNummer, ZeitSpanne zeitSpanne)
 {
     throw new NotImplementedException();
 }
        private void StatistikAktualisieren()
        {
            DateTime? startDatum = EinnahmeVonDatePicker.SelectedDate;
            DateTime? endDatum = EinnahmenBisDatePicker.SelectedDate;

            if (!IstDatumAusgewaehlt(startDatum, endDatum))
            {
                MessageBox.Show(Properties.Resources.MainWindow_StatistikAktualisieren_KeinDatumAusgewaehlt_Message,
                    Properties.Resources.MainWindow_StatistikAktualisieren_KeinDatumAusgewaehlt_Caption);
                return;
            }

            if (!IstStartdatumKleinerGleichEnddatum())
                MessageBox.Show(Properties.Resources.MainWindow_StatistikAktualisieren_EndUndStartdatumVertauscht_Message,
                    Properties.Resources.MainWindow_StatistikAktualisieren_EndUndStartdatumVertauscht_Caption);

            ZeitSpanne heute = new ZeitSpanne { StartDatum = (DateTime) startDatum, EndDatum = (DateTime) endDatum };
            ZinsenEinnahmenTextblock.Text =
                _zinsRechner.GetEingenommeneZinsenImZeitraum(heute)
                    .ToString();

            VerliehenesGeldTextblock.Text = _zinsRechner.GetAusgezahltesGeldFuerZeitraum(heute).ToString();

            EinnahmenTextblock.Text = _zinsRechner.GetRueckgezahlteBetraegeFuerZeitraum(heute).ToString();
        }