Class: TFSO::Invoice

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/tfso/invoice.rb

Constant Summary collapse

URL =
'https://api.24sevenoffice.com/Economy/InvoiceOrder/V001/InvoiceService.asmx?wsdl'

Instance Method Summary collapse

Methods included from Helpers

#intialize_savon_client, #savon_client, #session_id, #session_id=

Constructor Details

#initialize(auth) ⇒ Invoice

Returns a new instance of Invoice.



8
9
10
11
# File 'lib/tfso/invoice.rb', line 8

def initialize(auth)
  self.session_id = auth.session_id
  intialize_savon_client
end

Instance Method Details

#create(invoice, items) ⇒ Object



43
44
45
46
# File 'lib/tfso/invoice.rb', line 43

def create(invoice, items)
  response = savon_client.call(:save_invoices, message: {invoices: [{InvoiceOrder: transform_attributes(invoice, items) }] }, cookies: @cookies)
  response.body[:save_invoices_response][:save_invoices_result][:invoice_order]
end

#find(search_params) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/tfso/invoice.rb', line 13

def find(search_params)
  response = savon_client.call(:get_invoices, message: {searchParams: search_params, invoiceReturnProperties: {string: ['OrderId', 'InvoiceId', 'CustomerId', 'OrderStatus', 'DateOrdered', 'DateInvoiced', 'PaymentTime', 'CustomerReferenceNo', 'IncludeVAT', 'YourReference', 'OrderTotalIncVat', 'OrderTotalVat', 'InvoiceTitle', 'InvoiceText', 'Paid', 'Currency', 'PaymentMethodId', 'PaymentAmount', 'TypeOfSaleId', 'Distributor', 'DistributionMethod', 'InvoiceEmailAddress']}, rowReturnProperties: {string: ['ProductId', 'VatRate', 'Price', 'Name', 'DiscountRate', 'Quantity']} }, cookies: @cookies)
  result = response.body[:get_invoices_response][:get_invoices_result]
  if result
    if result[:invoice_order].class == Hash
      [result[:invoice_order]]
    else
      result[:invoice_order]
    end
  else
    []
  end
end

#find_by_invoice_id(id) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/tfso/invoice.rb', line 27

def find_by_invoice_id(id)
  if invoice = find(InvoiceIds: {int: [id]})
    invoice.first
  else
    false
  end
end

#find_by_order_id(id) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/tfso/invoice.rb', line 35

def find_by_order_id(id)
  if invoice = find(OrderIds: {int: [id]})
    invoice.first
  else
    false
  end
end