Commit 942f18c
Changed files (7)
product
desktop.ui
product/desktop.ui/model/FederalTaxes.cs
@@ -1,29 +0,0 @@
-using utility;
-
-namespace solidware.financials.windows.ui.model
-{
- public class FederalTaxes
- {
- public decimal CalculateFederalTaxesFor(decimal totalIncome)
- {
- var taxes = 0m;
- if (totalIncome <= 41544.00m)
- {
- taxes = totalIncome.subtract(0m).multiply_by(0.15m).add(0m);
- }
- if (totalIncome > 41544.00m && totalIncome <= 83088.00m)
- {
- taxes = ((totalIncome - 41544m)*0.22m) + 6232m;
- }
- if (totalIncome > 83088.00m && totalIncome <= 128800.00m)
- {
- taxes = ((totalIncome - 83088m)*0.26m) + 15371m;
- }
- if (totalIncome > 128800.00m)
- {
- taxes = ((totalIncome - 128800m)*0.29m) + 27256m;
- }
- return taxes;
- }
- }
-}
\ No newline at end of file
product/desktop.ui/model/TaxesForIndividual.cs
@@ -6,21 +6,24 @@ namespace solidware.financials.windows.ui.model
{
public class TaxesForIndividual : ObservablePresenter<TaxesForIndividual>
{
- public TaxesForIndividual(Guid id, FederalTaxesViewModel federalTaxes)
+ public TaxesForIndividual(Guid id, FederalTaxesViewModel federalTaxes, ProvincialTaxesViewModel provincialTaxes)
{
Id = id;
Income = Money.Null;
FederalTaxes = federalTaxes;
+ ProvincialTaxes = provincialTaxes;
}
public Guid Id { get; private set; }
public Observable<Money> Income { get; private set; }
public FederalTaxesViewModel FederalTaxes { get; set; }
+ public ProvincialTaxesViewModel ProvincialTaxes { get; set; }
public void AddIncome(decimal amount)
{
Income.Value += amount;
FederalTaxes.ApplyTaxesTo(Income.Value);
+ ProvincialTaxes.ApplyTaxesTo(Income.Value);
}
}
}
\ No newline at end of file
product/desktop.ui/presenters/FederalTaxesViewModel.cs
@@ -1,5 +1,6 @@
using System;
-using solidware.financials.windows.ui.model;
+using solidware.financials.windows.ui.views.controls;
+using utility;
namespace solidware.financials.windows.ui.presenters
{
@@ -12,11 +13,33 @@ namespace solidware.financials.windows.ui.presenters
}
public Guid Id { get; private set; }
- public views.controls.Observable<Money> Taxes { get; set; }
+ public Observable<Money> Taxes { get; set; }
public void ApplyTaxesTo(Money totalIncome)
{
- Taxes.Value = new FederalTaxes().CalculateFederalTaxesFor(totalIncome);
+ Taxes.Value = CalculateFederalTaxesFor(totalIncome);
+ }
+
+ public decimal CalculateFederalTaxesFor(decimal totalIncome)
+ {
+ var taxes = 0m;
+ if (totalIncome <= 41544.00m)
+ {
+ taxes = totalIncome.subtract(0m).multiply_by(0.15m).add(0m);
+ }
+ if (totalIncome > 41544.00m && totalIncome <= 83088.00m)
+ {
+ taxes = ((totalIncome - 41544m)*0.22m) + 6232m;
+ }
+ if (totalIncome > 83088.00m && totalIncome <= 128800.00m)
+ {
+ taxes = ((totalIncome - 83088m)*0.26m) + 15371m;
+ }
+ if (totalIncome > 128800.00m)
+ {
+ taxes = ((totalIncome - 128800m)*0.29m) + 27256m;
+ }
+ return taxes;
}
}
}
\ No newline at end of file
product/desktop.ui/presenters/ProvincialTaxesViewModel.cs
@@ -0,0 +1,28 @@
+using System;
+using solidware.financials.windows.ui.views.controls;
+using utility;
+
+namespace solidware.financials.windows.ui.presenters
+{
+ public class ProvincialTaxesViewModel : ObservablePresenter<FederalTaxesViewModel>
+ {
+ public ProvincialTaxesViewModel(Guid id)
+ {
+ Id = id;
+ Taxes = Money.Null;
+ }
+
+ public Guid Id { get; private set; }
+ public Observable<Money> Taxes { get; set; }
+
+ public void ApplyTaxesTo(Money totalIncome)
+ {
+ Taxes.Value = CalculateFederalTaxesFor(totalIncome);
+ }
+
+ public decimal CalculateFederalTaxesFor(decimal totalIncome)
+ {
+ return totalIncome.multiply_by(0.10m);
+ }
+ }
+}
\ No newline at end of file
product/desktop.ui/presenters/TaxesForFamily.cs
@@ -11,16 +11,18 @@ namespace solidware.financials.windows.ui.presenters
public TaxesForFamily()
{
Income = Money.Null;
+ ProvincialTaxes = Money.Null;
FederalTaxes = Money.Null;
}
public Observable<Money> Income { get; set; }
+ public Observable<Money> ProvincialTaxes { get; set; }
public Observable<Money> FederalTaxes { get; set; }
public TaxesForIndividual TaxesFor(Guid id)
{
if (!family.ContainsKey(id))
- family[id] = new TaxesForIndividual(id, new FederalTaxesViewModel(id));
+ family[id] = new TaxesForIndividual(id, new FederalTaxesViewModel(id), new ProvincialTaxesViewModel(id));
return family[id];
}
@@ -28,6 +30,7 @@ namespace solidware.financials.windows.ui.presenters
{
TaxesFor(personId).AddIncome(amount);
Income.Value = family.Values.Sum(x => x.Income.Value);
+ ProvincialTaxes.Value = family.Values.Sum(x => x.ProvincialTaxes.Taxes.Value);
FederalTaxes.Value = family.Values.Sum(x => x.FederalTaxes.Taxes.Value);
}
product/desktop.ui/views/TaxSummaryTab.xaml
@@ -21,7 +21,7 @@
<StackPanel Width="500">
<DockPanel>
<Label Width="100">Individual:</Label>
- <Label Content="{Binding Path=Individual.FederalTaxes.Taxes.Value}" ContentStringFormat="{}{0:C}" FontWeight="Bold"/>
+ <Label Content="{Binding Path=Individual.FederalTaxes.Taxes.Value}" FontWeight="Bold"/>
</DockPanel>
<DockPanel>
<Label Width="100">Family:</Label>
@@ -40,8 +40,16 @@
</Expander>
</StackPanel>
</GroupBox>
- <StackPanel Margin="5,5,5,5" Width="500">
- <Label FontWeight="Bold">Provincial Taxes</Label>
+ <GroupBox Header="Provincial Taxes" Margin="5,5,5,5">
+ <StackPanel Width="500">
+ <DockPanel>
+ <Label Width="100">Individual:</Label>
+ <Label Content="{Binding Path=Individual.ProvincialTaxes.Taxes.Value}" FontWeight="Bold"/>
+ </DockPanel>
+ <DockPanel>
+ <Label Width="100">Family:</Label>
+ <Label Content="{Binding Path=Family.ProvincialTaxes.Value}" FontWeight="Bold" Foreground="Red" />
+ </DockPanel>
<Expander Header="Provincial Tax Rates">
<StackPanel>
<Label FontSize="10" FontWeight="Bold">Provincial Tax Rates for 2011</Label>
@@ -50,12 +58,9 @@
</ListView>
</StackPanel>
</Expander>
- <DockPanel>
- <Label Width="100">Individual:</Label>
- <Label Content="{Binding Path=Individual.ProvincialTaxes}" FontWeight="Bold"/>
- </DockPanel>
</StackPanel>
+ </GroupBox>
</DockPanel>
</StackPanel>
</DockPanel>
-</UserControl>
+</UserControl>
\ No newline at end of file
product/desktop.ui/solidware.financials.csproj
@@ -123,7 +123,6 @@
<Compile Include="handlers\PublishEventHandler.cs" />
<Compile Include="InMemoryApplicationState.cs" />
<Compile Include="IObservableCommand.cs" />
- <Compile Include="model\FederalTaxes.cs" />
<Compile Include="model\TaxesForIndividual.cs" />
<Compile Include="model\TaxRow.cs" />
<Compile Include="ObservablePresenter.cs" />
@@ -136,6 +135,7 @@
<Compile Include="model\PersonDetails.cs" />
<Compile Include="presenters\FederalTaxesViewModel.cs" />
<Compile Include="presenters\Money.cs" />
+ <Compile Include="presenters\ProvincialTaxesViewModel.cs" />
<Compile Include="presenters\specifications\IfFamilyMemberIsSelected.cs" />
<Compile Include="presenters\ButtonBarPresenter.cs" />
<Compile Include="presenters\TaxesForFamily.cs" />