class Smartsend::Shipment

Attributes

agent[RW]
currency[RW]
error[RW]
internal_id[RW]
internal_reference[RW]
labels_url[RW]
parcels[RW]
receiver[RW]
sender[RW]
services[RW]
shipping_carrier[RW]
shipping_date[RW]
shipping_method[RW]
shipping_price_excluding_tax[RW]
shipping_price_including_tax[RW]
subtotal_price_excluding_tax[RW]
subtotal_price_including_tax[RW]
success[RW]
total_price_excluding_tax[RW]
total_price_including_tax[RW]
total_tax_amount[RW]

Public Class Methods

new(args={}) click to toggle source
# File lib/smartsend/shipment.rb, line 10
def initialize(args={})
  args.each do |k, v|
    instance_variable_set "@#{k}", v
  end

  @parcels ||= []
end

Public Instance Methods

save_and_create_label!(account: nil) click to toggle source
# File lib/smartsend/shipment.rb, line 22
def save_and_create_label!(account: nil)
  response = Smartsend::Client.new(account).post('shipments/labels', self.serialize)

  if response.success?
    @success = true
    @labels_url = response.dig('data', 'pdf', 'link')

    response['data']['parcels'].each do |parcel_response|
      parcel = parcels.find do |item|
        item.internal_id.to_s == parcel_response['parcel_internal_id'].to_s
      end

      parcel&.label_url = parcel_response.dig('pdf', 'link')
      parcel&.tracking_code = parcel_response['tracking_code']
      parcel&.tracking_link = parcel_response['tracking_link']

    end
  else
    self.error = Smartsend::RequestError.build(response)
  end
end
serialize() click to toggle source
# File lib/smartsend/shipment.rb, line 44
def serialize
  {
    :internal_id                   => internal_id,
    :internal_reference            => internal_reference,
    :shipping_carrier              => shipping_carrier,
    :shipping_method               => shipping_method,
    :shipping_date                 => shipping_date,
    :sender                        => sender&.serialize,
    :receiver                      => receiver&.serialize,
    :agent                         => agent&.serialize,
    :parcels                       => parcels.map(&:serialize),
    :services                      => services&.serialize,
    :subtotal_price_excluding_tax  => subtotal_price_excluding_tax,
    :subtotal_price_including_tax  => subtotal_price_including_tax,
    :shipping_price_excluding_tax  => shipping_price_excluding_tax,
    :shipping_price_including_tax  => shipping_price_including_tax,
    :total_price_excluding_tax     => total_price_excluding_tax,
    :total_price_including_tax     => total_price_including_tax,
    :total_tax_amount              => total_tax_amount,
    :currency                      => currency
  }
end
success?() click to toggle source
# File lib/smartsend/shipment.rb, line 18
def success?
  success
end