/// <summary>
            /// Get the rounded amount based on the currency code.
            /// </summary>
            /// <param name="context">The request context.</param>
            /// <param name="amount">The amount to be rounded.</param>
            /// <param name="currencyCode">The currency code.</param>
            /// <returns>The rounded value.</returns>
            private static decimal RoundAmountByCurrency(RequestContext context, decimal amount, string currencyCode)
            {
                var roundingRequest = new GetRoundedValueServiceRequest(amount, currencyCode);
                GetRoundedValueServiceResponse roundingResponse = context.Execute <GetRoundedValueServiceResponse>(roundingRequest);

                return(roundingResponse.RoundedValue);
            }
Beispiel #2
0
            /// <summary>
            /// Standard round to minimal coin/amount.
            /// </summary>
            /// <param name="request">Service request.</param>
            /// <returns>Rounded value.</returns>
            private GetRoundedValueServiceResponse GetRoundedValue(GetRoundedValueServiceRequest request)
            {
                string  currencyCode = request.CurrencyCode;
                decimal currencyUnit = 0.0m;

                if (string.IsNullOrWhiteSpace(currencyCode))
                {
                    var channelConfiguration = request.RequestContext.GetChannelConfiguration();

                    currencyCode = channelConfiguration.Currency;
                }

                RoundingUnitAndMethod unitAndMethod = GetRoundingUnitAndMethod(request.RequestContext, currencyCode, request.UseSalesRounding);

                if (request.NumberOfDecimals != 0)
                {
                    currencyUnit = 1.0M / (decimal)Math.Pow(10, request.NumberOfDecimals);
                }
                else
                {
                    currencyUnit = unitAndMethod.RoundingUnit;
                }

                decimal value = Rounding.RoundToUnit(request.Value, currencyUnit, unitAndMethod.RoundingMethod);

                return(new GetRoundedValueServiceResponse(value));
            }
Beispiel #3
0
            /// <summary>
            /// Rounding helper method for rounding currency amounts.
            /// </summary>
            /// <param name="context">The request context.</param>
            /// <param name="amount">The amount to be rounded.</param>
            /// <returns>The rounded amount.</returns>
            private static decimal RoundCurrencyAmount(RequestContext context, decimal amount)
            {
                GetRoundedValueServiceRequest request = new GetRoundedValueServiceRequest(
                    amount,
                    context.GetChannelConfiguration().Currency,
                    numberOfDecimals: 0,
                    useSalesRounding: false);

                GetRoundedValueServiceResponse response = context.Execute <GetRoundedValueServiceResponse>(request);

                return(response.RoundedValue);
            }
Beispiel #4
0
            private static decimal RoundWithPricesRounding(RequestContext context, decimal amountToRound, string currencyCode)
            {
                GetRoundedValueServiceRequest request = new GetRoundedValueServiceRequest(
                    amountToRound,
                    currencyCode,
                    numberOfDecimals: 0,
                    useSalesRounding: false);

                GetRoundedValueServiceResponse response = context.Execute <GetRoundedValueServiceResponse>(request);

                return(response.RoundedValue);
            }
Beispiel #5
0
            /// <summary>
            /// Rounds the specified amount.
            /// </summary>
            /// <param name="context">The context.</param>
            /// <param name="amount">The amount.</param>
            /// <returns>The rounded off amount.</returns>
            internal static decimal RoundWithPricesRounding(RequestContext context, decimal amount)
            {
                string currency = null;

                if (context != null && context.GetChannelConfiguration() != null)
                {
                    currency = context.GetChannelConfiguration().Currency;
                }

                var roundingRequest  = new GetRoundedValueServiceRequest(amount, currency, 0, useSalesRounding: false);
                var roundingResponse = context.Execute <GetRoundedValueServiceResponse>(roundingRequest);

                return(roundingResponse.RoundedValue);
            }
            /// <summary>
            /// Round an amount.
            /// </summary>
            /// <param name="amountToRound">Amount to round.</param>
            /// <returns>Rounded amount.</returns>
            public decimal Round(decimal amountToRound)
            {
                string currency = null;
                ChannelConfiguration channelConfiguration = this.context.GetChannelConfiguration();

                if (channelConfiguration != null)
                {
                    currency = channelConfiguration.Currency;
                }

                var roundingRequest  = new GetRoundedValueServiceRequest(amountToRound, currency, 0, useSalesRounding: false);
                var roundingResponse = this.context.Execute <GetRoundedValueServiceResponse>(roundingRequest);

                return(roundingResponse.RoundedValue);
            }