Sha256: 5ffb88135929f15c6ea8e54afe6be7c992b6f0d37d3e097962300e5a24119eea

Contents?: true

Size: 921 Bytes

Versions: 2

Compression:

Stored size: 921 Bytes

Contents

# frozen_string_literal: true

module FriendlyShipping
  module Services
    class UpsJson
      class ParseRateModifierHash
        # @param [Hash] hash the RateModifier hash from the source JSON
        # @param [String] currency_code The currency code for this modifier's amount (i.e. 'USD')
        # @return [Array] The label and the amount of the rate modifier
        def self.call(rate_modifier, currency_code:)
          return unless rate_modifier

          amount = rate_modifier['Amount'].to_d
          return if amount.zero?

          currency = Money::Currency.new(currency_code)
          amount = Money.new(amount * currency.subunit_to_unit, currency)

          modifier_type = rate_modifier['ModifierType']
          modifier_description = rate_modifier['ModifierDesc']
          label = "#{modifier_type} (#{modifier_description})"

          [label, amount]
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
friendly_shipping-0.10.1 lib/friendly_shipping/services/ups_json/parse_rate_modifier_hash.rb
friendly_shipping-0.10.0 lib/friendly_shipping/services/ups_json/parse_rate_modifier_hash.rb