class Harvest::API::InvoiceMessages

Public Instance Methods

all(invoice) click to toggle source
# File lib/harvest/api/invoice_messages.rb, line 7
def all(invoice)
  response = request(:get, credentials, "/invoices/#{invoice.to_i}/messages")
  api_model.parse(response.parsed_response)
end
create(message) click to toggle source
# File lib/harvest/api/invoice_messages.rb, line 17
def create(message)
  message = api_model.wrap(message)
  response = request(:post, credentials, "/invoices/#{message.invoice_id}/messages", :body => message.to_json)
  id = response.headers["location"].match(/\/.*\/(\d+)\/.*\/(\d+)/)[2]
  find(message.invoice_id, id)
end
delete(message) click to toggle source
# File lib/harvest/api/invoice_messages.rb, line 24
def delete(message)
  request(:delete, credentials, "/invoices/#{message.invoice_id}/messages/#{message.to_i}")
  message.id
end
find(invoice, message) click to toggle source
# File lib/harvest/api/invoice_messages.rb, line 12
def find(invoice, message)
  response = request(:get, credentials, "/invoices/#{invoice.to_i}/messages/#{message.to_i}")
  api_model.parse(response.parsed_response).first
end
mark_as_closed(message) click to toggle source

Create a message and mark an open invoice as closed (writing an invoice off)

@param [Harvest::InvoiceMessage] The message you want to send @return [Harvest::InvoiceMessage] The sent message

# File lib/harvest/api/invoice_messages.rb, line 41
def mark_as_closed(message)
  send_status_message(message, 'mark_as_closed')
end
mark_as_draft(message) click to toggle source

Create a message for marking an open invoice as draft

@param [Harvest::InvoiceMessage] The message you want to send @return [Harvest::InvoiceMessage] The sent message

# File lib/harvest/api/invoice_messages.rb, line 57
def mark_as_draft(message)
  send_status_message(message, 'mark_as_draft')
end
mark_as_sent(message) click to toggle source

Create a message for marking an invoice as sent.

@param [Harvest::InvoiceMessage] The message you want to send @return [Harvest::InvoiceMessage] The sent message

# File lib/harvest/api/invoice_messages.rb, line 33
def mark_as_sent(message)
  send_status_message(message, 'mark_as_sent')
end
re_open(message) click to toggle source

Create a message and mark a closed (written-off) invoice as open

@param [Harvest::InvoiceMessage] The message you want to send @return [Harvest::InvoiceMessage] The sent message

# File lib/harvest/api/invoice_messages.rb, line 49
def re_open(message)
  send_status_message(message, 're_open')
end

Private Instance Methods

send_status_message(message, action) click to toggle source
# File lib/harvest/api/invoice_messages.rb, line 63
def send_status_message(message, action)
  message = api_model.wrap(message)
  response = request( :post, 
                      credentials, 
                      "/invoices/#{message.invoice_id}/messages/#{action}",
                      :body => message.to_json
                    )
  message
end