private Int32 HealthCompoundIncreaseWithFactor(decimal taxableBasis, decimal compoundFactor)
        {
            decimal taxableResult = TaxingOperations.DecFactorResult(taxableBasis, compoundFactor);

            Int32 resultPaymentValue = TaxingOperations.IntRoundUp(taxableResult);

            return(resultPaymentValue);
        }
        private Int32 SocialIncreaseWithFactor(decimal taxableBasis, decimal increaseFactor)
        {
            decimal taxableResult = TaxingOperations.DecFactorResult(taxableBasis, increaseFactor);

            Int32 resultPaymentValue = TaxingOperations.IntRoundUp(taxableResult);

            return(resultPaymentValue);
        }
        // ChildrenRebate
        public Int32 StatementChildrenRebate(MonthPeriod period, Int32 advancesTax, Int32 payerRebate, Int32 childrenAllowance)
        {
            decimal claimsValue = childrenAllowance;

            Int32 rebateValue = TaxingOperations.RebateResult(advancesTax, payerRebate, claimsValue);

            return(rebateValue);
        }
        // AdvancesRegularyTax
        public Int32 AdvancesRegularyTax(MonthPeriod period, decimal generalBasis)
        {
            decimal advancesFactor = PeriodAdvancesFactor(period);

            decimal advancesResult = TaxingOperations.DecFactorResult(generalBasis, advancesFactor);

            Int32 taxRegulary = TaxingOperations.IntRoundUp(advancesResult);

            return(taxRegulary);
        }
        // StatementPayerTaxRebate
        public Int32 StatementPayerTaxRebate(MonthPeriod period, Int32 advancesTax, Int32 payerAllowance, Int32 disabAllowance, Int32 studyAllowance)
        {
            decimal rebateApply = 0m;

            decimal claimsValue = payerAllowance + disabAllowance + studyAllowance;

            Int32 rebateValue = TaxingOperations.RebateResult(advancesTax, rebateApply, claimsValue);

            return(rebateValue);
        }
        // WithholdTax
        public Int32 WithholdResultTax(MonthPeriod period, decimal generalBasis)
        {
            decimal withholdFactor = PeriodWithholdFactor(period);

            decimal withholdResult = TaxingOperations.DecFactorResult(generalBasis, withholdFactor);

            Int32 taxRegulary = TaxingOperations.IntRoundUp(withholdResult);

            return(taxRegulary);
        }
        // AdvancesSolidaryTax
        public Int32 AdvancesSolidaryTax(MonthPeriod period, decimal solidaryBasis)
        {
            decimal solidaryFactor = PeriodSolidaryFactor(period);

            decimal solidaryResult = TaxingOperations.DecFactorResult(solidaryBasis, solidaryFactor);

            Int32 taxSolidary = TaxingOperations.IntRoundUp(solidaryResult);

            return(taxSolidary);
        }
 private decimal RoundTaxingBasis(MonthPeriod period, decimal income, bool roundUptoHundreds)
 {
     if (roundUptoHundreds)
     {
         return(TaxingOperations.DecRoundUpHundreds(income));
     }
     else
     {
         return(TaxingOperations.DecRoundUp(income));
     }
 }
        public decimal AdvancesRoundedBasis(MonthPeriod period, decimal taxableIncome)
        {
            bool negativeSuppress = true;

            decimal amountForCalc = TaxingOperations.DecSuppressNegative(negativeSuppress, taxableIncome);

            bool roundUptoHundreds = BasisShouldbeRoundedUpToHundreds(period, amountForCalc);

            decimal advancesBasis = RoundTaxingBasis(period, amountForCalc, roundUptoHundreds);

            return(advancesBasis);
        }
        // ChildrenBonus
        public Int32 StatementChildrenBonus(MonthPeriod period, Int32 advancesTax, Int32 payerRebate, Int32 childrenAllowance, Int32 childrenRebate)
        {
            decimal bonusMaxChild = PeriodMaximumValidAmountOfTaxBonus(period);

            decimal bonusMinChild = PeriodMinimumValidAmountOfTaxBonus(period);

            decimal bonusForChild = decimal.Negate(Math.Min(0, childrenRebate - childrenAllowance));

            decimal bonusResult = TaxingOperations.LimitToMinMax(bonusForChild, bonusMinChild, bonusMaxChild);

            return(IntRounding.RoundToInt(bonusResult));
        }
        // WithholdRoundedBasis
        public decimal WithholdRoundedBasis(MonthPeriod period, decimal taxableIncome)
        {
            bool negativeSuppress = true;

            decimal amountForCalc = TaxingOperations.DecSuppressNegative(negativeSuppress, taxableIncome);

            bool roundUptoHundreds = false;

            decimal withholdBasis = RoundTaxingBasis(period, amountForCalc, roundUptoHundreds);

            return(withholdBasis);
        }
        private Int32 HealthIncreaseWithFactor(decimal taxableIncome, decimal compoundFactor)
        {
            decimal compoundPaymentValue = HealthCompoundIncreaseWithFactor(taxableIncome, compoundFactor);

            decimal employeePaymentValue = DecOperations.Divide(compoundPaymentValue, 3);

            Int32 resultCompoundValue = TaxingOperations.IntRoundUp(compoundPaymentValue);

            Int32 resultEmployeeValue = TaxingOperations.IntRoundUp(employeePaymentValue);

            Int32 resultPaymentValue = (resultCompoundValue - resultEmployeeValue);

            return(resultPaymentValue);
        }