Sha256: 092f249c3f6c2d14d570368b8903713f0b849bd4055e220559665e2ab650782d

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

module Workarea
  module Avatax
    class TaxRequest::Response
      attr_reader :response, :request_order_line_items, :request_shipping_line_items
      delegate :success?, to: :response

      def initialize(response:, request_order_line_items:, request_shipping_line_items:)
        @response = response
        @request_order_line_items = request_order_line_items
        @request_shipping_line_items = request_shipping_line_items
      end

      def body
        @body ||= Hashie::Mash.new response.body
      end

      def tax_line_for_adjustment(price_adjustment, shipping: nil)
        return unless success?

        line_number =
          if shipping&.partial?
            request_order_line_items
              .detect { |line_item| line_item.adjustment == price_adjustment && line_item.shipping == shipping }
              .try(:line_number)
          else
            request_order_line_items
              .detect { |line_item| line_item.adjustment == price_adjustment }
              .try(:line_number)
          end

        return unless line_number

        body.lines.detect { |line| line.lineNumber.to_i == line_number }
      end

      def tax_line_for_shipping(shipping)
        return unless success?

        line_number = request_shipping_line_items
          .detect { |line_item| line_item.shipping.id == shipping.id }
          .try(:line_number)

        return unless line_number

        body.lines.detect { |line| line.lineNumber.to_i == line_number }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
workarea-avatax-4.2.1 lib/workarea/avatax/tax_request/response.rb
workarea-avatax-4.2.0 lib/workarea/avatax/tax_request/response.rb