module Invoicexpress::Client::PurchaseOrders

Public Instance Methods

create_purchase_order(purchase_order, options={}) click to toggle source

Creates a new purchase order. Creates a new purchase order. Also allows to create a new supplier and/or new items in the same request. If the supplier name does not exist a new one is created. If items do not exist with the given names, new ones will be created. If item name already exists, the item is updated with the new values. Regarding item taxes, if the tax name is not found, no tax is applyed to that item.

@param purchase_order [Invoicexpress::Models::PurchaseOrder] The PurchaseOrder to create
@return Invoicexpress::Models::PurchaseOrder The PurchaseOrder
@raise Invoicexpress::Unauthorized When the client is unauthorized
@raise Invoicexpress::UnprocessableEntity When there are errors on the submission
# File lib/invoicexpress/client/purchase_orders.rb, line 28
def create_purchase_order(purchase_order, options={})
  raise(ArgumentError, "purchase order has the wrong type") unless purchase_order.is_a?(Invoicexpress::Models::PurchaseOrder)

  params = { :klass => Invoicexpress::Models::PurchaseOrder, :body => purchase_order }
  post("purchase_orders.xml", params.merge(options))
end
purchase_order(purchase_order, options={}) click to toggle source

Returns a specific purchase order.

@param purchase_order [Invoicexpress::Models::PurchaseOrder, String] The purchase order or purchase orderID @return Invoicexpress::Models::PurchaseOrder The PurchaseOrder @raise Invoicexpress::Unauthorized When the client is unauthorized @raise Invoicexpress::NotFound When the purchase_order doesn't exist

# File lib/invoicexpress/client/purchase_orders.rb, line 41
def purchase_order(purchase_order, options={})
  params = { :klass => Invoicexpress::Models::PurchaseOrder }

  get("purchase_orders/#{id_from_purchase_order(purchase_order)}.xml", params.merge(options))
end
purchase_order_mail(purchase_order_id, message, options={}) click to toggle source

Sends the purchase order by email

@param purchase_order_id [String] The credit note id to send @param message [Invoicexpress::Models::Message] The message to send @raise Invoicexpress::Unauthorized When the client is unauthorized @raise Invoicexpress::UnprocessableEntity When there are errors on the submission @raise Invoicexpress::NotFound When the credit note doesn't exist

# File lib/invoicexpress/client/purchase_orders.rb, line 105
def purchase_order_mail(purchase_order_id, message, options={})
  raise(ArgumentError, "message has the wrong type") unless message.is_a?(Invoicexpress::Models::Message)

  params = { :body => message, :klass => Invoicexpress::Models::PurchaseOrder }
  put("purchase_orders/#{purchase_order_id}/email-document.xml", params.merge(options))
end
purchase_orders(options = {}) click to toggle source

Returns all your purchase orders. @option options [Integer] page (1) You can ask a specific page of PurchaseOrders

@return [Array<Invoicexpress::Models::PurchaseOrder>] An array with all the PurchaseOrders @raise Invoicexpress::Unauthorized When the client is unauthorized

# File lib/invoicexpress/client/purchase_orders.rb, line 11
def purchase_orders(options = {})
  params = { :page => 1, :klass => Invoicexpress::Models::PurchaseOrder }

  get("purchase_orders.xml", params.merge(options))
end
update_purchase_order(purchase_order, options={}) click to toggle source
Updates a purchase order

Updates a purchase order. Also allows to create a new supplier and/or new items in the same request. If the supplier name does not exist a new one is created. If items do not exist with the given names, new ones will be created. If item name already exists, the item is updated with the new values. Regarding item taxes, if the tax name is not found, no tax is applyed to that item. Be careful when updating the invoice items, any missing items from the original invoice will be deleted.

@param purchase_order [Invoicexpress::Models::PurchaseOrder] The Purchase Order to update
@raise Invoicexpress::Unauthorized When the client is unauthorized
@raise Invoicexpress::UnprocessableEntity When there are errors on the submission
@raise Invoicexpress::NotFound When the credit note doesn't exist
# File lib/invoicexpress/client/purchase_orders.rb, line 59
def update_purchase_order(purchase_order, options={})
  raise(ArgumentError, "purchase order has the wrong type") unless purchase_order.is_a?(Invoicexpress::Models::PurchaseOrder)

  if !purchase_order.id
    raise ArgumentError, "Purchase Order ID is required"
  end
  params = { :klass => Invoicexpress::Models::PurchaseOrder, :body => purchase_order.to_core_purchase_order }
  put("purchase_orders/#{purchase_order.id}.xml", params.merge(options))
end
update_purchase_order_state(purchase_order_id, purchase_order_state, options={}) click to toggle source
Changes the state of a purchase order.

Possible state transitions:

  • draft to final – finalized

  • draft to deleted – deleted

  • final to second_copy – second_copy

  • final to accepted – accepted

  • final to refused – refused

  • final to canceled – canceled

  • second_copy to canceled – canceled

  • accepted to refused – refused

  • accepted to completed – completed

  • refused to canceled – canceled

  • refused to accepted – accepted

Any other transitions will fail. When canceling an purchase order you must specify a reason.

@param purchase_order_id [String] The purchase order id to change
@param purchase_order_state [Invoicexpress::Models::InvoiceState] The new state
@return [Invoicexpress::Models::PurchaseOrder] The updated Purchase Order
@raise Invoicexpress::Unauthorized When the client is unauthorized
@raise Invoicexpress::UnprocessableEntity When there are errors on the submission
@raise Invoicexpress::NotFound When the credit note doesn't exist
# File lib/invoicexpress/client/purchase_orders.rb, line 91
def update_purchase_order_state(purchase_order_id, purchase_order_state, options={})
  raise(ArgumentError, "purchase_order_state has the wrong type") unless purchase_order_state.is_a?(Invoicexpress::Models::InvoiceState)

  params = { :klass => Invoicexpress::Models::PurchaseOrder, :body => purchase_order_state }
  put("purchase_orders/#{purchase_order_id}/change-state.xml", params.merge(options))
end

Private Instance Methods

id_from_purchase_order(item) click to toggle source
# File lib/invoicexpress/client/purchase_orders.rb, line 113
def id_from_purchase_order(item)
  if item.is_a?(Invoicexpress::Models::PurchaseOrder)
    item.id
  elsif item.is_a?(String)
    item
  elsif item.is_a?(Integer)
    item.to_s
  else
    raise ArgumentError, "Cannot get Purchase Order id from #{item}"
  end
end