module Invoicexpress::Client::SimplifiedInvoices

Public Instance Methods

create_simplified_invoice(simplified_invoice, options={}) click to toggle source

Creates a new simplified invoice. Also allows to create a new client and/or new items in the same request. If the client 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. Portuguese accounts should also send the IVA exemption reason if the invoice contains exempt items(IVA 0%)

@param simplified_invoice [Invoicexpress::Models::SimplifiedInvoice] The simplified invoice to create @return [Invoicexpress::Models::SimplifiedInvoice] The created simplified invoice @raise Invoicexpress::Unauthorized When the client is unauthorized @raise Invoicexpress::UnprocessableEntity When there are errors on the submission

# File lib/invoicexpress/client/simplified_invoices.rb, line 62
def create_simplified_invoice(simplified_invoice, options={})
  raise(ArgumentError, "simplified invoice has the wrong type") unless simplified_invoice.is_a?(Invoicexpress::Models::SimplifiedInvoice)

  params = { :klass => Invoicexpress::Models::SimplifiedInvoice, :body  => simplified_invoice }
  post("simplified_invoices.xml", params.merge(options))
end
simplified_invoice(simplified_invoice_id, options={}) click to toggle source

Returns all the information about a simplified invoice:

  • Basic information (date, status, sequence number)

  • Client

  • Document items

  • Document timeline

Document timeline is composed by:

  • Date, time and the user who created it

  • Type of the event

The complete list of timeline events is:

  • create

  • edited

  • send_email

  • canceled

  • deleted

  • settled

  • second_copy

  • archived

  • unarchived

  • comment

@param simplified_invoice_id [String] Requested simplified invoice id @return [Invoicexpress::Models::SimplifiedInvoice] The requested simplified invoice @raise Invoicexpress::Unauthorized When the client is unauthorized @raise Invoicexpress::NotFound When the simplified_invoice doesn't exist

# File lib/invoicexpress/client/simplified_invoices.rb, line 45
def simplified_invoice(simplified_invoice_id, options={})
  params = { :klass => Invoicexpress::Models::SimplifiedInvoice }

  get("simplified_invoices/#{simplified_invoice_id}.xml", params.merge(options))
end
simplified_invoice_mail(simplified_invoice_id, message, options={}) click to toggle source

Sends the simplified invoice through email

@param simplified_invoice_id [String] The simplified invoice 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 simplified invoice doesn't exist

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

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

Returns all your simplified invoices

@option options [Integer] page (1) You can ask a specific page of simplified invoices

@return [Invoicexpress::Models::SimplifiedInvoices] A struct with results (pagination) and all the simplified invoices @raise Invoicexpress::Unauthorized When the client is unauthorized

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

  get("simplified_invoices.xml", params.merge(options))
end
update_simplified_invoice(simplified_invoice, options={}) click to toggle source

Updates a simplified invoice It also allows you to create a new client and/or items in the same request. If the client name does not exist a new client is created. Regarding item taxes, if the tax name is not found, no tax will be applied to that item. If item does not exist with the given name, a new one will be created. If item exists it will be updated with the new values Be careful when updating the document items, any missing items from the original document will be deleted.

@param simplified_invoice [Invoicexpress::Models::SimplifiedInvoice] The cash simplified invoice 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 simplified invoice doesn't exist

# File lib/invoicexpress/client/simplified_invoices.rb, line 81
def update_simplified_invoice(simplified_invoice, options={})
  raise(ArgumentError, "simplified invoice has the wrong type") unless simplified_invoice.is_a?(Invoicexpress::Models::SimplifiedInvoice)
  if !simplified_invoice.id
    raise ArgumentError, "Invoice ID is required"
  end
  params = { :klass => Invoicexpress::Models::SimplifiedInvoice, :body => simplified_invoice.to_core }
  put("simplified_invoices/#{simplified_invoice.id}.xml", params.merge(options))
end
update_simplified_invoice_state(simplified_invoice_id, simplified_invoice_state, options={}) click to toggle source

Changes the state of a simplified invoice. Possible state transitions:

  • draft to final – finalized

  • draft to deleted – deleted

  • settled to final – unsettled

  • final to second copy – second_copy

  • final or second copy to canceled – canceled

  • final or second copy to settled – settled

Any other transitions will fail. When canceling a simplified invoice you must specify a reason.

@param simplified_invoice_id [String] The simplified invoice id to change @param simplified_invoice_state [Invoicexpress::Models::InvoiceState] The new state @return [Invoicexpress::Models::SimplifiedInvoice] The updated simplified invoice @raise Invoicexpress::Unauthorized When the client is unauthorized @raise Invoicexpress::UnprocessableEntity When there are errors on the submission @raise Invoicexpress::NotFound When the simplified invoice doesn't exist

# File lib/invoicexpress/client/simplified_invoices.rb, line 107
def update_simplified_invoice_state(simplified_invoice_id, simplified_invoice_state, options={})
  raise(ArgumentError, "simplified invoice state has the wrong type") unless simplified_invoice_state.is_a?(Invoicexpress::Models::InvoiceState)

  params = { :klass => Invoicexpress::Models::SimplifiedInvoice, :body => simplified_invoice_state }
  put("simplified_invoices/#{simplified_invoice_id}/change-state.xml", params.merge(options))
end