class Apruve::Order

Attributes

accepts_payment_terms[RW]
accepts_payments_via[RW]
amount_cents[RW]
created_at[RW]
currency[RW]
default_payment_method[RW]
expire_at[RW]
final_state_at[RW]
finalize_on_create[RW]
id[RW]
invoice_on_create[RW]
merchant_id[RW]
merchant_order_id[RW]
order_items[RW]
payment_term[RW]
po_number[RW]
secure_hash[RW]
shipping_cents[RW]
shopper_id[RW]
status[RW]
tax_cents[RW]
updated_at[RW]

Public Class Methods

cancel!(id) click to toggle source
# File lib/apruve/resources/order.rb, line 46
def self.cancel!(id)
  response = Apruve.post("orders/#{id}/cancel")
  logger.debug response.body
  Order.new(response.body)
end
finalize!(id) click to toggle source
# File lib/apruve/resources/order.rb, line 31
def self.finalize!(id)
  response = Apruve.post("orders/#{id}/finalize")
  logger.debug response.body
  Order.new(response.body)
end
find(id) click to toggle source
# File lib/apruve/resources/order.rb, line 8
def self.find(id)
  response = Apruve.get("orders/#{id}")
  logger.debug response.body
  Order.new(response.body)
end
find_all(merchant_order_id = nil) click to toggle source
# File lib/apruve/resources/order.rb, line 14
def self.find_all(merchant_order_id = nil)
  if merchant_order_id.nil?
    response = Apruve.get('orders')
  else
    response = Apruve.get("orders?merchant_order_id=#{merchant_order_id}")
  end
  logger.debug response.body
  response.body.map { |order| Order.new(order) }
end
find_by_hash(hash) click to toggle source
# File lib/apruve/resources/order.rb, line 24
def self.find_by_hash(hash)
  response = Apruve.get("orders?secure_hash=#{hash}")
  logger.debug response.body
  orders = response.body.map { |order| Order.new(order) }
  orders.max_by { |order| order.created_at }
end
invoices_for(order_id) click to toggle source
# File lib/apruve/resources/order.rb, line 37
def self.invoices_for(order_id)
  response = Apruve.get("orders/#{order_id}/invoices")
  ret = []
  response.body.each do |i|
    ret << Invoice.new(i)
  end
  ret
end
new(params) click to toggle source
Calls superclass method Apruve::ApruveObject::new
# File lib/apruve/resources/order.rb, line 58
def initialize(params)
  super
  # hydrate line items if appropriate
  if @order_items.nil?
    @order_items = []
  elsif @order_items.is_a?(Array) && @order_items.first.is_a?(Hash)
    hydrated_items = []
    @order_items.each do |item|
      hydrated_items << Apruve::OrderItem.new(item)
    end
    @order_items = hydrated_items
  end
end

Public Instance Methods

payment_terms() click to toggle source

The field is actually named 'payment_term', but some integrations are currently using 'payment_terms'. Pass those requests through to the correct attribute.

# File lib/apruve/resources/order.rb, line 109
def payment_terms
  self.payment_term
end
payment_terms=(pt) click to toggle source
# File lib/apruve/resources/order.rb, line 113
def payment_terms=(pt)
  self.payment_term=pt
end
save!() click to toggle source
# File lib/apruve/resources/order.rb, line 78
def save!
  validate
  response = Apruve.post('orders', self.to_json)
  self.id = response.body['id']
  self.status = response.body['status']
  self.created_at = response.body['created_at']
end
update!() click to toggle source
# File lib/apruve/resources/order.rb, line 52
def update!
  response = Apruve.patch("orders/#{id}", {order: self}.to_json )
  logger.debug response.body
  initialize response.body
end
validate() click to toggle source
# File lib/apruve/resources/order.rb, line 72
def validate
  errors = []
  errors << 'merchant_id must be set' if merchant_id.nil?
  raise Apruve::ValidationError.new(errors) if errors.length > 0
end
value_string() click to toggle source
# File lib/apruve/resources/order.rb, line 86
def value_string
  # add each field in the PR
  str = "#{merchant_id}#{merchant_order_id}#{amount_cents}#{currency}#{tax_cents}#{shipping_cents}#{expire_at}#{accepts_payment_terms}#{finalize_on_create}#{invoice_on_create}"

  # add the line items
  self.order_items.each do |item|
    str += "#{item.title}#{item.plan_code}#{item.price_total_cents}#{item.price_ea_cents}"\
    "#{item.quantity}#{item.merchant_notes}#{item.description}#{item.variant_info}#{item.sku}"\
    "#{item.vendor}#{item.view_product_url}"
  end

  str
end