public override PayrollResult Evaluate(PayrollPeriod period, PayTagGateway tagConfig, IDictionary <TagRefer, PayrollResult> results) { PaymentResult advanceBaseResult = (PaymentResult)GetResultBy(results, TAX_ADVANCE); TaxReliefResult reliefPayerResult = (TaxReliefResult)GetResultBy(results, TAX_RELIEF_PAYER); decimal reliefClaimValue = SumReliefBy(results, TAX_CLAIM_BASE); decimal advanceBaseValue = advanceBaseResult.Payment(); decimal reliefPayerValue = reliefPayerResult.TaxRelief(); decimal taxReliefValue = ComputeResultValue(advanceBaseValue, reliefPayerValue, reliefClaimValue); var resultValues = new Dictionary <string, object>() { { "tax_relief", taxReliefValue } }; return(new TaxReliefResult(TagCode, Code, this, resultValues)); }
public override PayrollResult Evaluate(PayrollPeriod period, PayTagGateway tagConfig, IDictionary <TagRefer, PayrollResult> results) { IncomeBaseResult resultIncome = (IncomeBaseResult)GetResultBy(results, TAG_AMOUNT_BASE); PaymentResult advanceBaseResult = (PaymentResult)GetResultBy(results, TAX_ADVANCE); TaxReliefResult reliefPayerResult = (TaxReliefResult)GetResultBy(results, TAX_RELIEF_PAYER); TaxReliefResult reliefChildResult = (TaxReliefResult)GetResultBy(results, TAX_RELIEF_CHILD); decimal reliefClaimValue = SumReliefBy(results, TAX_CLAIMS_CHILD); bool isTaxInterest = resultIncome.Interest(); decimal advanceBaseValue = advanceBaseResult.Payment(); decimal reliefPayerValue = reliefPayerResult.TaxRelief(); decimal reliefChildValue = reliefChildResult.TaxRelief(); decimal taxAdvanceValue = ComputeResultValue(period.Year(), isTaxInterest, advanceBaseValue, reliefPayerValue, reliefChildValue, reliefClaimValue); var resultValues = new Dictionary <string, object>() { { "payment", taxAdvanceValue } }; return(new PaymentResult(TagCode, Code, this, resultValues)); }
public override PayrollResult Evaluate(PayrollPeriod period, PayTagGateway tagConfig, IDictionary <TagRefer, PayrollResult> results) { PaymentResult advanceBaseResult = (PaymentResult)GetResultBy(results, TAX_ADVANCE); TaxReliefResult reliefPayerResult = (TaxReliefResult)GetResultBy(results, TAX_RELIEF_PAYER); TaxReliefResult reliefChildResult = (TaxReliefResult)GetResultBy(results, TAX_RELIEF_CHILD); decimal advanceBaseValue = advanceBaseResult.Payment(); decimal reliefPayerValue = reliefPayerResult.TaxRelief(); decimal reliefChildValue = reliefChildResult.TaxRelief(); decimal taxAdvanceAfterA = ComputeResultValueA(advanceBaseValue, reliefPayerValue, reliefChildValue); decimal taxAdvanceAfterC = ComputeResultValueC(advanceBaseValue, reliefPayerValue, reliefChildValue); decimal taxAdvanceValue = taxAdvanceAfterC; var resultValues = new Dictionary <string, object>() { { "after_reliefA", taxAdvanceAfterA }, { "after_reliefC", taxAdvanceAfterC }, { "payment", taxAdvanceValue } }; return(new TaxAdvanceResult(TagCode, Code, this, resultValues)); }