active_zuora 2.3.0 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +3 -2
- data/lib/active_zuora.rb +1 -0
- data/lib/active_zuora/billing_preview.rb +49 -0
- data/lib/active_zuora/generator.rb +6 -1
- data/lib/active_zuora/version.rb +1 -1
- data/spec/subscribe_integration_spec.rb +10 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65ef7a2fd66b972b6a70886b761192cc1fe479db
|
4
|
+
data.tar.gz: 742f84177e47b462ec319369fe934b2969155c73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a57f894f4afd97482f7f2e03584a8b9839b4a85a1b56c370bb07278d037d9123ff9fb14030213cdf87bda47f68ebb12a36b337b4bf17a36539225fbf6786523a
|
7
|
+
data.tar.gz: 584a68481832b02a117519bdb2a64f68f9ed635685ff80ca2f9dcf008dd31fff12bd48900927016b1b1ee7eac877598e65afd6bbeb872d2254e03a366d3b07e6
|
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
#### v2.3.1
|
2
|
+
* Add billing preview capability
|
3
|
+
* Capitalize first letter of wsdl object name to ensure that it is a valid Ruby constant
|
1
4
|
#### v2.3.0
|
2
5
|
#### v2.2.7
|
3
6
|
#### v2.2.6
|
@@ -10,8 +13,6 @@
|
|
10
13
|
* Fix #43 - Add invoice_payment_data to exclusions list
|
11
14
|
|
12
15
|
> David: : https://github.com/sportngin/active_zuora/pull/44
|
13
|
-
|
14
|
-
#### v2.2.1
|
15
16
|
#### v2.2.0
|
16
17
|
#### v2.1.4
|
17
18
|
#### v2.1.3
|
data/lib/active_zuora.rb
CHANGED
@@ -16,6 +16,7 @@ require 'active_zuora/z_object'
|
|
16
16
|
require 'active_zuora/subscribe'
|
17
17
|
require 'active_zuora/amend'
|
18
18
|
require 'active_zuora/generate'
|
19
|
+
require 'active_zuora/billing_preview'
|
19
20
|
require 'active_zuora/batch_subscribe'
|
20
21
|
require 'active_zuora/collection_proxy'
|
21
22
|
require 'active_zuora/lazy_attr'
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module ActiveZuora
|
2
|
+
module BillingPreview
|
3
|
+
|
4
|
+
# This is meant to be included onto an BillingPreviewRequest class.
|
5
|
+
# Returns a BillingPreviewResponse object on success.
|
6
|
+
# Result hash is stored in #result.
|
7
|
+
# If failure, errors will be present on object.
|
8
|
+
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
included do
|
12
|
+
include Base
|
13
|
+
attr_accessor :result
|
14
|
+
end
|
15
|
+
|
16
|
+
def billing_preview
|
17
|
+
self.result = self.class.connection.request(:billing_preview) do |soap|
|
18
|
+
soap.body do |xml|
|
19
|
+
build_xml(xml, soap,
|
20
|
+
:namespace => soap.namespace,
|
21
|
+
:element_name => :requests,
|
22
|
+
:force_type => true)
|
23
|
+
end
|
24
|
+
end[:billing_preview_response][:results]
|
25
|
+
|
26
|
+
if result[:success]
|
27
|
+
clear_changed_attributes
|
28
|
+
filtered_invoice_items = self.result[:invoice_item].map do |invoice_item|
|
29
|
+
#Filter out data in the return value that are not valid invoice item fields such as
|
30
|
+
# :"@xmlns:ns2"=>"http://object.api.zuora.com/",
|
31
|
+
# :"@xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance",
|
32
|
+
# :"@xsi:type"=>"ns2:InvoiceItem"
|
33
|
+
invoice_item.select{|key, v| ActiveZuora::InvoiceItem.field_names.include?(key)}
|
34
|
+
end
|
35
|
+
ActiveZuora::BillingPreviewResult.new(self.result.merge(invoice_item: filtered_invoice_items))
|
36
|
+
else
|
37
|
+
add_zuora_errors(result[:errors])
|
38
|
+
false
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def billing_preview!
|
43
|
+
billing_preview.tap do |preview|
|
44
|
+
raise "Could not billing preview: #{errors.full_messages.join ', '}" unless preview
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -30,6 +30,7 @@ module ActiveZuora
|
|
30
30
|
# Skip the zObject base class, we define our own.
|
31
31
|
next if class_name == "zObject"
|
32
32
|
|
33
|
+
class_name[0] = class_name[0].upcase
|
33
34
|
zuora_class = Class.new
|
34
35
|
@class_nesting.const_set(class_name, zuora_class)
|
35
36
|
@classes << zuora_class
|
@@ -72,7 +73,7 @@ module ActiveZuora
|
|
72
73
|
:zuora_name => zuora_name, :array => is_array,
|
73
74
|
:class_name => zuora_class.nested_class_name(field_type.split(':').last)
|
74
75
|
else
|
75
|
-
puts "
|
76
|
+
puts "Unknown field type: #{field_type}"
|
76
77
|
end
|
77
78
|
end # each element
|
78
79
|
|
@@ -156,6 +157,10 @@ module ActiveZuora
|
|
156
157
|
exclude_from_queries :product_rate_plan_charge_id
|
157
158
|
end
|
158
159
|
|
160
|
+
customize 'BillingPreviewRequest' do
|
161
|
+
include BillingPreview
|
162
|
+
end
|
163
|
+
|
159
164
|
customize 'InvoiceItemAdjustment' do
|
160
165
|
exclude_from_queries :customer_name, :customer_number
|
161
166
|
end
|
data/lib/active_zuora/version.rb
CHANGED
@@ -121,7 +121,7 @@ describe "Subscribe" do
|
|
121
121
|
account.delete
|
122
122
|
end
|
123
123
|
|
124
|
-
it "Can successfully subscribe and generate an invoice" do
|
124
|
+
it "Can successfully subscribe and generate a bill preview and an invoice" do
|
125
125
|
|
126
126
|
subscribe_request = Z::SubscribeRequest.new(
|
127
127
|
:account => {
|
@@ -200,6 +200,15 @@ describe "Subscribe" do
|
|
200
200
|
expect(amend_request.amendments.first.new_record?).to be_falsey
|
201
201
|
expect(amend_request.result).to be_present
|
202
202
|
|
203
|
+
billing_preview_request = Z::BillingPreviewRequest.new(
|
204
|
+
account_id: subscribe_request.account.id,
|
205
|
+
target_date: Date.today + 2.months
|
206
|
+
)
|
207
|
+
|
208
|
+
billing_preview_result = billing_preview_request.billing_preview!
|
209
|
+
expect(billing_preview_result).to be_present
|
210
|
+
expect(billing_preview_result.invoice_item).to be_present
|
211
|
+
|
203
212
|
invoice = Z::Invoice.new(
|
204
213
|
account_id: subscribe_request.account.id,
|
205
214
|
invoice_date: Date.today,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_zuora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ed Lebert
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-11-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: savon
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- lib/active_zuora/base.rb
|
120
120
|
- lib/active_zuora/batch_subscribe.rb
|
121
121
|
- lib/active_zuora/belongs_to_associations.rb
|
122
|
+
- lib/active_zuora/billing_preview.rb
|
122
123
|
- lib/active_zuora/collection_proxy.rb
|
123
124
|
- lib/active_zuora/connection.rb
|
124
125
|
- lib/active_zuora/fields.rb
|