active_zuora 1.5.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/Gemfile.lock +57 -0
- data/README.md +155 -0
- data/Rakefile +6 -22
- data/TODO.md +2 -0
- data/active_zuora.gemspec +25 -68
- data/lib/active_zuora.rb +37 -6
- data/lib/active_zuora/amend.rb +43 -0
- data/lib/active_zuora/base.rb +73 -0
- data/lib/active_zuora/belongs_to_associations.rb +56 -0
- data/lib/active_zuora/connection.rb +41 -0
- data/lib/active_zuora/fields.rb +122 -0
- data/lib/active_zuora/fields/array_field_decorator.rb +28 -0
- data/lib/active_zuora/fields/boolean_field.rb +12 -0
- data/lib/active_zuora/fields/date_time_field.rb +19 -0
- data/lib/active_zuora/fields/decimal_field.rb +12 -0
- data/lib/active_zuora/fields/field.rb +76 -0
- data/lib/active_zuora/fields/integer_field.rb +11 -0
- data/lib/active_zuora/fields/object_field.rb +31 -0
- data/lib/active_zuora/fields/string_field.rb +11 -0
- data/lib/active_zuora/generate.rb +43 -0
- data/lib/active_zuora/generator.rb +220 -0
- data/lib/active_zuora/has_many_associations.rb +37 -0
- data/lib/active_zuora/has_many_proxy.rb +50 -0
- data/lib/active_zuora/persistence.rb +176 -0
- data/lib/active_zuora/relation.rb +253 -0
- data/lib/active_zuora/scoping.rb +50 -0
- data/lib/active_zuora/subscribe.rb +42 -0
- data/lib/active_zuora/version.rb +3 -0
- data/lib/active_zuora/z_object.rb +21 -0
- data/spec/belongs_to_associations_spec.rb +35 -0
- data/spec/has_many_integration_spec.rb +53 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/subscribe_integration_spec.rb +218 -0
- data/spec/zobject_integration_spec.rb +104 -0
- data/wsdl/zuora.wsdl +1548 -0
- metadata +128 -72
- checksums.yaml +0 -7
- data/LICENSE +0 -202
- data/README.rdoc +0 -36
- data/VERSION +0 -1
- data/custom_fields.yml +0 -17
- data/lib/active_zuora/account.rb +0 -31
- data/lib/active_zuora/amendment.rb +0 -7
- data/lib/active_zuora/bill_run.rb +0 -4
- data/lib/active_zuora/contact.rb +0 -7
- data/lib/active_zuora/invoice.rb +0 -46
- data/lib/active_zuora/invoice_item.rb +0 -26
- data/lib/active_zuora/invoice_item_adjustment.rb +0 -4
- data/lib/active_zuora/invoice_payment.rb +0 -11
- data/lib/active_zuora/payment.rb +0 -18
- data/lib/active_zuora/payment_method.rb +0 -10
- data/lib/active_zuora/product.rb +0 -4
- data/lib/active_zuora/product_rate_plan.rb +0 -9
- data/lib/active_zuora/product_rate_plan_charge.rb +0 -11
- data/lib/active_zuora/product_rate_plan_charge_tier.rb +0 -7
- data/lib/active_zuora/product_rate_plan_charge_tier_data.rb +0 -4
- data/lib/active_zuora/rate_plan.rb +0 -16
- data/lib/active_zuora/rate_plan_charge.rb +0 -71
- data/lib/active_zuora/rate_plan_charge_data.rb +0 -4
- data/lib/active_zuora/rate_plan_charge_tier.rb +0 -4
- data/lib/active_zuora/rate_plan_data.rb +0 -4
- data/lib/active_zuora/refund.rb +0 -4
- data/lib/active_zuora/subscribe_options.rb +0 -4
- data/lib/active_zuora/subscribe_request.rb +0 -13
- data/lib/active_zuora/subscribe_with_existing_account_request.rb +0 -4
- data/lib/active_zuora/subscription.rb +0 -17
- data/lib/active_zuora/subscription_data.rb +0 -4
- data/lib/active_zuora/usage.rb +0 -4
- data/lib/active_zuora/zobject.rb +0 -154
- data/lib/soap/property +0 -1
- data/lib/zuora/ZUORA.rb +0 -1560
- data/lib/zuora/ZUORADriver.rb +0 -145
- data/lib/zuora/ZUORAMappingRegistry.rb +0 -1709
- data/lib/zuora/ZuoraServiceClient.rb +0 -124
- data/lib/zuora/api.rb +0 -18
- data/lib/zuora_client.rb +0 -191
- data/lib/zuora_interface.rb +0 -215
data/README.rdoc
DELETED
@@ -1,36 +0,0 @@
|
|
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
|
6
|
-
|
7
|
-
Client for Zuora API
|
8
|
-
|
9
|
-
This is a wrapper for sample code provided by {Zuora}[http://developer.zuora.com/samplecode.html]
|
10
|
-
|
11
|
-
This is a fork of the Zuora4r Gem that has started to develop a mind of its own.
|
12
|
-
The fork is adding a new interface to the gem along with removing parts deemed unnecessary.
|
13
|
-
The underlying implementation of the zuora4r gem is still in place but that is going to change in the future.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
== Installing the Gem
|
18
|
-
$ sudo gem sources -a http://gemcutter.org
|
19
|
-
$ sudo gem install active_zuora
|
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/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.4.21
|
data/custom_fields.yml
DELETED
data/lib/active_zuora/account.rb
DELETED
@@ -1,31 +0,0 @@
|
|
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 invoices_with_balance
|
20
|
-
@invoices_with_balance ||= Invoice.where("accountId = '#{self.id}' AND Balance > 0")
|
21
|
-
end
|
22
|
-
|
23
|
-
def payment_methods
|
24
|
-
@payment_methods ||= PaymentMethod.where(:accountid => self.id)
|
25
|
-
end
|
26
|
-
|
27
|
-
def contacts
|
28
|
-
@contacts ||= Contact.where(:accountid => self.id)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/active_zuora/contact.rb
DELETED
data/lib/active_zuora/invoice.rb
DELETED
@@ -1,46 +0,0 @@
|
|
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
|
@@ -1,26 +0,0 @@
|
|
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
|
data/lib/active_zuora/payment.rb
DELETED
@@ -1,18 +0,0 @@
|
|
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
|
data/lib/active_zuora/product.rb
DELETED
@@ -1,11 +0,0 @@
|
|
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
|
@@ -1,16 +0,0 @@
|
|
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
|
@@ -1,71 +0,0 @@
|
|
1
|
-
module Zuora
|
2
|
-
class RatePlanCharge < ZObject
|
3
|
-
|
4
|
-
#this code only supports flat fee, per unit and volume pricing. It does not support tiered pricing.
|
5
|
-
|
6
|
-
|
7
|
-
exclude_query_attributes :overagePrice, :includedUnits, :discountAmount, :discountPercentage, :price
|
8
|
-
|
9
|
-
def rate_plan
|
10
|
-
@rate_plan ||= RatePlan.find(self.ratePlanId)
|
11
|
-
end
|
12
|
-
|
13
|
-
def rate_plan_charge_tier
|
14
|
-
query = charge_tier_query("ratePlanChargeId", id)
|
15
|
-
@rate_plan_charge_tier ||= RatePlanChargeTier.where(query).first
|
16
|
-
end
|
17
|
-
|
18
|
-
def product_rate_plan_charge_tier
|
19
|
-
query = charge_tier_query("productRatePlanChargeId", productRatePlanChargeId)
|
20
|
-
@product_rate_plan_charge_tier ||= ProductRatePlanChargeTier.where(query).first
|
21
|
-
end
|
22
|
-
|
23
|
-
def charge_tier_query(identifier_name, identifier_value)
|
24
|
-
query = "#{identifier_name} = '#{identifier_value}'"
|
25
|
-
query += " and startingUnit <= #{charge_quantity} and endingUnit >= #{charge_quantity}" if chargeModel == "Volume Pricing"
|
26
|
-
query
|
27
|
-
end
|
28
|
-
|
29
|
-
def product_rate_plan_charge
|
30
|
-
@product_rate_plan_charge ||= ProductRatePlanCharge.find(self.productRatePlanChargeId)
|
31
|
-
end
|
32
|
-
|
33
|
-
def usages
|
34
|
-
@usages ||= Usage.where(:chargeId => id)
|
35
|
-
end
|
36
|
-
|
37
|
-
def unload_usages
|
38
|
-
@usages = nil
|
39
|
-
self
|
40
|
-
end
|
41
|
-
|
42
|
-
def charge_quantity
|
43
|
-
quantity || 1
|
44
|
-
end
|
45
|
-
|
46
|
-
def price
|
47
|
-
super || rate_plan_charge_tier.price
|
48
|
-
end
|
49
|
-
|
50
|
-
def total_price
|
51
|
-
rate_plan_charge_tier.priceFormat == "Flat Fee" ? price : charge_quantity * price
|
52
|
-
end
|
53
|
-
|
54
|
-
def list_price
|
55
|
-
product_rate_plan_charge_tier.price
|
56
|
-
end
|
57
|
-
|
58
|
-
def total_list_price
|
59
|
-
product_rate_plan_charge_tier.priceFormat == "Flat Fee" ? list_price : charge_quantity * list_price
|
60
|
-
end
|
61
|
-
|
62
|
-
def discount?
|
63
|
-
price < list_price
|
64
|
-
end
|
65
|
-
|
66
|
-
def discount_percent
|
67
|
-
list_price.zero? ? nil : (1 - price / list_price) * 100
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
data/lib/active_zuora/refund.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module Zuora
|
2
|
-
class SubscribeRequest < ZObject
|
3
|
-
def self.create(args={})
|
4
|
-
self.client.subscribe([self.new(args).to_zobject])
|
5
|
-
end
|
6
|
-
|
7
|
-
def save
|
8
|
-
result = self.class.client.subscribe([self.to_zobject])
|
9
|
-
self.account.id = result.accountId
|
10
|
-
result.success
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Zuora
|
2
|
-
class Subscription < ZObject
|
3
|
-
|
4
|
-
def account
|
5
|
-
@account ||= Account.find(self.accountId)
|
6
|
-
end
|
7
|
-
|
8
|
-
def rate_plans
|
9
|
-
@rate_plans ||= RatePlan.where(:subscriptionId => self.id)
|
10
|
-
end
|
11
|
-
|
12
|
-
def unload_rate_plans
|
13
|
-
@rate_plans = nil
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|