protected virtual Decimal GetPersonalAllowance(FilingStatus filingStatus, int personalAllowances, decimal annualWage) { return(PersonalAllowances .Where(p => p.FilingStatus == filingStatus) .Where(p => p.MinWage <= annualWage && p.MaxWage > annualWage) .Select(x => x.Amount) .Single() * personalAllowances); }
internal virtual Decimal GetPersonalAllowance(FilingStatus filingStatus) { // Note: A married couple filing joint with one spouse working and who only claims 1 allowance should use column (6) (married filing separate) for their personal allowance var allowance_value = PersonalAllowances .Where(d => d.FilingStatus == filingStatus) .Select(d => d.Amount) .Single(); return(allowance_value); }
internal virtual Decimal GetPersonalAllowance(FilingStatus filingStatus, int personalAllowances = 1) { // Note: A married couple filing joint with one spouse working and who only claims 1 allowance should use column (6) (married filing separate) for their personal allowance if (personalAllowances == 1 && FilingStatus.MarriedWithOneIncome == filingStatus) { filingStatus = FilingStatus.MarriedFilingSeparate; } var allowance_value = PersonalAllowances .Where(d => d.FilingStatus == filingStatus) .Select(d => d.Amount) .Single(); return(allowance_value * personalAllowances); }
protected virtual Decimal GetPersonalAllowance(FilingStatus filingStatus, int personalAllowances) { var allowance_value = PersonalAllowances .Where(d => d.FilingStatus == filingStatus) .Single(); if (filingStatus == FilingStatus.MarriedWithOneIncome) { if (personalAllowances == 1) { return(allowance_value.Amount); } else if (personalAllowances == 2) { return(allowance_value.Amount * 2); } else if (personalAllowances >= 3) { return((allowance_value.Amount * 2) + (allowance_value.AdditionalAmount * (personalAllowances - 2))); } else { return(0); } } else { if (personalAllowances == 1) { return(allowance_value.Amount); } else if (personalAllowances >= 2) { return(allowance_value.Amount + (allowance_value.AdditionalAmount * (personalAllowances - 1))); } else { return(0); } } }