mws-orders 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +13 -9
- data/lib/mws/orders/collection.rb +10 -10
- data/lib/mws/orders/document.rb +4 -2
- data/lib/mws/orders/entity.rb +13 -10
- data/lib/mws/orders/invoice_data.rb +7 -5
- data/lib/mws/orders/message.rb +17 -0
- data/lib/mws/orders/order.rb +40 -32
- data/lib/mws/orders/order_item.rb +33 -27
- data/lib/mws/orders/order_items.rb +7 -5
- data/lib/mws/orders/orders.rb +7 -5
- data/lib/mws/orders/parser.rb +49 -24
- data/lib/mws/orders/payment_execution_detail.rb +8 -4
- data/lib/mws/orders/payment_execution_detail_item.rb +5 -3
- data/lib/mws/orders/service_status.rb +8 -6
- data/lib/mws/orders/shipping_address.rb +9 -7
- data/lib/mws/orders/tokenable.rb +3 -1
- data/lib/mws/orders/version.rb +3 -1
- data/test/fixtures/orders.xml +4 -1
- data/test/mws/orders/test_entity.rb +44 -42
- data/test/mws/orders/test_message.rb +18 -0
- data/test/mws/orders/test_order.rb +16 -2
- data/test/mws/orders/test_order_item.rb +8 -2
- data/test/mws/orders/test_order_items.rb +4 -2
- data/test/mws/orders/test_orders.rb +4 -2
- data/test/mws/orders/test_parser.rb +3 -1
- data/test/mws/orders/test_payment_execution_detail.rb +6 -2
- data/test/mws/orders/test_payment_execution_detail_item.rb +5 -2
- data/test/mws/orders/test_service_status.rb +6 -2
- data/test/mws/orders/test_shipping_address.rb +4 -2
- data/test/mws/orders/test_tokenable.rb +8 -6
- data/test/test_helper.rb +12 -9
- metadata +70 -33
- data/lib/mws-orders.rb +0 -2
- data/lib/mws/orders/service_status_message.rb +0 -15
- data/test/integration/test_mws_orders.rb +0 -27
- data/test/mws/orders/test_service_status_message.rb +0 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 5024482ae6bb34ce7a6066333ab17e2bad0c8cd98330ef2d17710c843114c1bb
         | 
| 4 | 
            +
              data.tar.gz: 2d2235a1ccd194a58cfb162d4cd89990e3878a232c62b0c7325f30d595dd0cf4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a0e92ba47bfc2feb5513324f22a60abd078528c327e1be3e22a0d27940f7f45d5917e3708cbda335967d3cb2cbffe9364a4677f359af01d698c897d6c4b52883
         | 
| 7 | 
            +
              data.tar.gz: 75677d6f12e108daf1331ba3d18b5d2c54717abd79a85999e68545a13f18773a8804577d5d063710e2fdba7a6b8a151d4b3035f795774f9c3d55bf86d43b9747
         | 
    
        data/README.md
    CHANGED
    
    | @@ -11,18 +11,20 @@ To use Amazon MWS, you must have an eligible seller account. | |
| 11 11 | 
             
            Create a client:
         | 
| 12 12 |  | 
| 13 13 | 
             
            ```ruby
         | 
| 14 | 
            -
            require  | 
| 15 | 
            -
            client = MWS.orders
         | 
| 14 | 
            +
            require 'mws/orders/parser'
         | 
| 15 | 
            +
            client = MWS.orders(marketplace: 'ATVPDKIKX0DER',
         | 
| 16 | 
            +
                                merchant_id: '123')
         | 
| 16 17 | 
             
            ```
         | 
