public decimal GetSalesTax(Billing billing, TaxYear taxYear) { decimal subtotal = decimal.Round(decimal.Divide(decimal.Multiply(billing.Total, (taxYear.TaxablePercent / 100)), (decimal)(1 + (taxYear.TaxRate / 100))), 2); decimal salesTax = decimal.Round(decimal.Subtract(decimal.Multiply(billing.Total, (taxYear.TaxablePercent / 100)), subtotal), 2); return salesTax; }
public ActionResult Index() { HomeData data = new HomeData(); string user = User.Identity.Name; foreach (Event evnt in db.Events.Where(e => e.Username == user)) { if (evnt.EventDate >= DateTime.Now && evnt.EventDate < DateTime.Now.AddDays(30)) { data.UpcomingEvents.Add(evnt); } } foreach (TodoList todo in db.TodoList.Where(e => e.Username == user)) { //if (!todo.IsCompleted) //{ data.TodoListItems.Add(todo); //} } TaxYear taxYear = new TaxYear(); foreach (TaxYear year in db.TaxYears.Where(e => e.Username == user)) { if (year.Year == DateTime.Now.Year) { taxYear = year; } } data.TotalSalesTax = taxYear.TotalTax; data.TotalExpenses = taxYear.TotalExpenses; data.TotalGrossIncome = taxYear.TotalGrossIncome; data.TotalNetIncome = data.TotalGrossIncome - data.TotalExpenses; data.MilesDriven = (int)taxYear.TotalMiles; data.UpcomingEvents = data.UpcomingEvents.OrderBy(x => x.EventDate).ToList(); data.TodoListItems = data.TodoListItems.OrderBy(x => x.DueDate).ToList(); VerifyActiveStatus(db, user); return View(data); }
private TaxYear RecalculateBilling(TaxYear taxYear) { taxYear.TotalTax = 0; taxYear.TotalExpenses = 0; taxYear.TotalGrossIncome = 0; foreach (Billing billing in db.Billing) { if (billing.BillingType == "Payment") { billing.SalesTax = billing.GetSalesTax(billing, taxYear); billing.Subtotal = billing.Total - billing.SalesTax; taxYear.TotalTax += billing.SalesTax; taxYear.TotalGrossIncome += billing.Subtotal; } else if (billing.BillingType == "Expense") { taxYear.TotalExpenses += billing.Total; } } taxYear.TotalNetIncome = taxYear.TotalGrossIncome - taxYear.TotalExpenses; return taxYear; }