Sha256: 35689cbe75e537ab797e19982c13297c3851c80012ab01147a24bba5b59c23d9

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

module FriendlyShipping
  class Rate
    class NoAmountsGiven < StandardError; end
    attr_reader :shipping_method,
                :amounts,
                :remote_service_id,
                :delivery_date,
                :warnings,
                :errors,
                :data

    # @param [FriendlyShipping::ShippingMethod] shipping_method The rate's shipping method
    # @param [Hash] amounts The amounts (as Money objects) that make up the rate
    # @param [Integer] remote_service_id The remote service ID for the rate
    # @param [Time] delivery_date The delivery date for the rate
    # @param [Array] warnings Any warnings that were generated
    # @param [Array] errors Any errors that were generated
    # @param [Hash] data Additional data related to the rate
    def initialize(
      shipping_method:,
      amounts:,
      remote_service_id: nil,
      delivery_date: nil,
      warnings: [],
      errors: [],
      data: {}
    )
      @remote_service_id = remote_service_id
      @shipping_method = shipping_method
      @amounts = amounts
      @delivery_date = delivery_date
      @warnings = warnings
      @errors = errors
      @data = data
    end

    def total_amount
      raise NoAmountsGiven if amounts.empty?

      amounts.map { |_name, amount| amount }.sum(Money.new(0, 'USD'))
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
friendly_shipping-0.8.1 lib/friendly_shipping/rate.rb
friendly_shipping-0.8.0 lib/friendly_shipping/rate.rb