コード例 #1
0
        private FeeVariation SumFeeVariations(List <FeeVariation> variations)
        {
            var fee = new FeeVariation
            {
                Percentage  = 0,
                FixedAmount = 0,
                LowerLimit  = 0,
                UpperLimit  = 0
            };

            if (variations != null)
            {
                foreach (FeeVariation variation in variations)
                {
                    fee.Percentage  += variation.Percentage;
                    fee.FixedAmount += variation.FixedAmount;
                    fee.LowerLimit  += variation.LowerLimit;
                    fee.UpperLimit  += variation.UpperLimit;
                }
            }
            return(fee);
        }
コード例 #2
0
        private FeeCondition SolveFeeCondition(FeeCondition fee)
        {
            if (fee != null)
            {
                FeeVariation feeVariation = SumFeeVariations(fee.Variations);
                fee.CalculatedFixedAmount = (fee.FixedAmount?.Amount ?? 0) + feeVariation.FixedAmount;
                fee.CalculatedLowerLimit  = (fee.LowerLimit?.Amount ?? 0) + feeVariation.LowerLimit;
                fee.CalculatedUpperLimit  = (fee.UpperLimit?.Amount ?? 0) + feeVariation.UpperLimit;
                fee.CalculatedPercentage  = fee.Percentage + feeVariation.Percentage;

                if (fee.PercentageLowerLimit.HasValue && fee.PercentageLowerLimit.Value > fee.CalculatedPercentage)
                {
                    fee.CalculatedPercentage        = fee.PercentageLowerLimit.Value;
                    fee.PercentageLowerLimitApplied = true;
                }
                else if (fee.PercentageUpperLimit.HasValue && fee.CalculatedPercentage > fee.PercentageUpperLimit.Value)
                {
                    fee.CalculatedPercentage        = fee.PercentageUpperLimit.Value;
                    fee.PercentageUpperLimitApplied = true;
                }
            }
            return(fee);
        }