class HermesAPI::DropOffReturnLabel

Constants

DEFAULT_ATTRS

Public Instance Methods

request_print_in_store_qr_code(**attrs) click to toggle source
# File lib/hermes_api/resources/drop_off_return_label.rb, line 87
def request_print_in_store_qr_code(**attrs)
  if missing_required_qr_code_attributes?(attrs)
    raise ArgumentError, request_print_in_store_qr_code_error_message
  end

  return nil if attributes["routing_response_entries"].blank?

  entries = routing_response_entries.routing_response_entry
  entry = entries.is_a?(Array) ? entries[0] : entries
  carrier = entry.inbound_carriers.carrier1
  barcode = carrier.barcode1
  customer = collection_routing_request_entries[0].customer
  address = customer.address

  self.print_in_store_qr_code = PrintInStoreQrCode.create(
    customer: {
      customer_reference1: customer.customer_reference1
    },
    label_type: "RETURN",
    barcode: {
      barcode: barcode.barcode_number,
      barcode_display: barcode.barcode_display
    },
    client: {
      client_id: client_id,
      client_name: client_name
    },
    routing: {
      delivery_method: {
        delivery_method_id: carrier.delivery_method_code,
        delivery_method_description: carrier.delivery_method_desc
      },
      sort_levels: {
        sort_level1: carrier.sort_level1.strip,
        sort_level2: carrier.sort_level2
      }
    },
    service_offers: [],
    **attrs
  )
end

Private Instance Methods

missing_required_qr_code_attributes?(attrs) click to toggle source
# File lib/hermes_api/resources/drop_off_return_label.rb, line 131
def missing_required_qr_code_attributes?(attrs)
  ([:dimensions, :value, :delivery_address] - attrs.keys).length > 0
end
request_print_in_store_qr_code_error_message() click to toggle source
# File lib/hermes_api/resources/drop_off_return_label.rb, line 135
    def request_print_in_store_qr_code_error_message
      <<~ERR_MESSAGE
        Missing required attributes
        Example:

        label = HermesAPI::DropOffReturnLabel.new(...)

        if label.save
          label.request_print_in_store_qr_code(
            dimensions: {
              depth: 15,
              length: 20,
              width: 15,
              weight: 1
            },
            value: {
              currency: 'GBP',
              amount: 10
            },
            delivery_address: {
              name: 'Don Joe',
              address_line1: 'Real Logic',
              address_line2: '4-4 Ridings Park, Eastern Way',
              country_code: 'GB',
              postcode: 'WS117FJ'
            }
          )
        end
      ERR_MESSAGE
    end