| 17 18 |  | 
| 18 | 
            -
            Set up credentials [when instantiating or with environment variables](https://github.com/hakanensari/peddler# | 
| 19 | 
            +
            Set up credentials [when instantiating or with environment variables](https://github.com/hakanensari/peddler#usage).
         | 
| 19 20 |  | 
| 20 21 | 
             
            ### Orders
         | 
| 21 22 |  | 
| 22 23 | 
             
            List orders created or updated during a time frame you specify:
         | 
| 23 24 |  | 
| 24 25 | 
             
            ```ruby
         | 
| 25 | 
            -
             | 
| 26 | 
            +
            response = client.list_orders(created_after: 1.month.ago)
         | 
| 27 | 
            +
            orders = response.parse
         | 
| 26 28 | 
             
            puts orders.count # => 100
         | 
| 27 29 | 
             
            puts orders.first # => #<MWS::Orders::Order amazon_order_id="123...
         | 
| 28 30 | 
             
            )
         | 
| @@ -31,13 +33,14 @@ puts orders.first # => #<MWS::Orders::Order amazon_order_id="123... | |
| 31 33 | 
             
            List the next page of orders:
         | 
| 32 34 |  | 
| 33 35 | 
             
            ```ruby
         | 
| 34 | 
            -
            client.list_orders_by_next_token(orders.next_token)
         | 
| 36 | 
            +
            client.list_orders_by_next_token(orders.next_token).parse
         | 
| 35 37 | 
             
            ```
         | 
| 36 38 |  | 
| 37 39 | 
             
            Get one or more orders based on their order numbers:
         | 
| 38 40 |  | 
| 39 41 | 
             
            ```ruby
         | 
| 40 | 
            -
             | 
| 42 | 
            +
            response = client.get_order('123-1234567-1234567')
         | 
| 43 | 
            +
            order = response.parse
         | 
| 41 44 | 
             
            puts order # => #<MWS::Orders::Order amazon_order_id="123...
         | 
| 42 45 | 
             
            ```
         | 
| 43 46 |  | 
| @@ -46,13 +49,14 @@ puts order # => #<MWS::Orders::Order amazon_order_id="123... | |
| 46 49 | 
             
            List order items:
         | 
| 47 50 |  | 
| 48 51 | 
             
            ```ruby
         | 
| 49 | 
            -
             | 
| 52 | 
            +
            response = client.list_order_items('123-1234567-1234567')
         | 
| 53 | 
            +
            order_items = response.parse
         | 
| 50 54 | 
             
            ```
         | 
| 51 55 |  | 
| 52 56 | 
             
            List the next page of order items:
         | 
| 53 57 |  | 
| 54 58 | 
             
            ```ruby
         | 
| 55 | 
            -
            client.list_order_items_by_next_token
         | 
| 59 | 
            +
            client.list_order_items_by_next_token.parse
         | 
| 56 60 | 
             
            ```
         | 
| 57 61 |  | 
| 58 62 | 
             
            Orders and order items are represented by POROs that map one on one to the attributes returned by the API.
         | 
| @@ -62,5 +66,5 @@ Orders and order items are represented by POROs that map one on one to the attri | |
| 62 66 | 
             
            Check the operational status of the API:
         | 
| 63 67 |  | 
| 64 68 | 
             
            ```ruby
         | 
| 65 | 
            -
            client.get_service_status
         | 
| 69 | 
            +
            client.get_service_status.parse
         | 
| 66 70 | 
             
            ```
         | 
| @@ -1,4 +1,6 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'mws/orders/document'
         | 
| 2 4 |  | 
| 3 5 | 
             
            module MWS
         | 
| 4 6 | 
             
              module Orders
         | 
| @@ -10,20 +12,18 @@ module MWS | |
| 10 12 | 
             
                  end
         | 
| 11 13 |  | 
| 12 14 | 
             
                  def empty?
         | 
| 13 | 
            -
                    count | 
| 15 | 
            +
                    count.zero?
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def attributes
         | 
| 19 | 
            +
                    map(&:attributes)
         | 
| 14 20 | 
             
                  end
         | 
| 15 21 |  | 
| 16 22 | 
             
                  def inspect
         | 
| 17 | 
            -
                    "#<#{self.class} #{
         | 
| 18 | 
            -
                      if count > 3
         | 
| 19 | 
            -
                        "[#{take(3).map(&:inspect).join(', ')}...]"
         | 
| 20 | 
            -
                      else
         | 
| 21 | 
            -
                        "[#{map(&:inspect).join(', ')}]"
         | 
| 22 | 
            -
                      end
         | 
| 23 | 
            -
                    }>"
         | 
| 23 | 
            +
                    "#<#{self.class.name} #{to_a}>"
         | 
| 24 24 | 
             
                  end
         | 
| 25 25 |  | 
| 26 | 
            -
                   | 
| 26 | 
            +
                  alias to_s inspect
         | 
| 27 27 | 
             
                end
         | 
| 28 28 | 
             
              end
         | 
| 29 29 | 
             
            end
         | 
    
        data/lib/mws/orders/document.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module MWS
         | 
| 2 4 | 
             
              module Orders
         | 
| 3 5 | 
             
                class Document
         | 
| @@ -15,9 +17,9 @@ module MWS | |
| 15 17 |  | 
| 16 18 | 
             
                  def add_namespace(path)
         | 
| 17 19 | 
             
                    path
         | 
| 18 | 
            -
                      .split( | 
| 20 | 
            +
                      .split('/')
         | 
| 19 21 | 
             
                      .map { |attr| "xmlns:#{attr}" }
         | 
| 20 | 
            -
                      .join( | 
| 22 | 
            +
                      .join('/')
         | 
| 21 23 | 
             
                  end
         | 
| 22 24 | 
             
                end
         | 
| 23 25 | 
             
              end
         | 
    
        data/lib/mws/orders/entity.rb
    CHANGED
    
    | @@ -1,8 +1,10 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            require  | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'cgi'
         | 
| 4 | 
            +
            require 'time'
         | 
| 5 | 
            +
            require 'money'
         | 
| 6 | 
            +
            require 'structure'
         | 
| 7 | 
            +
            require 'mws/orders/document'
         | 
| 6 8 |  | 
| 7 9 | 
             
            module MWS
         | 
| 8 10 | 
             
              module Orders
         | 
| @@ -11,19 +13,20 @@ module MWS | |
| 11 13 |  | 
| 12 14 | 
             
                  def float_at_xpath(path)
         | 
| 13 15 | 
             
                    text = text_at_xpath(path)
         | 
| 14 | 
            -
                    text | 
| 16 | 
            +
                    text&.to_f
         | 
| 15 17 | 
             
                  end
         | 
| 16 18 |  | 
| 17 19 | 
             
                  def integer_at_xpath(path)
         | 
| 18 20 | 
             
                    text = text_at_xpath(path)
         | 
| 19 | 
            -
                    text | 
| 21 | 
            +
                    text&.to_i
         | 
| 20 22 | 
             
                  end
         | 
| 21 23 |  | 
| 22 24 | 
             
                  def money_at_xpath(path)
         | 
| 23 | 
            -
                     | 
| 25 | 
            +
                    amount = float_at_xpath("#{path}/Amount")
         | 
| 26 | 
            +
                    return unless amount
         | 
| 24 27 |  | 
| 25 28 | 
             
                    currency_code = text_at_xpath("#{path}/CurrencyCode")
         | 
| 26 | 
            -
                    amount  | 
| 29 | 
            +
                    amount *= 100 unless currency_code == 'JPY'
         | 
| 27 30 |  | 
| 28 31 | 
             
                    Money.new(amount, currency_code)
         | 
| 29 32 | 
             
                  end
         | 
| @@ -35,7 +38,7 @@ module MWS | |
| 35 38 |  | 
| 36 39 | 
             
                  def text_at_xpath(path)
         | 
| 37 40 | 
             
                    node = xpath(path).first
         | 
| 38 | 
            -
                    node | 
| 41 | 
            +
                    node&.text&.strip
         | 
| 39 42 | 
             
                  end
         | 
| 40 43 | 
             
                end
         | 
| 41 44 | 
             
              end
         | 
| @@ -1,22 +1,24 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'mws/orders/entity'
         | 
| 2 4 |  | 
| 3 5 | 
             
            module MWS
         | 
| 4 6 | 
             
              module Orders
         | 
| 5 7 | 
             
                class InvoiceData < Entity
         | 
| 6 8 | 
             
                  attribute(:invoice_requirement) do
         | 
| 7 | 
            -
                    text_at_xpath( | 
| 9 | 
            +
                    text_at_xpath('InvoiceRequirement')
         | 
| 8 10 | 
             
                  end
         | 
| 9 11 |  | 
| 10 12 | 
             
                  attribute(:buyer_selected_invoice_category) do
         | 
| 11 | 
            -
                    text_at_xpath( | 
| 13 | 
            +
                    text_at_xpath('BuyerSelectedInvoiceCategory')
         | 
| 12 14 | 
             
                  end
         | 
| 13 15 |  | 
| 14 16 | 
             
                  attribute(:invoice_title) do
         | 
| 15 | 
            -
                    text_at_xpath( | 
| 17 | 
            +
                    text_at_xpath('InvoiceTitle')
         | 
| 16 18 | 
             
                  end
         | 
| 17 19 |  | 
| 18 20 | 
             
                  attribute(:invoice_information) do
         | 
| 19 | 
            -
                    text_at_xpath( | 
| 21 | 
            +
                    text_at_xpath('InvoiceInformation')
         | 
| 20 22 | 
             
                  end
         | 
| 21 23 | 
             
                end
         | 
| 22 24 | 
             
              end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'mws/orders/entity'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module MWS
         | 
| 6 | 
            +
              module Orders
         | 
| 7 | 
            +
                class Message < Entity
         | 
| 8 | 
            +
                  attribute(:locale) do
         | 
| 9 | 
            +
                    text_at_xpath('Locale')
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  attribute(:text) do
         | 
| 13 | 
            +
                    text_at_xpath('Text')
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
    
        data/lib/mws/orders/order.rb
    CHANGED
    
    | @@ -1,112 +1,120 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            require  | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'mws/orders/entity'
         | 
| 4 | 
            +
            require 'mws/orders/shipping_address'
         | 
| 5 | 
            +
            require 'mws/orders/payment_execution_detail'
         | 
| 4 6 |  | 
| 5 7 | 
             
            module MWS
         | 
| 6 8 | 
             
              module Orders
         | 
| 7 9 | 
             
                class Order < Entity
         | 
| 8 10 | 
             
                  attribute(:amazon_order_id) do
         | 
| 9 | 
            -
                    text_at_xpath( | 
| 11 | 
            +
                    text_at_xpath('AmazonOrderId')
         | 
| 10 12 | 
             
                  end
         | 
| 11 13 |  | 
| 12 14 | 
             
                  attribute(:seller_order_id) do
         | 
| 13 | 
            -
                    text_at_xpath( | 
| 15 | 
            +
                    text_at_xpath('SellerOrderId')
         | 
| 14 16 | 
             
                  end
         | 
| 15 17 |  | 
| 16 18 | 
             
                  attribute(:purchased_at) do
         | 
| 17 | 
            -
                    time_at_xpath( | 
| 19 | 
            +
                    time_at_xpath('PurchaseDate')
         | 
| 18 20 | 
             
                  end
         | 
| 19 21 |  | 
| 20 22 | 
             
                  attribute(:last_updated_at) do
         | 
| 21 | 
            -
                    time_at_xpath( | 
| 23 | 
            +
                    time_at_xpath('LastUpdateDate')
         | 
| 22 24 | 
             
                  end
         | 
| 23 25 |  | 
| 24 26 | 
             
                  attribute(:status) do
         | 
| 25 | 
            -
                    text_at_xpath( | 
| 27 | 
            +
                    text_at_xpath('OrderStatus')
         | 
| 26 28 | 
             
                  end
         | 
| 27 29 |  | 
| 28 30 | 
             
                  attribute(:fulfillment_channel) do
         | 
| 29 | 
            -
                    text_at_xpath( | 
| 31 | 
            +
                    text_at_xpath('FulfillmentChannel')
         | 
| 30 32 | 
             
                  end
         | 
| 31 33 |  | 
| 32 34 | 
             
                  attribute(:sales_channel) do
         | 
| 33 | 
            -
                    text_at_xpath( | 
| 35 | 
            +
                    text_at_xpath('SalesChannel')
         | 
| 34 36 | 
             
                  end
         | 
| 35 37 |  | 
| 36 38 | 
             
                  attribute(:order_channel) do
         | 
| 37 | 
            -
                    text_at_xpath( | 
| 39 | 
            +
                    text_at_xpath('OrderChannel')
         | 
| 38 40 | 
             
                  end
         | 
| 39 41 |  | 
| 40 42 | 
             
                  attribute(:ship_service_level) do
         | 
| 41 | 
            -
                    text_at_xpath( | 
| 43 | 
            +
                    text_at_xpath('ShipServiceLevel')
         | 
| 42 44 | 
             
                  end
         | 
| 43 45 |  | 
| 44 46 | 
             
                  attribute(:shipping_address) do
         | 
| 45 | 
            -
                     | 
| 46 | 
            -
             | 
| 47 | 
            -
                    end
         | 
| 47 | 
            +
                    node = xpath('ShippingAddress').first
         | 
| 48 | 
            +
                    ShippingAddress.new(node) if node
         | 
| 48 49 | 
             
                  end
         | 
| 49 50 |  | 
| 50 51 | 
             
                  attribute(:total) do
         | 
| 51 | 
            -
                    money_at_xpath( | 
| 52 | 
            +
                    money_at_xpath('OrderTotal')
         | 
| 52 53 | 
             
                  end
         | 
| 53 54 |  | 
| 54 55 | 
             
                  attribute(:number_of_items_shipped) do
         | 
| 55 | 
            -
                    integer_at_xpath( | 
| 56 | 
            +
                    integer_at_xpath('NumberOfItemsShipped')
         | 
| 56 57 | 
             
                  end
         | 
| 57 58 |  | 
| 58 59 | 
             
                  attribute(:number_of_items_unshipped) do
         | 
| 59 | 
            -
                    integer_at_xpath( | 
| 60 | 
            +
                    integer_at_xpath('NumberOfItemsUnshipped')
         | 
| 60 61 | 
             
                  end
         | 
| 61 62 |  | 
| 62 63 | 
             
                  attribute(:payment_execution_detail) do
         | 
| 63 | 
            -
                     | 
| 64 | 
            -
             | 
| 65 | 
            -
                    end
         | 
| 64 | 
            +
                    node = xpath('PaymentExecutionDetail').first
         | 
| 65 | 
            +
                    PaymentExecutionDetail.new(node) if node
         | 
| 66 66 | 
             
                  end
         | 
| 67 67 |  | 
| 68 68 | 
             
                  attribute(:payment_method) do
         | 
| 69 | 
            -
                    text_at_xpath( | 
| 69 | 
            +
                    text_at_xpath('PaymentMethod')
         | 
| 70 70 | 
             
                  end
         | 
| 71 71 |  | 
| 72 72 | 
             
                  attribute(:marketplace_id) do
         | 
| 73 | 
            -
                    text_at_xpath( | 
| 73 | 
            +
                    text_at_xpath('MarketplaceId')
         | 
| 74 74 | 
             
                  end
         | 
| 75 75 |  | 
| 76 76 | 
             
                  attribute(:buyer_name) do
         | 
| 77 | 
            -
                    text_at_xpath( | 
| 77 | 
            +
                    text_at_xpath('BuyerName')
         | 
| 78 78 | 
             
                  end
         | 
| 79 79 |  | 
| 80 80 | 
             
                  attribute(:buyer_email) do
         | 
| 81 | 
            -
                    text_at_xpath( | 
| 81 | 
            +
                    text_at_xpath('BuyerEmail')
         | 
| 82 82 | 
             
                  end
         | 
| 83 83 |  | 
| 84 84 | 
             
                  attribute(:shipment_service_level_category) do
         | 
| 85 | 
            -
                    text_at_xpath( | 
| 85 | 
            +
                    text_at_xpath('ShipmentServiceLevelCategory')
         | 
| 86 86 | 
             
                  end
         | 
| 87 87 |  | 
| 88 88 | 
             
                  attribute(:cba_displayable_shipping_label) do
         | 
| 89 | 
            -
                    text_at_xpath( | 
| 89 | 
            +
                    text_at_xpath('CbaDisplayableShippingLabel')
         | 
| 90 90 | 
             
                  end
         | 
| 91 91 |  | 
| 92 92 | 
             
                  attribute(:shipped_by_amazon_tfm) do
         | 
| 93 | 
            -
                    text_at_xpath( | 
| 93 | 
            +
                    text_at_xpath('ShippedByAmazonTFM')
         | 
| 94 94 | 
             
                  end
         | 
| 95 95 |  | 
| 96 96 | 
             
                  attribute(:tfm_shipment_status) do
         | 
| 97 | 
            -
                    text_at_xpath( | 
| 97 | 
            +
                    text_at_xpath('TFMShipmentStatus')
         | 
| 98 98 | 
             
                  end
         | 
| 99 99 |  | 
| 100 100 | 
             
                  attribute(:type) do
         | 
| 101 | 
            -
                    text_at_xpath( | 
| 101 | 
            +
                    text_at_xpath('OrderType')
         | 
| 102 102 | 
             
                  end
         | 
| 103 103 |  | 
| 104 104 | 
             
                  attribute(:earliest_shipped_at) do
         | 
| 105 | 
            -
                    time_at_xpath( | 
| 105 | 
            +
                    time_at_xpath('EarliestShipDate')
         | 
| 106 106 | 
             
                  end
         | 
| 107 107 |  | 
| 108 108 | 
             
                  attribute(:latest_shipped_at) do
         | 
| 109 | 
            -
                    time_at_xpath( | 
| 109 | 
            +
                    time_at_xpath('LatestShipDate')
         | 
| 110 | 
            +
                  end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                  attribute(:latest_delivered_at) do
         | 
| 113 | 
            +
                    time_at_xpath('LatestDeliveryDate')
         | 
| 114 | 
            +
                  end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                  def to_s
         | 
| 117 | 
            +
                    amazon_order_id
         | 
| 110 118 | 
             
                  end
         | 
| 111 119 | 
             
                end
         | 
| 112 120 | 
             
              end
         | 
| @@ -1,107 +1,113 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'mws/orders/entity'
         | 
| 4 | 
            +
            require 'mws/orders/invoice_data'
         | 
| 3 5 |  | 
| 4 6 | 
             
            module MWS
         | 
| 5 7 | 
             
              module Orders
         | 
| 6 8 | 
             
                class OrderItem < Entity
         | 
| 7 9 | 
             
                  attribute(:asin) do
         | 
| 8 | 
            -
                    text_at_xpath( | 
| 10 | 
            +
                    text_at_xpath('ASIN')
         | 
| 9 11 | 
             
                  end
         | 
| 10 12 |  | 
| 11 13 | 
             
                  attribute(:seller_sku) do
         | 
| 12 | 
            -
                    text_at_xpath( | 
| 14 | 
            +
                    text_at_xpath('SellerSKU')
         | 
| 13 15 | 
             
                  end
         | 
| 14 16 |  | 
| 15 17 | 
             
                  attribute(:order_item_id) do
         | 
| 16 | 
            -
                    text_at_xpath( | 
| 18 | 
            +
                    text_at_xpath('OrderItemId')
         | 
| 17 19 | 
             
                  end
         | 
| 18 20 |  | 
| 19 21 | 
             
                  attribute(:title) do
         | 
| 20 | 
            -
                    text_at_xpath( | 
| 22 | 
            +
                    text_at_xpath('Title')
         | 
| 21 23 | 
             
                  end
         | 
| 22 24 |  | 
| 23 25 | 
             
                  attribute(:quantity_ordered) do
         | 
| 24 | 
            -
                    integer_at_xpath( | 
| 26 | 
            +
                    integer_at_xpath('QuantityOrdered')
         | 
| 25 27 | 
             
                  end
         | 
| 26 28 |  | 
| 27 29 | 
             
                  attribute(:quantity_shipped) do
         | 
| 28 | 
            -
                    integer_at_xpath( | 
| 30 | 
            +
                    integer_at_xpath('QuantityShipped')
         | 
| 29 31 | 
             
                  end
         | 
| 30 32 |  | 
| 31 33 | 
             
                  attribute(:gift_message_text) do
         | 
| 32 | 
            -
                    text_at_xpath( | 
| 34 | 
            +
                    text_at_xpath('GiftMessageText')
         | 
| 33 35 | 
             
                  end
         | 
| 34 36 |  | 
| 35 37 | 
             
                  attribute(:gift_wrap_level) do
         | 
| 36 | 
            -
                    text_at_xpath( | 
| 38 | 
            +
                    text_at_xpath('GiftWrapLevel')
         | 
| 37 39 | 
             
                  end
         | 
| 38 40 |  | 
| 39 41 | 
             
                  attribute(:item_price) do
         | 
| 40 | 
            -
                    money_at_xpath( | 
| 42 | 
            +
                    money_at_xpath('ItemPrice')
         | 
| 41 43 | 
             
                  end
         | 
| 42 44 |  | 
| 43 45 | 
             
                  attribute(:shipping_price) do
         | 
| 44 | 
            -
                    money_at_xpath( | 
| 46 | 
            +
                    money_at_xpath('ShippingPrice')
         | 
| 45 47 | 
             
                  end
         | 
| 46 48 |  | 
| 47 49 | 
             
                  attribute(:gift_wrap_price) do
         | 
| 48 | 
            -
                    money_at_xpath( | 
| 50 | 
            +
                    money_at_xpath('GiftWrapPrice')
         | 
| 49 51 | 
             
                  end
         | 
| 50 52 |  | 
| 51 53 | 
             
                  attribute(:item_tax) do
         | 
| 52 | 
            -
                    money_at_xpath( | 
| 54 | 
            +
                    money_at_xpath('ItemTax')
         | 
| 53 55 | 
             
                  end
         | 
| 54 56 |  | 
| 55 57 | 
             
                  attribute(:shipping_tax) do
         | 
| 56 | 
            -
                    money_at_xpath( | 
| 58 | 
            +
                    money_at_xpath('ShippingTax')
         | 
| 57 59 | 
             
                  end
         | 
| 58 60 |  | 
| 59 61 | 
             
                  attribute(:gift_wrap_tax) do
         | 
| 60 | 
            -
                    money_at_xpath( | 
| 62 | 
            +
                    money_at_xpath('GiftWrapPrice')
         | 
| 61 63 | 
             
                  end
         | 
| 62 64 |  | 
| 63 65 | 
             
                  attribute(:shipping_discount) do
         | 
| 64 | 
            -
                    money_at_xpath( | 
| 66 | 
            +
                    money_at_xpath('ShippingDiscount')
         | 
| 65 67 | 
             
                  end
         | 
| 66 68 |  | 
| 67 69 | 
             
                  attribute(:promotion_discount) do
         | 
| 68 | 
            -
                    money_at_xpath( | 
| 70 | 
            +
                    money_at_xpath('PromotionDiscount')
         | 
| 69 71 | 
             
                  end
         | 
| 70 72 |  | 
| 71 73 | 
             
                  attribute(:promotion_ids) do
         | 
| 72 | 
            -
                    xpath( | 
| 74 | 
            +
                    xpath('PromotionId').map(&:text)
         | 
| 73 75 | 
             
                  end
         | 
| 74 76 |  | 
| 75 77 | 
             
                  attribute(:cod_fee) do
         | 
| 76 | 
            -
                    money_at_xpath( | 
| 78 | 
            +
                    money_at_xpath('CODFee')
         | 
| 77 79 | 
             
                  end
         | 
| 78 80 |  | 
| 79 81 | 
             
                  attribute(:cod_fee_discount) do
         | 
| 80 | 
            -
                    money_at_xpath( | 
| 82 | 
            +
                    money_at_xpath('CODFeeDiscount')
         | 
| 81 83 | 
             
                  end
         | 
| 82 84 |  | 
| 83 85 | 
             
                  attribute(:invoice_data) do
         | 
| 84 | 
            -
                    xpath( | 
| 86 | 
            +
                    xpath('InvoiceData').map { |node| InvoiceData.new(node) }
         | 
| 85 87 | 
             
                  end
         | 
| 86 88 |  | 
| 87 89 | 
             
                  attribute(:condition_id) do
         | 
| 88 | 
            -
                    text_at_xpath( | 
| 90 | 
            +
                    text_at_xpath('ConditionId')
         | 
| 89 91 | 
             
                  end
         | 
| 90 92 |  | 
| 91 93 | 
             
                  attribute(:condition_subtype_id) do
         | 
| 92 | 
            -
                    text_at_xpath( | 
| 94 | 
            +
                    text_at_xpath('ConditionSubtypeId')
         | 
| 93 95 | 
             
                  end
         | 
| 94 96 |  | 
| 95 97 | 
             
                  attribute(:condition_note) do
         | 
| 96 | 
            -
                    text_at_xpath( | 
| 98 | 
            +
                    text_at_xpath('ConditionNote')
         | 
| 97 99 | 
             
                  end
         | 
| 98 100 |  | 
| 99 101 | 
             
                  attribute(:scheduled_delivery_ends_at) do
         | 
| 100 | 
            -
                    time_at_xpath( | 
| 102 | 
            +
                    time_at_xpath('ScheduledDeliveryEndDate')
         | 
| 101 103 | 
             
                  end
         | 
| 102 104 |  | 
| 103 105 | 
             
                  attribute(:scheduled_delivery_starts_at) do
         | 
| 104 | 
            -
                    time_at_xpath( | 
| 106 | 
            +
                    time_at_xpath('ScheduledDeliveryStartDate')
         | 
| 107 | 
            +
                  end
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                  def to_s
         | 
| 110 | 
            +
                    order_item_id
         | 
| 105 111 | 
             
                  end
         | 
| 106 112 | 
             
                end
         | 
| 107 113 | 
             
              end
         |