active_zuora 1.5.2 → 2.0.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/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
|