main
 1using System;
 2using solidware.financials.windows.ui.views.controls;
 3using utility;
 4
 5namespace solidware.financials.windows.ui.presenters
 6{
 7    public class FederalTaxesViewModel : ObservablePresenter<FederalTaxesViewModel>
 8    {
 9        public FederalTaxesViewModel(Guid id)
10        {
11            Id = id;
12            Taxes = Money.Null;
13        }
14
15        public Guid Id { get; private set; }
16        public Observable<Money> Taxes { get; set; }
17
18        public void ApplyTaxesTo(Money totalIncome)
19        {
20            Taxes.Value = CalculateFederalTaxesFor(totalIncome);
21        }
22
23        public decimal CalculateFederalTaxesFor(decimal totalIncome)
24        {
25            var taxes = 0m;
26            if (totalIncome <= 41544.00m)
27            {
28                taxes = totalIncome.subtract(0m).multiply_by(0.15m).add(0m);
29            }
30            if (totalIncome > 41544.00m && totalIncome <= 83088.00m)
31            {
32                taxes = ((totalIncome - 41544m)*0.22m) + 6232m;
33            }
34            if (totalIncome > 83088.00m && totalIncome <= 128800.00m)
35            {
36                taxes = ((totalIncome - 83088m)*0.26m) + 15371m;
37            }
38            if (totalIncome > 128800.00m)
39            {
40                taxes = ((totalIncome - 128800m)*0.29m) + 27256m;
41            }
42            return taxes;
43        }
44    }
45}