module ActiveZuora::Base

Attributes

connection[RW]
namespace[RW]
zuora_object_name[W]

Public Instance Methods

add_zuora_errors(zuora_errors) click to toggle source
# File lib/active_zuora/base.rb, line 59
def add_zuora_errors(zuora_errors)
  return if zuora_errors.blank?
  zuora_errors = [zuora_errors] unless zuora_errors.is_a?(Array)
  zuora_errors.each { |error| errors.add(:base, error[:message].capitalize) }
end
build_xml(xml, soap, options={}) click to toggle source
# File lib/active_zuora/base.rb, line 34
def build_xml(xml, soap, options={})
  namespace = options.delete(:namespace) || self.namespace
  qualifier = soap.namespace_by_uri(namespace)
  custom_element_name = options.delete(:element_name)
  element_name = custom_element_name || zuora_object_name
  attributes = options.delete(:force_type) ? 
    { "xsi:type" => "#{qualifier}:#{zuora_object_name}" } : {}

  xml.tag!(qualifier, element_name.to_sym, attributes) do
    xml_field_names.map { |field_name| get_field!(field_name) }.sort(&method(:fields_order)).each do |field|
      field.build_xml(xml, soap, send(field.name), options)
    end
  end
end
fields_order(a, b) click to toggle source
# File lib/active_zuora/base.rb, line 49
def fields_order(a, b)
  if send(a.name) == nil
    send(b.name) == nil ? 0 : -1
  elsif a.name.to_sym == :id
    send(b.name) == nil ? 1 : -1
  else
    (b.name.to_sym == :id || send(b.name) == nil) ? 1 : 0
  end
end
xml_field_names() click to toggle source
# File lib/active_zuora/base.rb, line 27
def xml_field_names
  # Which field names should be rendered during build_xml.
  # Choose only field names that have been changed.
  # Make sure the order in fields is maintained.
  field_names & changed.map(&:to_sym)
end