class Waveapps::Invoice

Constants

ApproveInvoiceQuery
CreateInvoiceQuery
DeleteInvoiceQuery
ListInvoicesQuery
MarkSentInvoiceQuery
SendInvoiceQuery

Public Class Methods

approve_invoice(invoice_id: ) click to toggle source
# File lib/waveapps/invoice.rb, line 399
def self.approve_invoice(invoice_id: )
  response = Waveapps::Api::Client.query(ApproveInvoiceQuery, variables: {
    input: { invoiceId: invoice_id }
  })

  if response.data && response.data.invoice_approve
    return response.data.invoice_approve
  end
  Waveapps::Api.handle_errors(response, :invoice_approve)
end
create_invoice( status: "DRAFT", currency: nil, title: nil, invoice_number: nil, po_number: nil, invoice_date: nil, exchange_rate: nil, due_date: nil, memo: nil, footer: nil, disable_amex_payments: nil, disable_credit_card_payments: nil, disable_bank_payments: nil, item_title: nil, unit_title: nil, price_title: nil, amount_title: nil, hide_name: nil, hide_description: nil, hide_unit: nil, hide_price: nil, hide_amount: nil, items:, business_id:, customer_id: ) click to toggle source
# File lib/waveapps/invoice.rb, line 272
def self.create_invoice(
  status: "DRAFT", currency: nil, title: nil, invoice_number: nil,
  po_number: nil, invoice_date: nil, exchange_rate: nil, due_date: nil,
  memo: nil, footer: nil, disable_amex_payments: nil, disable_credit_card_payments: nil,
  disable_bank_payments: nil, item_title: nil, unit_title: nil, price_title: nil,
  amount_title: nil, hide_name: nil, hide_description: nil, hide_unit: nil,
  hide_price: nil, hide_amount: nil, items:, business_id:, customer_id:
)

  response = Waveapps::Api::Client.query(
    CreateInvoiceQuery, variables: {
      input: {
        businessId: business_id,
        customerId: customer_id,
        items: items.map do |pid|
          {
           productId: pid[:product_id],
           quantity: pid[:quantity],
           description: pid[:description],
           unitPrice: pid[:unit_price],
           taxes: pid[:taxes] && pid[:taxes].map do |tax|
             {
               salesTaxId: tax[:sales_tax_id],
               amount: tax[:amount]
             }
           end
          }
        end,
        status: status,
        currency: currency,
        title: title,
        invoiceNumber: invoice_number,
        poNumber: po_number,
        invoiceDate: invoice_date,
        exchangeRate: exchange_rate,
        dueDate: due_date,
        memo: memo,
        footer: footer,
        disableAmexPayments: disable_amex_payments,
        disableCreditCardPayments: disable_credit_card_payments,
        disableBankPayments: disable_bank_payments,
        itemTitle: item_title,
        unitTitle: unit_title,
        priceTitle: price_title,
        amountTitle: amount_title,
        hideName: hide_name,
        hideDescription: hide_description,
        hideUnit: hide_unit,
        hidePrice: hide_price,
        hideAmount: hide_amount
      }
    })

  if response.data && response.data.invoice_create
    return response.data.invoice_create
  end
  Waveapps::Api.handle_errors(response, :invoice_create)
end
delete_invoice(invoice_id:) click to toggle source
# File lib/waveapps/invoice.rb, line 344
def self.delete_invoice(invoice_id:)
  response = Waveapps::Api::Client.query(DeleteInvoiceQuery, variables:
    { input: { invoiceId: invoice_id }
  })

  if response.data && response.data.invoice_delete
    return response.data.invoice_delete
  end
  Waveapps::Api.handle_errors(response, :invoice_delete)
end
list_invoices(page: 1, page_size: 10, sort: [ "CREATED_AT_DESC"], status: nil, customer_id: nil, currency: nil, source_id: nil, invoice_date_start: nil, invoice_date_end: nil, modified_at_after: nil, modified_at_before: nil, business_id: ) click to toggle source
# File lib/waveapps/invoice.rb, line 135
def self.list_invoices(page: 1, page_size: 10, sort: [ "CREATED_AT_DESC"],
  status: nil, customer_id: nil, currency: nil, source_id: nil,
  invoice_date_start: nil, invoice_date_end: nil, modified_at_after: nil,
  modified_at_before: nil, business_id:
)
  response = Waveapps::Api::Client.query(
    ListInvoicesQuery, variables: {
      businessId: business_id, page: page, pageSize: page_size, sort: sort,
      status: status, customerId: customer_id, currency: currency,
      sourceId: source_id, invoiceDateStart: invoice_date_start,
      invoiceDateEnd: invoice_date_end, modifiedAtAfter: modified_at_after,
      modifiedAtBefore: modified_at_before
    })

  if response.data && response.data.business && response.data.business
    return response.data.business.invoices
  end
  Waveapps::Api.handle_errors(response, :business)
end
mark_as_sent(sent_at: nil, send_method: , invoice_id: ) click to toggle source
# File lib/waveapps/invoice.rb, line 423
def self.mark_as_sent(sent_at: nil, send_method: , invoice_id: )
  response = Waveapps::Api::Client.query(
    MarkSentInvoiceQuery, variables: {
      input: {
        invoiceId: invoice_id,
        sentAt: sent_at,
        sendMethod: send_method
      }
    })

  if response.data && response.data.invoice_mark_sent
    return response.data.invoice_mark_sent
  end
  Waveapps::Api.handle_errors(response, :invoice_mark_sent)
end
send_invoice(subject: "", message: "", attach_pdf: false, invoice_id:, to: ) click to toggle source
# File lib/waveapps/invoice.rb, line 368
def self.send_invoice(subject: "", message: "", attach_pdf: false, invoice_id:, to: )
  response = Waveapps::Api::Client.query(
    SendInvoiceQuery, variables: {
      input: {
        invoiceId: invoice_id,
        to: to,
        attachPDF: attach_pdf,
        subject: subject,
        message: message
      }
    })

  if response.data && response.data.invoice_send
    return response.data.invoice_send
  end
  Waveapps::Api.handle_errors(response, :invoice_send)
end