コード例 #1
0
        private double CalculateDynamicAmortization()
        {
            double dynintv = Payments.Count(p => p.Abzahlungsbetrag != 0);
            var    ersterOhneAbzahlungsbetrag = new Payment();

            if (!Payments.Any(p => p.Abzahlungsbetrag == 0))
            {
                var nullPayment = new Payment();
                nullPayment.Abzahlungsbetrag    = 0;
                nullPayment.JährlicherRückfluss = 0;
                nullPayment.Tilgung             = 0;
                nullPayment.Zins           = 0;
                nullPayment.Überschüsse    = 0;
                nullPayment.Kapitalwert    = 0;
                ersterOhneAbzahlungsbetrag = nullPayment;
            }
            else
            {
                ersterOhneAbzahlungsbetrag = Payments.First(p => p.Abzahlungsbetrag == 0);
            }


            var berechnung = (-ersterOhneAbzahlungsbetrag.Zins - ersterOhneAbzahlungsbetrag.Tilgung) / ersterOhneAbzahlungsbetrag.JährlicherRückfluss;

            if (dynintv > 0 && (ersterOhneAbzahlungsbetrag.Year - _startjahr < _nutzungsdauerAltNeu || (ersterOhneAbzahlungsbetrag.Year - _startjahr == _nutzungsdauerAltNeu && berechnung <= 1)))
            {
                return(dynintv + berechnung);
            }
            if (dynintv == 0 && ersterOhneAbzahlungsbetrag.Tilgung < 0)
            {
                return(berechnung);
            }
            return(double.NaN);
        }
コード例 #2
0
ファイル: Invoice.cs プロジェクト: nagyist/iPadPos
        public List <InvoiceLine> GetCompinedLines()
        {
            var lines = Lines.ToList();

            if (Payments.Any(x => x.Amount != 0))
            {
                lines.Add(new InvoiceLine
                {
                    TransCode   = "N",
                    Qty         = 0,
                    Description = "--------------------"
                });
            }

            lines.AddRange(Payments.Where(x => x.Amount != 0).Select(x => new InvoiceLine
            {
                Description = x.PaymentType.Id,
                TransCode   = "Y",
                Price       = x.Amount,
                Qty         = 0,
                TaxCode     = "3",
            }));

            int i = 1;

            lines.ForEach(x =>
            {
                x.LineOrder      = i++;
                x.ParentRecordId = RecordId;
            });
            return(lines);
        }
コード例 #3
0
 public PaymentsViewModel()
 {
     Refresh();
     if (Payments.Any())
     {
         Payment = Payments[0];
     }
     SwitchToAddNewCommand = new RelayCommand(() => Navigator.SwitchView(ViewModelLocator.AddPaymentViewModel));
     GoHomeCommand         = new RelayCommand(() => Navigator.SwitchView(ViewModelLocator.HomeViewModel));
 }
コード例 #4
0
 private double CalculateInterneVerzinsung()
 {
     if (Payments.Any(p => p.Überschüsse <= 0 && p.JährlicherRückfluss >= 0)) // Fixed crash if investment old > investment new
     {
         var betrag = KreditFürInvestition > 0 ? -KreditFürInvestition : 0;
         var values = new[] {
             betrag
         }.Concat(Payments.Select(p => p.JährlicherRückfluss)).
         ToArray();
         try
         {
             return(Financial.IRR(ref values));
         }
         catch
         {
             return(0);
         }
     }
     return(0);
 }
コード例 #5
0
 public void GivenIHaveMadeTheFollowingPayments(Table table)
 {
     Payments = table.CreateSet <TestPayment>().ToList();
     Assert.IsTrue(Payments.Any());
 }