Class: Chargify::Subscription

Inherits:
Base
  • Object
show all
Defined in:
lib/chargify_api_ares/resources/subscription.rb

Defined Under Namespace

Classes: Component, Event, Statement, Transaction

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

element_name, #to_xml

Class Method Details

.find_by_customer_reference(reference) ⇒ Object



3
4
5
6
# File 'lib/chargify_api_ares/resources/subscription.rb', line 3

def self.find_by_customer_reference(reference)
  customer = Customer.find_by_reference(reference)
  find(:first, :params => {:customer_id => customer.id})
end

Instance Method Details

#add_coupon(code) ⇒ Object



85
86
87
# File 'lib/chargify_api_ares/resources/subscription.rb', line 85

def add_coupon(code)
  post :add_coupon, :code => code
end

#adjustment(attrs = {}) ⇒ Object



81
82
83
# File 'lib/chargify_api_ares/resources/subscription.rb', line 81

def adjustment(attrs = {})
  post :adjustments, {}, attrs.to_xml(:root => :adjustment)
end

#cancelObject



16
17
18
# File 'lib/chargify_api_ares/resources/subscription.rb', line 16

def cancel
  destroy
end

#charge(attrs = {}) ⇒ Object

Perform a one-time charge on an existing subscription. For more information, please see the one-time charge API docs available at: support.chargify.com/faqs/api/api-charges



41
42
43
# File 'lib/chargify_api_ares/resources/subscription.rb', line 41

def charge(attrs = {})
  Chargify::Charge.create(attrs.merge(:subscription_id => self.id))
end

#component(id) ⇒ Object



20
21
22
# File 'lib/chargify_api_ares/resources/subscription.rb', line 20

def component(id)
  Component.find(id, :params => {:subscription_id => self.id})
end

#components(params = {}) ⇒ Object



24
25
26
27
# File 'lib/chargify_api_ares/resources/subscription.rb', line 24

def components(params = {})
  params.merge!({:subscription_id => self.id})
  Component.find(:all, :params => params)
end

#credit(attrs = {}) ⇒ Object



45
46
47
# File 'lib/chargify_api_ares/resources/subscription.rb', line 45

def credit(attrs = {})
  post :credits, {}, attrs.to_xml(:root => :credit)
end

#events(params = {}) ⇒ Object



29
30
31
32
# File 'lib/chargify_api_ares/resources/subscription.rb', line 29

def events(params = {})
  params.merge!(:subscription_id => self.id)
  Event.all(:params => params)
end

#migrate(attrs = {}) ⇒ Object



61
62
63
# File 'lib/chargify_api_ares/resources/subscription.rb', line 61

def migrate(attrs = {})
  Chargify::Migration.create(attrs.merge(:subscription_id => self.id))
end

#payment_profileObject



34
35
36
# File 'lib/chargify_api_ares/resources/subscription.rb', line 34

def payment_profile
  self.respond_to?('credit_card') ? credit_card : nil
end

#reactivate(params = {}) ⇒ Object



53
54
55
# File 'lib/chargify_api_ares/resources/subscription.rb', line 53

def reactivate(params = {})
  put :reactivate, params
end

#refund(attrs = {}) ⇒ Object



49
50
51
# File 'lib/chargify_api_ares/resources/subscription.rb', line 49

def refund(attrs = {})
  post :refunds, {}, attrs.to_xml(:root => :refund)
end

#remove_coupon(code = nil) ⇒ Object



89
90
91
92
93
94
95
# File 'lib/chargify_api_ares/resources/subscription.rb', line 89

def remove_coupon(code=nil)
  if code.nil?
    delete :remove_coupon
  else
    delete :remove_coupon, :code => code
  end
end

#reset_balanceObject



57
58
59
# File 'lib/chargify_api_ares/resources/subscription.rb', line 57

def reset_balance
  put :reset_balance
end

#saveObject

Strip off nested attributes of associations before saving, or type-mismatch errors will occur



9
10
11
12
13
14
# File 'lib/chargify_api_ares/resources/subscription.rb', line 9

def save
  self.attributes.delete('customer')
  self.attributes.delete('product')
  self.attributes.delete('credit_card')
  super
end

#statement(id) ⇒ Object

Raises:

  • (ActiveResource::ResourceNotFound)


65
66
67
68
69
# File 'lib/chargify_api_ares/resources/subscription.rb', line 65

def statement(id)
  statement = Chargify::Statement.find(id)
  raise ActiveResource::ResourceNotFound.new(nil) if (statement.subscription_id != self.id)
  statement
end

#statements(params = {}) ⇒ Object



71
72
73
74
# File 'lib/chargify_api_ares/resources/subscription.rb', line 71

def statements(params = {})
  params.merge!(:subscription_id => self.id)
  Statement.find(:all, :params => params)
end

#transactions(params = {}) ⇒ Object



76
77
78
79
# File 'lib/chargify_api_ares/resources/subscription.rb', line 76

def transactions(params = {})
  params.merge!(:subscription_id => self.id)
  Transaction.find(:all, :params => params)
end