active_zuora 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +22 -1
- data/Rakefile +0 -9
- data/VERSION +1 -1
- data/active_zuora.gemspec +43 -13
- data/lib/active_zuora.rb +5 -10
- data/lib/active_zuora/account.rb +27 -0
- data/lib/active_zuora/amendment.rb +7 -0
- data/lib/active_zuora/bill_run.rb +4 -0
- data/lib/active_zuora/contact.rb +7 -0
- data/lib/active_zuora/invoice.rb +46 -0
- data/lib/active_zuora/invoice_item.rb +26 -0
- data/lib/active_zuora/invoice_item_adjustment.rb +4 -0
- data/lib/active_zuora/invoice_payment.rb +11 -0
- data/lib/active_zuora/payment.rb +18 -0
- data/lib/active_zuora/payment_method.rb +10 -0
- data/lib/active_zuora/product.rb +4 -0
- data/lib/active_zuora/product_rate_plan.rb +9 -0
- data/lib/active_zuora/product_rate_plan_charge.rb +11 -0
- data/lib/active_zuora/product_rate_plan_charge_tier.rb +7 -0
- data/lib/active_zuora/product_rate_plan_charge_tier_data.rb +4 -0
- data/lib/active_zuora/rate_plan.rb +16 -0
- data/lib/active_zuora/rate_plan_charge.rb +44 -0
- data/lib/active_zuora/rate_plan_charge_data.rb +4 -0
- data/lib/active_zuora/rate_plan_charge_tier.rb +4 -0
- data/lib/{zuora → active_zuora}/rate_plan_data.rb +0 -0
- data/lib/active_zuora/refund.rb +4 -0
- data/lib/{zuora → active_zuora}/subscribe_options.rb +0 -0
- data/lib/active_zuora/subscribe_request.rb +13 -0
- data/lib/{zuora → active_zuora}/subscribe_with_existing_account_request.rb +0 -0
- data/lib/active_zuora/subscription.rb +17 -0
- data/lib/{zuora → active_zuora}/subscription_data.rb +0 -0
- data/lib/active_zuora/usage.rb +4 -0
- data/lib/active_zuora/zobject.rb +156 -0
- data/lib/zuora/ZUORA.rb +180 -27
- data/lib/zuora/ZUORADriver.rb +17 -0
- data/lib/zuora/ZUORAMappingRegistry.rb +236 -23
- data/lib/zuora_client.rb +28 -24
- data/lib/zuora_interface.rb +21 -5
- metadata +112 -17
- data/lib/zuora/account.rb +0 -4
- data/lib/zuora/contact.rb +0 -4
- data/lib/zuora/rate_plan.rb +0 -4
- data/lib/zuora/subscribe_request.rb +0 -4
- data/lib/zuora/subscription.rb +0 -4
- data/lib/zuora/zobject.rb +0 -52
data/README.rdoc
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
==
|
1
|
+
== Active Zuora Version 2
|
2
|
+
* This fork has been moved from its {original location}[https://github.com/anfleene/active_zuora] to its {current location}[https://github.com/tstmedia/active_zuora_v1]
|
3
|
+
* The Active Zuora Version 2 gem can be found at https://github.com/tstmedia/active_zuora.
|
4
|
+
|
5
|
+
== Active Zoura Version 1
|
2
6
|
|
3
7
|
Client for Zuora API
|
4
8
|
|
@@ -9,7 +13,24 @@ The fork is adding a new interface to the gem along with removing parts deemed u
|
|
9
13
|
The underlying implementation of the zuora4r gem is still in place but that is going to change in the future.
|
10
14
|
|
11
15
|
|
16
|
+
|
12
17
|
== Installing the Gem
|
13
18
|
$ sudo gem sources -a http://gemcutter.org
|
14
19
|
$ sudo gem install active_zuora
|
15
20
|
|
21
|
+
== Future Releases
|
22
|
+
|
23
|
+
In the short term this gem will hold on to most of the existing zuora api code with more active recordy style additions to its interface
|
24
|
+
In the long term the underlying implementation will be refactored and condensed into something smaller and more idiomatic
|
25
|
+
|
26
|
+
=== Important Missing Features
|
27
|
+
|
28
|
+
Completion of active zuora's CRUD actions on instance methods
|
29
|
+
Support for Zuora's queryMore api call
|
30
|
+
|
31
|
+
Remove weird error handling Anti Pattern that rescues and prints all Exceptions
|
32
|
+
|
33
|
+
BUG:
|
34
|
+
Auto quote where calls
|
35
|
+
|
36
|
+
|
data/Rakefile
CHANGED
@@ -45,12 +45,3 @@ task :test => :check_dependencies
|
|
45
45
|
|
46
46
|
task :default => :test
|
47
47
|
|
48
|
-
require 'rake/rdoctask'
|
49
|
-
Rake::RDocTask.new do |rdoc|
|
50
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
51
|
-
|
52
|
-
rdoc.rdoc_dir = 'rdoc'
|
53
|
-
rdoc.title = "active_zuora #{version}"
|
54
|
-
rdoc.rdoc_files.include('README*')
|
55
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
56
|
-
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0
|
data/active_zuora.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "active_zuora"
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["anfleene"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-02-18"
|
13
13
|
s.description = "A client for Zuora API"
|
14
14
|
s.email = "anfleene@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -22,41 +22,71 @@ Gem::Specification.new do |s|
|
|
22
22
|
"active_zuora.gemspec",
|
23
23
|
"custom_fields.yml",
|
24
24
|
"lib/active_zuora.rb",
|
25
|
+
"lib/active_zuora/account.rb",
|
26
|
+
"lib/active_zuora/amendment.rb",
|
27
|
+
"lib/active_zuora/bill_run.rb",
|
28
|
+
"lib/active_zuora/contact.rb",
|
29
|
+
"lib/active_zuora/invoice.rb",
|
30
|
+
"lib/active_zuora/invoice_item.rb",
|
31
|
+
"lib/active_zuora/invoice_item_adjustment.rb",
|
32
|
+
"lib/active_zuora/invoice_payment.rb",
|
33
|
+
"lib/active_zuora/payment.rb",
|
34
|
+
"lib/active_zuora/payment_method.rb",
|
35
|
+
"lib/active_zuora/product.rb",
|
36
|
+
"lib/active_zuora/product_rate_plan.rb",
|
37
|
+
"lib/active_zuora/product_rate_plan_charge.rb",
|
38
|
+
"lib/active_zuora/product_rate_plan_charge_tier.rb",
|
39
|
+
"lib/active_zuora/product_rate_plan_charge_tier_data.rb",
|
40
|
+
"lib/active_zuora/rate_plan.rb",
|
41
|
+
"lib/active_zuora/rate_plan_charge.rb",
|
42
|
+
"lib/active_zuora/rate_plan_charge_data.rb",
|
43
|
+
"lib/active_zuora/rate_plan_charge_tier.rb",
|
44
|
+
"lib/active_zuora/rate_plan_data.rb",
|
45
|
+
"lib/active_zuora/refund.rb",
|
46
|
+
"lib/active_zuora/subscribe_options.rb",
|
47
|
+
"lib/active_zuora/subscribe_request.rb",
|
48
|
+
"lib/active_zuora/subscribe_with_existing_account_request.rb",
|
49
|
+
"lib/active_zuora/subscription.rb",
|
50
|
+
"lib/active_zuora/subscription_data.rb",
|
51
|
+
"lib/active_zuora/usage.rb",
|
52
|
+
"lib/active_zuora/zobject.rb",
|
25
53
|
"lib/zuora/ZUORA.rb",
|
26
54
|
"lib/zuora/ZUORADriver.rb",
|
27
55
|
"lib/zuora/ZUORAMappingRegistry.rb",
|
28
56
|
"lib/zuora/ZuoraServiceClient.rb",
|
29
|
-
"lib/zuora/account.rb",
|
30
57
|
"lib/zuora/api.rb",
|
31
|
-
"lib/zuora/contact.rb",
|
32
|
-
"lib/zuora/rate_plan.rb",
|
33
|
-
"lib/zuora/rate_plan_data.rb",
|
34
|
-
"lib/zuora/subscribe_options.rb",
|
35
|
-
"lib/zuora/subscribe_request.rb",
|
36
|
-
"lib/zuora/subscribe_with_existing_account_request.rb",
|
37
|
-
"lib/zuora/subscription.rb",
|
38
|
-
"lib/zuora/subscription_data.rb",
|
39
|
-
"lib/zuora/zobject.rb",
|
40
58
|
"lib/zuora_client.rb",
|
41
59
|
"lib/zuora_interface.rb"
|
42
60
|
]
|
43
61
|
s.homepage = "http://github.com/anfleene/active_zuora"
|
44
62
|
s.require_paths = ["lib"]
|
45
63
|
s.requirements = ["none"]
|
46
|
-
s.rubygems_version = "1.8.
|
64
|
+
s.rubygems_version = "1.8.24"
|
47
65
|
s.summary = "Active Zuora"
|
48
66
|
|
49
67
|
if s.respond_to? :specification_version then
|
50
68
|
s.specification_version = 3
|
51
69
|
|
52
70
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
71
|
+
s.add_runtime_dependency(%q<soap4r>, ["~> 1.5"])
|
72
|
+
s.add_runtime_dependency(%q<json_pure>, ["~> 1.4"])
|
73
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
74
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
53
75
|
s.add_runtime_dependency(%q<soap4r>, [">= 1.5.8"])
|
54
76
|
s.add_runtime_dependency(%q<json_pure>, [">= 1.4.6"])
|
55
77
|
else
|
78
|
+
s.add_dependency(%q<soap4r>, ["~> 1.5"])
|
79
|
+
s.add_dependency(%q<json_pure>, ["~> 1.4"])
|
80
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
81
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
56
82
|
s.add_dependency(%q<soap4r>, [">= 1.5.8"])
|
57
83
|
s.add_dependency(%q<json_pure>, [">= 1.4.6"])
|
58
84
|
end
|
59
85
|
else
|
86
|
+
s.add_dependency(%q<soap4r>, ["~> 1.5"])
|
87
|
+
s.add_dependency(%q<json_pure>, ["~> 1.4"])
|
88
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
89
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
60
90
|
s.add_dependency(%q<soap4r>, [">= 1.5.8"])
|
61
91
|
s.add_dependency(%q<json_pure>, [">= 1.4.6"])
|
62
92
|
end
|
data/lib/active_zuora.rb
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
require 'delegate'
|
2
2
|
require 'zuora_client'
|
3
|
-
require '
|
4
|
-
|
5
|
-
require
|
6
|
-
|
7
|
-
|
8
|
-
require 'zuora/subscribe_options'
|
9
|
-
require 'zuora/subscribe_request'
|
10
|
-
require 'zuora/subscribe_with_existing_account_request'
|
11
|
-
require 'zuora/subscription'
|
12
|
-
require 'zuora/subscription_data'
|
3
|
+
require 'active_zuora/zobject.rb'
|
4
|
+
Dir[File.join(File.dirname(__FILE__),"active_zuora","*.rb")].each do |file|
|
5
|
+
require file
|
6
|
+
end
|
7
|
+
|
13
8
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Zuora
|
2
|
+
class Account < ZObject
|
3
|
+
def billTo
|
4
|
+
@billTo ||= Contact.find(self.billToId)
|
5
|
+
end
|
6
|
+
|
7
|
+
def soldTo
|
8
|
+
@soldTo ||= Contact.find(self.soldToId)
|
9
|
+
end
|
10
|
+
|
11
|
+
def subscriptions
|
12
|
+
@subscriptions ||= Subscription.where(:accountid => self.id)
|
13
|
+
end
|
14
|
+
|
15
|
+
def invoices
|
16
|
+
@invoices ||= Invoice.where(:accountid => self.id)
|
17
|
+
end
|
18
|
+
|
19
|
+
def payment_methods
|
20
|
+
@payment_methods ||= PaymentMethod.where(:accountid => self.id)
|
21
|
+
end
|
22
|
+
|
23
|
+
def contacts
|
24
|
+
@contacts ||= Contact.where(:accountid => self.id)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Zuora
|
2
|
+
class Invoice < ZObject
|
3
|
+
def self.extra_attributes(attributes=[])
|
4
|
+
super([:body])
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.create(attributes={})
|
8
|
+
self.client.generate([self.new(attributes).to_zobject]).first
|
9
|
+
end
|
10
|
+
|
11
|
+
def save
|
12
|
+
result = self.class.create(self.attributes)
|
13
|
+
if result[:success]
|
14
|
+
@errors = []
|
15
|
+
__setobj__(self.class.find(result[:id]).to_zobject)
|
16
|
+
else
|
17
|
+
@errors = result[:errors]
|
18
|
+
end
|
19
|
+
result[:success]
|
20
|
+
end
|
21
|
+
|
22
|
+
def errors
|
23
|
+
@errors || []
|
24
|
+
end
|
25
|
+
|
26
|
+
def post
|
27
|
+
return false unless self.id
|
28
|
+
result = self.class.update_attributes(:id => self.id, :status => "Posted").first
|
29
|
+
@errors = result[:errors]
|
30
|
+
result[:success]
|
31
|
+
end
|
32
|
+
|
33
|
+
def invoice_items
|
34
|
+
@invoice_items ||= InvoiceItem.where(:invoiceid => self.id)
|
35
|
+
end
|
36
|
+
|
37
|
+
def account
|
38
|
+
@account ||= Account.find(self.accountId)
|
39
|
+
end
|
40
|
+
|
41
|
+
def payments
|
42
|
+
# Payments, sorted by date.
|
43
|
+
@payments ||= InvoicePayment.where(:invoiceId => self.id).map(&:payment).sort { |a, b| a.effectiveDate <=> b.effectiveDate }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Zuora
|
2
|
+
class InvoiceItem < ZObject
|
3
|
+
|
4
|
+
def invoice
|
5
|
+
@invoice ||= Invoice.find(invoiceId)
|
6
|
+
end
|
7
|
+
|
8
|
+
def rate_plan_charge
|
9
|
+
@rate_plan_charge ||= RatePlanCharge.find(ratePlanChargeId)
|
10
|
+
end
|
11
|
+
|
12
|
+
def adjustments
|
13
|
+
@adjustments ||= InvoiceItemAdjustment.where(:sourceType => 'InvoiceDetail', :sourceId => id)
|
14
|
+
end
|
15
|
+
|
16
|
+
def adjusted_charge_amount
|
17
|
+
@adjusted_charge_amount ||=
|
18
|
+
adjustments.inject(chargeAmount) do |amount, adjustment|
|
19
|
+
# Adjustment types are either Credit or Charge
|
20
|
+
# Credits will have a reducing (subtracting) effect on the invoice item charge.
|
21
|
+
adjustment.type == "Credit" ? amount - adjustment.amount : amount + adjustment.amount
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Zuora
|
2
|
+
class Payment < ZObject
|
3
|
+
|
4
|
+
exclude_query_attributes :appliedInvoiceAmount, :invoiceId
|
5
|
+
|
6
|
+
def account
|
7
|
+
@account ||= Account.find(self.accountId)
|
8
|
+
end
|
9
|
+
|
10
|
+
def payment_method
|
11
|
+
@payment_method ||= PaymentMethod.find(self.paymentMethodId)
|
12
|
+
end
|
13
|
+
|
14
|
+
def invoices
|
15
|
+
@invoices ||= InvoicePayment.where(:paymentId => self.id).map(&:invoice)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Zuora
|
2
|
+
class ProductRatePlanCharge < ZObject
|
3
|
+
def product_rate_plan
|
4
|
+
@product_rate_plan ||= ProductRatePlan.find(self.ProductRatePlanId)
|
5
|
+
end
|
6
|
+
|
7
|
+
def product_rate_plan_charge_tiers
|
8
|
+
@product_rate_plan_charge_tiers ||= ProductRatePlanChargeTier.where(:productRatePlanChargeId => self.id)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Zuora
|
2
|
+
class RatePlan < ZObject
|
3
|
+
def rate_plan_charges
|
4
|
+
@rate_plan_charges ||= RatePlanCharge.where(:ratePlanId => self.id)
|
5
|
+
end
|
6
|
+
|
7
|
+
def subscription
|
8
|
+
@subscription ||= Subscription.find(self.subscriptionId)
|
9
|
+
end
|
10
|
+
|
11
|
+
def product_rate_plan
|
12
|
+
@product_rate_plan ||= ProductRatePlan.find(self.productRatePlanId)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Zuora
|
2
|
+
class RatePlanCharge < ZObject
|
3
|
+
|
4
|
+
exclude_query_attributes :overagePrice, :includedUnits, :discountAmount, :discountPercentage
|
5
|
+
|
6
|
+
def rate_plan
|
7
|
+
@rate_plan ||= RatePlan.find(self.ratePlanId)
|
8
|
+
end
|
9
|
+
|
10
|
+
def product_rate_plan_charge
|
11
|
+
@product_rate_plan_charge ||= ProductRatePlanCharge.find(self.productRatePlanChargeId)
|
12
|
+
end
|
13
|
+
|
14
|
+
def usages
|
15
|
+
@usages ||= Usage.where(:chargeId => id)
|
16
|
+
end
|
17
|
+
|
18
|
+
def unload_usages
|
19
|
+
@usages = nil
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def total_price
|
24
|
+
(quantity || 1) * price
|
25
|
+
end
|
26
|
+
|
27
|
+
def list_price
|
28
|
+
product_rate_plan_charge.product_rate_plan_charge_tiers.first.price
|
29
|
+
end
|
30
|
+
|
31
|
+
def total_list_price
|
32
|
+
(quantity || 1) * list_price
|
33
|
+
end
|
34
|
+
|
35
|
+
def discount?
|
36
|
+
price < list_price
|
37
|
+
end
|
38
|
+
|
39
|
+
def discount_percent
|
40
|
+
list_price.zero? ? nil : (1 - price / list_price) * 100
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|