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