Class: ZohoInvoiceResource::Formats::Invoice

Inherits:
Base
  • Object
show all
Defined in:
lib/zoho_invoice_resource/formats/invoice.rb

Instance Attribute Summary

Attributes inherited from Base

#element_name

Instance Method Summary collapse

Methods inherited from Base

#decode, #initialize, #mime_type

Constructor Details

This class inherits a constructor from ZohoInvoiceResource::Formats::Base

Instance Method Details

#encode(record, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/zoho_invoice_resource/formats/invoice.rb', line 4

def encode(record, options={})
  options[:root] = options[:root].try(:camelize)
  # updatable attributes restricted
  data = {
    'InvoiceID' => record.invoice_id,
    'InvoiceDate' => normalize_date(record.invoice_date),
    'DueDate' => normalize_date(record.due_date),
    'InvoiceItems' => [],
    'CustomFields' => {}
  }
  record.invoice_items.each do |invoice_item|
    item = {
      'ItemID' => invoice_item.item_id,
      'ItemDescription' => invoice_item.item_description,
      'Price' => invoice_item.price,
      'Quantity' => invoice_item.quantity
    }
    data['InvoiceItems'] << item
  end if record.invoice_items
  if record.custom_fields.custom_label1
    # maybe can not write CustomLabel via API
    #data['CustomFields']['CustomLabel1'] = record.custom_fields.custom_label1
    data['CustomFields']['CustomField1'] = record.custom_fields.custom_field1
  end
  if record.custom_fields.custom_label2
    #data['CustomFields']['CustomLabel2'] = record.custom_fields.custom_label2
    data['CustomFields']['CustomField2'] = record.custom_fields.custom_field2
  end
  if record.custom_fields.custom_label3
    #data['CustomFields']['CustomLabel3'] = record.custom_fields.custom_label3
    data['CustomFields']['CustomField3'] = record.custom_fields.custom_field3
  end
  remove_empty!(data)
  data.to_xml(options)
end