Exemplo n.º 1
0
        public NPV GenerateNPV(NPV nPV)
        {
            double npv;

            string[] cashFlow = nPV.CashFlows.Split(',');
            NPV      npvItem  = new NPV();

            npvItem.CashFlows = nPV.CashFlows;
            npvItem.UpperBoundDiscountRate = nPV.UpperBoundDiscountRate;
            npvItem.LowerBoundDiscountRate = nPV.LowerBoundDiscountRate;
            npvItem.DiscountRateIncrement  = nPV.DiscountRateIncrement;

            using (var context = new NPVContext())
            {
                db.NPVItemResult.RemoveRange(db.NPVItemResult.Where(c => c.NPVId == nPV.ID));
                db.SaveChanges();

                for (double y = nPV.LowerBoundDiscountRate; y <= nPV.UpperBoundDiscountRate; y += nPV.DiscountRateIncrement)
                {
                    for (int i = 0; i < cashFlow.Length; i++)
                    {
                        int period = i + 1;
                        npv = Convert.ToInt32(cashFlow[i]) / (1 + Math.Pow((y / 100), period));

                        context.NPVItemResult.Add(new NPVItemResult {
                            CashFlow = cashFlow[i], Discount = y, Period = period, NPVResult = npv, NPVId = nPV.ID
                        });
                    }
                }
                context.SaveChanges();
            }

            return(npvItem);
        }
Exemplo n.º 2
0
        public ActionResult DeleteConfirmed(int id)
        {
            NPV nPV = db.NPV.Find(id);

            db.NPV.Remove(nPV);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 3
0
        // GET: NPV/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            NPV nPV = db.NPV.Find(id);

            if (nPV == null)
            {
                return(HttpNotFound());
            }
            return(View(nPV));
        }
Exemplo n.º 4
0
        public ActionResult Edit([Bind(Include = "ID,LowerBoundDiscountRate,UpperBoundDiscountRate,DiscountRateIncrement,CashFlows,NPVs,DateModified")] NPV nPV)
        {
            if (ModelState.IsValid)
            {
                db.Entry(nPV).State = EntityState.Modified;
                //var generatedNPV = GenerateNPV(nPV.CashFlows, nPV.LowerBoundDiscountRate, nPV.UpperBoundDiscountRate, nPV.DiscountRateIncrement);
                GenerateNPV(nPV);
                nPV.DateModified = DateTime.Now;

                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(nPV));
        }
Exemplo n.º 5
0
        public ActionResult Create([Bind(Include = "ID,LowerBoundDiscountRate,UpperBoundDiscountRate,DiscountRateIncrement,CashFlows,NPVs,DateModified")] NPV nPV)
        {
            if (ModelState.IsValid)
            {
                db.NPV.Add(nPV);
                nPV.DateModified = DateTime.Now;

                db.SaveChanges();
                GenerateNPV(nPV);

                return(RedirectToAction("Index"));
            }

            return(View(nPV));
        }
Exemplo n.º 6
0
        // GET: NPV/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            NPV nPV = db.NPV.Find(id);

            if (nPV == null)
            {
                return(HttpNotFound());
            }
            //else
            //{
            //    NPVItemResult npvItem = new JavaScriptSerializer().Deserialize<NPV>(nPV.NPVs);
            //    npvItem.
            //}
            return(View(nPV));
        }
Exemplo n.º 7
0
        public void NPVCalcOk()
        {
            var xlsFinancial = new NPV();

            /* This will allow you to set the formula that will modify the rate before it is used in the calculation,  if left out, it will just use the number passed in the first parameter of calculate */
            xlsFinancial.RateFormula = string.Format("(({0}+1)^(1/12))-1", NPV.RATE_VAR);

            List <double> inputValues = new List <double>();

            /*inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(9021.99);
             * inputValues.Add(1020882.11);*/

            inputValues.Add(0);
            inputValues.Add(-98089.5);
            inputValues.Add(-14410.5);
            inputValues.Add(-14410.5);
            inputValues.Add(-14410.5);
            inputValues.Add(-14910.5);
            inputValues.Add(-16910.5);
            inputValues.Add(-77410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11910.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-72410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(-11410.5);
            inputValues.Add(821228);
            inputValues.Add(-9872);
            inputValues.Add(1795578);
            inputValues.Add(-2790);
            inputValues.Add(1099710);
            inputValues.Add(999912);

            var val = xlsFinancial.Calculate(0.20, inputValues);

            Assert.True(xlsFinancial.Calculate(0.22, inputValues).ToString("0.00").Equals("890152.51"), "NPV with .22 not correct 890152.51");
            Assert.True(xlsFinancial.Calculate(0.18, inputValues).ToString("0.00").Equals("932217.54"), "NPV with .18 not correct 932217.54");
            Assert.True(xlsFinancial.Calculate(0.15, inputValues).ToString("0.00").Equals("966142.30"), "NPV with .15 not correct 966142.30");

            /* this will write out the resulting excel file to let you play around with it */
            //xlsFinancial.SaveToFile(@"C:\Temp\npv_.xls");
        }