/// <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); }
/// <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)); }
/// <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); }
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); }
/// <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); }