Module: ActiveZuora::BillingPreview

Extended by:
ActiveSupport::Concern
Defined in:
lib/active_zuora/billing_preview.rb

Instance Method Summary collapse

Instance Method Details

#billing_previewObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/active_zuora/billing_preview.rb', line 16

def billing_preview
  self.result = self.class.connection.request(:billing_preview) do |soap|
    soap.body do |xml|
      build_xml(xml, soap,
        :namespace => soap.namespace,
        :element_name => :requests,
        :force_type => true)
    end
  end[:billing_preview_response][:results]

  if result[:success]
    clear_changed_attributes
    filtered_invoice_items = self.result[:invoice_item].map do |invoice_item|
      #Filter out data in the return value that are not valid invoice item fields such as
      #    :"@xmlns:ns2"=>"http://object.api.zuora.com/",
      #    :"@xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance",
      #    :"@xsi:type"=>"ns2:InvoiceItem"
      invoice_item.select{|key, v| ActiveZuora::InvoiceItem.field_names.include?(key)}
    end
    ActiveZuora::BillingPreviewResult.new(self.result.merge(invoice_item: filtered_invoice_items))
  else
    add_zuora_errors(result[:errors])
    false
  end
end

#billing_preview!Object



42
43
44
45
46
# File 'lib/active_zuora/billing_preview.rb', line 42

def billing_preview!
  billing_preview.tap do |preview|
    raise "Could not billing preview: #{errors.full_messages.join ', '}" unless preview
  end
end