class ZohoInvoiceResource::Formats::Invoice

Public Instance Methods

encode(record, options={}) click to toggle source
# 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