Пример #1
0
        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));
        }
Пример #2
0
        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));
        }