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}