kaui 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/kaui/account_timelines_controller.rb +37 -31
- data/app/controllers/kaui/accounts_controller.rb +9 -3
- data/app/controllers/kaui/bundles_controller.rb +10 -4
- data/app/controllers/kaui/chargebacks_controller.rb +14 -8
- data/app/controllers/kaui/refunds_controller.rb +11 -8
- data/app/controllers/kaui/subscriptions_controller.rb +6 -3
- data/app/helpers/kaui/killbill_helper.rb +106 -97
- data/app/models/kaui/chargeback.rb +6 -5
- data/app/models/kaui/invoice.rb +6 -0
- data/app/models/kaui/product.rb +1 -1
- data/app/models/kaui/refund.rb +14 -10
- data/app/models/kaui/subscription.rb +2 -2
- data/app/views/kaui/account_timelines/show.html.erb +27 -18
- data/app/views/kaui/accounts/show.html.erb +2 -2
- data/app/views/kaui/chargebacks/new.html.erb +10 -9
- data/app/views/kaui/refunds/new.html.erb +16 -8
- data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +10 -3
- data/app/views/kaui/subscriptions/edit.html.erb +1 -2
- data/app/views/kaui/subscriptions/index.html.erb +3 -3
- data/app/views/kaui/subscriptions/show.html.erb +2 -3
- data/lib/kaui/version.rb +1 -1
- metadata +4 -4
@@ -9,46 +9,52 @@ class Kaui::AccountTimelinesController < ApplicationController
|
|
9
9
|
@account_id = params[:id]
|
10
10
|
if @account_id.present?
|
11
11
|
@account = Kaui::KillbillHelper::get_account(@account_id)
|
12
|
-
@timeline = Kaui::KillbillHelper::get_account_timeline(@account_id)
|
13
|
-
# @payment_attempts_by_payment_id = {}
|
14
|
-
@invoices_by_id = {}
|
15
|
-
@bundle_names = {}
|
16
|
-
unless @timeline.nil?
|
17
|
-
@timeline.payments.each do |payment|
|
18
|
-
if payment.invoice_id.present? &&
|
19
|
-
payment.payment_id.present? &&
|
20
|
-
# !@payment_attempts_by_payment_id.has_key?(payment.payment_id)
|
21
12
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
13
|
+
if @account.present?
|
14
|
+
@timeline = Kaui::KillbillHelper::get_account_timeline(@account_id)
|
15
|
+
# @payment_attempts_by_payment_id = {}
|
16
|
+
@invoices_by_id = {}
|
17
|
+
@bundle_names = {}
|
18
|
+
unless @timeline.nil?
|
19
|
+
@timeline.payments.each do |payment|
|
20
|
+
if payment.invoice_id.present? &&
|
21
|
+
payment.payment_id.present? &&
|
22
|
+
# !@payment_attempts_by_payment_id.has_key?(payment.payment_id)
|
23
|
+
|
24
|
+
@invoices_by_id[payment.invoice_id] = Kaui::KillbillHelper::get_invoice(payment.invoice_id)
|
25
|
+
# payment_attempt = Kaui::KillbillHelper::get_payment_attempt(@timeline.account.external_key,
|
26
|
+
# payment.invoice_id,
|
27
|
+
# payment.payment_id)
|
28
|
+
# @payment_attempts_by_payment_id[payment.payment_id] = payment_attempt
|
29
|
+
payment.bundle_keys.split(",").each do |bundle_key|
|
30
|
+
unless @bundle_names.has_key?(bundle_key)
|
31
|
+
@bundle_names[bundle_key] = Kaui.bundle_key_display_string.call(bundle_key)
|
32
|
+
end
|
30
33
|
end
|
31
34
|
end
|
32
35
|
end
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
@timeline.invoices.each do |invoice|
|
37
|
+
if invoice.invoice_id.present? && !@invoices_by_id.has_key?(invoice.invoice_id)
|
38
|
+
@invoices_by_id[invoice.invoice_id] = Kaui::KillbillHelper::get_invoice(invoice.invoice_id)
|
39
|
+
invoice.bundle_keys.split(",").each do |bundle_key|
|
40
|
+
unless @bundle_names.has_key?(bundle_key)
|
41
|
+
@bundle_names[bundle_key] = Kaui.bundle_key_display_string.call(bundle_key)
|
42
|
+
end
|
40
43
|
end
|
41
44
|
end
|
42
45
|
end
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
46
|
+
@timeline.bundles.each do |bundle|
|
47
|
+
unless @bundle_names.has_key?(bundle.external_key)
|
48
|
+
@bundle_names[bundle.external_key] = Kaui.bundle_key_display_string.call(bundle.external_key)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
if params.has_key?(:external_key)
|
52
|
+
@selected_bundle = @bundle_names[params[:external_key]]
|
47
53
|
end
|
48
54
|
end
|
49
|
-
|
50
|
-
|
51
|
-
|
55
|
+
else
|
56
|
+
flash[:error] = "Account #{@account_id} not found"
|
57
|
+
redirect_to :action => :index
|
52
58
|
end
|
53
59
|
else
|
54
60
|
flash[:notice] = "No id given"
|
@@ -9,9 +9,15 @@ class Kaui::AccountsController < ApplicationController
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def show
|
12
|
-
|
13
|
-
if
|
14
|
-
|
12
|
+
key = params[:id]
|
13
|
+
if key.present?
|
14
|
+
# support id (UUID) and external key search
|
15
|
+
if key =~ /[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}/
|
16
|
+
@account = Kaui::KillbillHelper.get_account(key)
|
17
|
+
else
|
18
|
+
@account = Kaui::KillbillHelper.get_account_by_external_key(key)
|
19
|
+
end
|
20
|
+
|
15
21
|
if @account.present?
|
16
22
|
# TODO: add when payment methods are implemented
|
17
23
|
# @payment_methods = Kaui::KillbillHelper.get_payment_methods(@account_id)
|
@@ -7,13 +7,19 @@ class Kaui::BundlesController < ApplicationController
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def show
|
10
|
-
|
11
|
-
if
|
12
|
-
|
10
|
+
key = params[:id]
|
11
|
+
if key.present?
|
12
|
+
# support id (UUID) and external key search
|
13
|
+
if key =~ /[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}/
|
14
|
+
@bundle = Kaui::KillbillHelper.get_bundle(key)
|
15
|
+
else
|
16
|
+
@bundle = Kaui::KillbillHelper.get_bundle_by_external_key(key)
|
17
|
+
end
|
18
|
+
|
13
19
|
if @bundle.present?
|
14
20
|
@subscriptions = Kaui::KillbillHelper.get_subscriptions_for_bundle(@bundle.bundle_id)
|
15
21
|
else
|
16
|
-
flash[:error] = "Bundle #{
|
22
|
+
flash[:error] = "Bundle #{key} not found"
|
17
23
|
redirect_to :action => :index
|
18
24
|
end
|
19
25
|
else
|
@@ -15,24 +15,30 @@ class Kaui::ChargebacksController < ApplicationController
|
|
15
15
|
|
16
16
|
def new
|
17
17
|
@payment_id = params[:payment_id]
|
18
|
-
@invoice_id = params[:invoice_id]
|
19
18
|
@account_id = params[:account_id]
|
20
|
-
|
21
|
-
@chargeback = Kaui::Chargeback.new(:payment_id => @payment_id,
|
22
|
-
:invoice_id => @invoice_id,
|
23
|
-
:account_id => @account_id)
|
19
|
+
@invoice_id = params[:invoice_id]
|
24
20
|
|
25
21
|
# @payment_attempt = Kaui::KillbillHelper::get_payment_attempt(@external_key, @invoice_id, @payment_id)
|
26
22
|
@account = Kaui::KillbillHelper::get_account(@account_id)
|
27
23
|
# TODO: get payment by payment id (no api at the moment)
|
28
24
|
@payment = Kaui::KillbillHelper::get_payment(@invoice_id, @payment_id)
|
29
25
|
@invoice = Kaui::KillbillHelper::get_invoice(@invoice_id)
|
26
|
+
@chargeback = Kaui::Chargeback.new("payment_id" => @payment_id,
|
27
|
+
"chargeback_amount" => @payment.amount)
|
30
28
|
end
|
31
29
|
|
32
30
|
def create
|
31
|
+
account_id = params[:account_id]
|
33
32
|
chargeback = Kaui::Chargeback.new(params[:chargeback])
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
if chargeback.present?
|
34
|
+
success = Kaui::KillbillHelper::create_chargeback(chargeback, params[:reason], params[:comment])
|
35
|
+
if success
|
36
|
+
flash[:info] = "Chargeback created"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
flash[:error] = "Could not process chargeback"
|
40
|
+
redirect_to account_timeline_path(:id => params[:account_id])
|
37
41
|
end
|
42
|
+
|
43
|
+
|
38
44
|
end
|
@@ -18,21 +18,24 @@ class Kaui::RefundsController < ApplicationController
|
|
18
18
|
@invoice_id = params[:invoice_id]
|
19
19
|
@account_id = params[:account_id]
|
20
20
|
|
21
|
-
@refund = Kaui::Refund.new(
|
22
|
-
:invoice_id => @invoice_id,
|
23
|
-
:account_id => @account_id)
|
21
|
+
@refund = Kaui::Refund.new('adjusted' => true)
|
24
22
|
|
25
23
|
@account = Kaui::KillbillHelper::get_account(@account_id)
|
26
|
-
# @payment_attempt = Kaui::KillbillHelper::get_payment_attempt(@external_key, @invoice_id, @payment_id)
|
27
24
|
@payment = Kaui::KillbillHelper::get_payment(@invoice_id, @payment_id)
|
28
|
-
puts "payment is #{@payment.to_yaml}"
|
29
25
|
@invoice = Kaui::KillbillHelper::get_invoice(@invoice_id)
|
30
26
|
end
|
31
27
|
|
32
28
|
def create
|
29
|
+
payment_id = params[:payment_id]
|
30
|
+
account_id = params[:account_id]
|
31
|
+
|
33
32
|
refund = Kaui::Refund.new(params[:refund])
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
refund.adjusted = (refund.adjusted == "1")
|
34
|
+
if refund.present?
|
35
|
+
Kaui::KillbillHelper::create_refund(params[:payment_id], refund, params[:reason], params[:comment])
|
36
|
+
redirect_to account_timeline_path(:id => params[:account_id])
|
37
|
+
else
|
38
|
+
flash[:error] = "No refund given to process"
|
39
|
+
end
|
37
40
|
end
|
38
41
|
end
|
@@ -2,6 +2,9 @@ require 'kaui/product'
|
|
2
2
|
|
3
3
|
class Kaui::SubscriptionsController < ApplicationController
|
4
4
|
def index
|
5
|
+
if params[:subscription_id].present?
|
6
|
+
redirect_to subscription_path(params[:subscription_id])
|
7
|
+
end
|
5
8
|
end
|
6
9
|
|
7
10
|
def show
|
@@ -19,7 +22,7 @@ class Kaui::SubscriptionsController < ApplicationController
|
|
19
22
|
@billing_period = params[:billing_period]
|
20
23
|
@price_list = params[:price_list]
|
21
24
|
|
22
|
-
@subscription = Kaui::Subscription.new(:bundle_id => @bundle_id,
|
25
|
+
@subscription = Kaui::Subscription.new(:bundle_id => @bundle_id,
|
23
26
|
:product_name => @product_name,
|
24
27
|
:product_category => @product_category,
|
25
28
|
:billing_period => @billing_period,
|
@@ -40,14 +43,14 @@ class Kaui::SubscriptionsController < ApplicationController
|
|
40
43
|
flash[:error] = "No subscription id given or subscription not found"
|
41
44
|
redirect_to :back
|
42
45
|
end
|
43
|
-
@products = Kaui::
|
46
|
+
@products = Kaui::SAMPLE_BASE_PRODUCTS
|
44
47
|
end
|
45
48
|
|
46
49
|
def update
|
47
50
|
if params.has_key?(:subscription) && params[:subscription].has_key?(:subscription_id)
|
48
51
|
subscription = Kaui::KillbillHelper.get_subscription(params[:subscription][:subscription_id])
|
49
52
|
product_id = params[:subscription][:product_name]
|
50
|
-
products = Kaui::
|
53
|
+
products = Kaui::SAMPLE_BASE_PRODUCTS.select{|p| p.id == product_id}
|
51
54
|
unless products.empty?
|
52
55
|
subscription.product_name = products[0].product_name
|
53
56
|
subscription.billing_period = products[0].billing_period
|
@@ -7,11 +7,12 @@ module Kaui
|
|
7
7
|
url = Kaui.killbill_finder.call + uri
|
8
8
|
Rails.logger.info "Performing #{method} request to #{url}"
|
9
9
|
response = RestClient.send(method.to_sym, url, *args)
|
10
|
-
|
11
|
-
|
10
|
+
data = { :code => response.code }
|
11
|
+
if response.code < 300 && response.body.present?
|
12
|
+
data[:json] = JSON.parse(response.body)
|
12
13
|
end
|
13
14
|
# TODO: error handling
|
14
|
-
|
15
|
+
data
|
15
16
|
end
|
16
17
|
|
17
18
|
############## ACCOUNT ##############
|
@@ -19,7 +20,7 @@ module Kaui
|
|
19
20
|
def self.get_account_timeline(account_id)
|
20
21
|
begin
|
21
22
|
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}/timeline"
|
22
|
-
data
|
23
|
+
process_response(data, :single) {|json| Kaui::AccountTimeline.new(json) }
|
23
24
|
rescue => e
|
24
25
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
25
26
|
end
|
@@ -28,7 +29,7 @@ module Kaui
|
|
28
29
|
def self.get_account(account_id)
|
29
30
|
begin
|
30
31
|
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}"
|
31
|
-
data
|
32
|
+
process_response(data, :single) {|json| Kaui::Account.new(json) }
|
32
33
|
rescue => e
|
33
34
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
34
35
|
end
|
@@ -37,22 +38,19 @@ module Kaui
|
|
37
38
|
def self.get_account_by_external_key(external_key)
|
38
39
|
begin
|
39
40
|
data = call_killbill :get, "/1.0/kb/accounts?external_key=#{external_key}"
|
40
|
-
data
|
41
|
+
process_response(data, :single) {|json| Kaui::Account.new(json) }
|
41
42
|
rescue => e
|
42
43
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
47
|
+
|
46
48
|
############## BUNDLE ##############
|
47
49
|
|
48
50
|
def self.get_bundles(account_id)
|
49
51
|
begin
|
50
52
|
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}/bundles"
|
51
|
-
|
52
|
-
[]
|
53
|
-
else
|
54
|
-
data.collect {|item| Kaui::Bundle.new(item) }
|
55
|
-
end
|
53
|
+
process_response(data, :multiple) {|json| Kaui::Bundle.new(json) }
|
56
54
|
rescue RestClient::BadRequest
|
57
55
|
[]
|
58
56
|
rescue => e
|
@@ -63,7 +61,7 @@ module Kaui
|
|
63
61
|
def self.get_bundle_by_external_key(external_key)
|
64
62
|
begin
|
65
63
|
data = call_killbill :get, "/1.0/kb/bundles?external_key=#{external_key}"
|
66
|
-
data
|
64
|
+
process_response(data, :single) {|json| Kaui::Bundle.new(json) }
|
67
65
|
rescue => e
|
68
66
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
69
67
|
end
|
@@ -72,7 +70,7 @@ module Kaui
|
|
72
70
|
def self.get_bundle(bundle_id)
|
73
71
|
begin
|
74
72
|
data = call_killbill :get, "/1.0/kb/bundles/#{bundle_id}"
|
75
|
-
data
|
73
|
+
process_response(data, :single) {|json| Kaui::Bundle.new(json) }
|
76
74
|
rescue => e
|
77
75
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
78
76
|
end
|
@@ -81,11 +79,8 @@ module Kaui
|
|
81
79
|
def self.get_bundles(account_id)
|
82
80
|
begin
|
83
81
|
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}/bundles"
|
84
|
-
|
85
|
-
|
86
|
-
else
|
87
|
-
data.collect {|item| Kaui::Bundle.new(item) }
|
88
|
-
end
|
82
|
+
process_response(data, :multiple) {|json| Kaui::Bundle.new(json) }
|
83
|
+
|
89
84
|
rescue => e
|
90
85
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
91
86
|
end
|
@@ -96,11 +91,7 @@ module Kaui
|
|
96
91
|
def self.get_subscriptions_for_bundle(bundle_id)
|
97
92
|
begin
|
98
93
|
data = call_killbill :get, "/1.0/kb/bundles/#{bundle_id}/subscriptions"
|
99
|
-
|
100
|
-
[]
|
101
|
-
else
|
102
|
-
data.collect {|item| Kaui::Subscription.new(item) }
|
103
|
-
end
|
94
|
+
process_response(data, :multiple) {|json| Kaui::Subscription.new(json) }
|
104
95
|
rescue RestClient::BadRequest
|
105
96
|
[]
|
106
97
|
rescue => e
|
@@ -127,7 +118,7 @@ module Kaui
|
|
127
118
|
def self.get_subscription(subscription_id)
|
128
119
|
begin
|
129
120
|
data = call_killbill :get, "/1.0/kb/subscriptions/#{subscription_id}"
|
130
|
-
data
|
121
|
+
process_response(data, :single) {|json| Kaui::Subscription.new(json) }
|
131
122
|
rescue => e
|
132
123
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
133
124
|
end
|
@@ -135,14 +126,15 @@ module Kaui
|
|
135
126
|
|
136
127
|
def self.create_subscription(subscription)
|
137
128
|
begin
|
138
|
-
|
139
|
-
call_killbill :post,
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
129
|
+
subscription_data = Kaui::Subscription.camelize(subscription.to_hash)
|
130
|
+
data = call_killbill :post,
|
131
|
+
"/1.0/kb/subscriptions",
|
132
|
+
ActiveSupport::JSON.encode(subscription_data, :root => false),
|
133
|
+
:content_type => "application/json",
|
134
|
+
"X-Killbill-CreatedBy" => Kaui.current_user.call.to_s,
|
135
|
+
"X-Killbill-Reason" => "Very special reason",
|
136
|
+
"X-Killbill-Comment" => "Very special comment"
|
137
|
+
return data[:code] == 201
|
146
138
|
rescue => e
|
147
139
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
148
140
|
end
|
@@ -150,14 +142,15 @@ module Kaui
|
|
150
142
|
|
151
143
|
def self.update_subscription(subscription)
|
152
144
|
begin
|
153
|
-
|
154
|
-
call_killbill :put,
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
145
|
+
subscription_data = Kaui::Subscription.camelize(subscription.to_hash)
|
146
|
+
data = call_killbill :put,
|
147
|
+
"/1.0/kb/subscriptions/#{subscription.subscription_id}",
|
148
|
+
ActiveSupport::JSON.encode(subscription_data, :root => false),
|
149
|
+
:content_type => :json,
|
150
|
+
"X-Killbill-CreatedBy" => Kaui.current_user.call.to_s,
|
151
|
+
"X-Killbill-Reason" => "Very special reason",
|
152
|
+
"X-Killbill-Comment" => "Very special comment"
|
153
|
+
return data[:code] == 200
|
161
154
|
rescue => e
|
162
155
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
163
156
|
end
|
@@ -165,12 +158,13 @@ module Kaui
|
|
165
158
|
|
166
159
|
def self.reinstate_subscription(subscription_id)
|
167
160
|
begin
|
168
|
-
call_killbill :put,
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
161
|
+
data = call_killbill :put,
|
162
|
+
"/1.0/subscriptions/#{subscription_id}/uncancel",
|
163
|
+
:content_type => :json,
|
164
|
+
"X-Killbill-CreatedBy" => Kaui.current_user.call.to_s,
|
165
|
+
"X-Killbill-Reason" => "Very special reason",
|
166
|
+
"X-Killbill-Comment" => "Very special comment"
|
167
|
+
return data[:code] == 200
|
174
168
|
rescue => e
|
175
169
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
176
170
|
end
|
@@ -178,40 +172,34 @@ module Kaui
|
|
178
172
|
|
179
173
|
def self.delete_subscription(subscription_id)
|
180
174
|
begin
|
181
|
-
call_killbill :delete,
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
175
|
+
data = call_killbill :delete,
|
176
|
+
"/1.0/kb/subscriptions/#{subscription_id}",
|
177
|
+
"X-Killbill-CreatedBy" => Kaui.current_user.call.to_s,
|
178
|
+
"X-Killbill-Reason" => "Very special reason",
|
179
|
+
"X-Killbill-Comment" => "Very special comment"
|
180
|
+
return data[:code] == 200
|
186
181
|
rescue => e
|
187
182
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
188
183
|
end
|
189
184
|
end
|
190
185
|
|
191
|
-
def self.create_addon(subscription_id)
|
192
|
-
begin
|
193
|
-
call_killbill :post, "/1.0/kb/payments/#{payment_id}/chargebacks"
|
194
|
-
rescue => e
|
195
|
-
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
186
|
############## INVOICE ##############
|
200
187
|
|
201
188
|
def self.get_invoice(invoice_id)
|
202
189
|
begin
|
203
190
|
data = call_killbill :get, "/1.0/kb/invoices/#{invoice_id}?withItems=true"
|
204
|
-
data
|
191
|
+
process_response(data, :single) {|json| Kaui::Invoice.new(json) }
|
205
192
|
rescue => e
|
206
193
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
207
194
|
end
|
208
195
|
end
|
209
|
-
|
196
|
+
|
210
197
|
############## CATALOG ##############
|
211
198
|
|
212
199
|
def self.get_available_addons
|
213
200
|
begin
|
214
|
-
call_killbill :get, "/1.0/catalog"
|
201
|
+
data = call_killbill :get, "/1.0/catalog/availableAddons"
|
202
|
+
return data[:json]
|
215
203
|
rescue => e
|
216
204
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
217
205
|
end
|
@@ -252,11 +240,7 @@ module Kaui
|
|
252
240
|
def self.get_payments(invoice_id)
|
253
241
|
begin
|
254
242
|
data = call_killbill :get, "/1.0/kb/invoices/#{invoice_id}/payments"
|
255
|
-
|
256
|
-
[]
|
257
|
-
else
|
258
|
-
data.collect {|item| Kaui::Payment.new(item) }
|
259
|
-
end
|
243
|
+
process_response(data, :single) {|json| Kaui::Payment.new(json) }
|
260
244
|
rescue => e
|
261
245
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
262
246
|
[]
|
@@ -276,11 +260,7 @@ module Kaui
|
|
276
260
|
def self.get_payment_methods(account_id)
|
277
261
|
begin
|
278
262
|
data = call_killbill :get, "/1.0/accounts/#{account_id}/paymentMethods"
|
279
|
-
|
280
|
-
[]
|
281
|
-
else
|
282
|
-
data.collect { |item| Kaui::PaymentMethod.new(item) }
|
283
|
-
end
|
263
|
+
process_response(data, :single) {|json| Kaui::PaymentMethod.new(json) }
|
284
264
|
rescue => e
|
285
265
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
286
266
|
end
|
@@ -296,11 +276,19 @@ module Kaui
|
|
296
276
|
end
|
297
277
|
end
|
298
278
|
|
299
|
-
def self.create_refund(payment_id)
|
279
|
+
def self.create_refund(payment_id, refund, reason, comment)
|
300
280
|
begin
|
301
|
-
|
302
|
-
|
303
|
-
|
281
|
+
refund_data = Kaui::Refund.camelize(refund.to_hash)
|
282
|
+
data = call_killbill :post,
|
283
|
+
"/1.0/kb/payments/#{payment_id}/refunds",
|
284
|
+
ActiveSupport::JSON.encode(refund_data, :root => false),
|
285
|
+
:content_type => "application/json",
|
286
|
+
"X-Killbill-CreatedBy" => Kaui.current_user.call.to_s,
|
287
|
+
"X-Killbill-Reason" => "#{reason}",
|
288
|
+
"X-Killbill-Comment" => "#{comment}"
|
289
|
+
return response[:code] == 201
|
290
|
+
rescue => e
|
291
|
+
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
304
292
|
end
|
305
293
|
end
|
306
294
|
|
@@ -308,30 +296,35 @@ module Kaui
|
|
308
296
|
|
309
297
|
def self.get_chargebacks_for_payment(payment_id)
|
310
298
|
begin
|
311
|
-
call_killbill :get, "/1.0/kb/payments/#{payment_id}
|
299
|
+
data = call_killbill :get, "/1.0/kb/chargebacks/payments/#{payment_id}"
|
300
|
+
process_response(data, :single) {|json| Kaui::Chargeback.new(json) }
|
312
301
|
rescue => e
|
313
302
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
314
303
|
end
|
315
304
|
end
|
316
305
|
|
317
|
-
def self.create_chargeback(
|
306
|
+
def self.create_chargeback(chargeback, reason, comment)
|
318
307
|
begin
|
319
|
-
|
308
|
+
chargeback_data = Kaui::Refund.camelize(chargeback.to_hash)
|
309
|
+
data = call_killbill :post,
|
310
|
+
"/1.0/kb/chargebacks",
|
311
|
+
ActiveSupport::JSON.encode(chargeback_data, :root => false),
|
312
|
+
:content_type => "application/json",
|
313
|
+
"X-Killbill-CreatedBy" => Kaui.current_user.call.to_s,
|
314
|
+
"X-Killbill-Reason" => "#{reason}",
|
315
|
+
"X-Killbill-Comment" => "#{comment}"
|
316
|
+
return data[:code] == 201
|
320
317
|
rescue => e
|
321
318
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
322
319
|
end
|
323
320
|
end
|
324
321
|
|
325
|
-
############## TAG ##############
|
322
|
+
############## TAG ##############
|
326
323
|
|
327
324
|
def self.get_tag_definitions
|
328
325
|
begin
|
329
326
|
data = call_killbill :get, "/1.0/kb/tagDefinitions"
|
330
|
-
|
331
|
-
[]
|
332
|
-
else
|
333
|
-
data.collect {|item| Kaui::Tag.new(item) }
|
334
|
-
end
|
327
|
+
process_response(data, :single) {|json| Kaui::Tag.new(json) }
|
335
328
|
rescue => e
|
336
329
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
337
330
|
[]
|
@@ -341,6 +334,7 @@ module Kaui
|
|
341
334
|
def self.get_tags_for_account(account_id)
|
342
335
|
begin
|
343
336
|
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}/tags"
|
337
|
+
return data[:json]
|
344
338
|
rescue => e
|
345
339
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
346
340
|
end
|
@@ -349,6 +343,7 @@ module Kaui
|
|
349
343
|
def self.get_tags_for_bundle(bundle_id)
|
350
344
|
begin
|
351
345
|
data = call_killbill :get, "/1.0/kb/bundles/#{bundle_id}/tags"
|
346
|
+
return data[:json]
|
352
347
|
rescue => e
|
353
348
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
354
349
|
end
|
@@ -359,12 +354,13 @@ module Kaui
|
|
359
354
|
begin
|
360
355
|
if tags.nil? || tags.empty?
|
361
356
|
else
|
362
|
-
call_killbill :post,
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
357
|
+
data = call_killbill :post,
|
358
|
+
"/1.0/kb/accounts/#{account_id}/tags?" + RestClient::Payload.generate(:tag_list => tags.join(",")).to_s,
|
359
|
+
nil,
|
360
|
+
"X-Killbill-CreatedBy" => Kaui.current_user.call.to_s,
|
361
|
+
"X-Killbill-Reason" => "Very special reason",
|
362
|
+
"X-Killbill-Comment" => "Very special comment"
|
363
|
+
return data[:code] == 201
|
368
364
|
end
|
369
365
|
rescue => e
|
370
366
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
@@ -375,17 +371,30 @@ module Kaui
|
|
375
371
|
begin
|
376
372
|
if tags.nil? || tags.empty?
|
377
373
|
else
|
378
|
-
call_killbill :post,
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
374
|
+
data = call_killbill :post,
|
375
|
+
"/1.0/kb/bundles/#{bundle_id}/tags?" + RestClient::Payload.generate(:tag_list => tags.join(",")).to_s,
|
376
|
+
nil,
|
377
|
+
"X-Killbill-CreatedBy" => Kaui.current_user.call.to_s,
|
378
|
+
"X-Killbill-Reason" => "Very special reason",
|
379
|
+
"X-Killbill-Comment" => "Very special comment"
|
380
|
+
return data[:code] == 201
|
384
381
|
end
|
385
382
|
rescue => e
|
386
383
|
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
387
384
|
end
|
388
385
|
end
|
389
386
|
|
387
|
+
private
|
388
|
+
|
389
|
+
def self.process_response(response, arity, &block)
|
390
|
+
if response.nil? || response[:json].nil?
|
391
|
+
arity == :single ? nil : []
|
392
|
+
elsif block_given?
|
393
|
+
arity == :single ? yield(response[:json]) : response[:json].collect {|item| yield(item) }
|
394
|
+
else
|
395
|
+
response[:json]
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
390
399
|
end
|
391
400
|
end
|
@@ -22,10 +22,11 @@ class Kaui::Chargeback < Kaui::Base
|
|
22
22
|
"420 - Not as Described",
|
23
23
|
"499 - OTHER" ]
|
24
24
|
|
25
|
-
define_attr :account_id
|
26
25
|
define_attr :payment_id
|
27
|
-
define_attr :
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
define_attr :chargeback_amount
|
27
|
+
|
28
|
+
def initialize(data = {})
|
29
|
+
super(:payment_id => data['paymentId'] || data['payment_id'],
|
30
|
+
:chargeback_amount => data['chargebackAmount'] || data['chargeback_amount'])
|
31
|
+
end
|
31
32
|
end
|
data/app/models/kaui/invoice.rb
CHANGED
@@ -7,6 +7,9 @@ class Kaui::Invoice < Kaui::Base
|
|
7
7
|
define_attr :account_id
|
8
8
|
define_attr :invoice_number
|
9
9
|
define_attr :payment_amount
|
10
|
+
define_attr :refund_adjustment
|
11
|
+
define_attr :credit_balance_adjustment
|
12
|
+
define_attr :credit_adjustment
|
10
13
|
define_attr :invoice_dt
|
11
14
|
define_attr :payment_dt
|
12
15
|
define_attr :target_dt
|
@@ -20,6 +23,9 @@ class Kaui::Invoice < Kaui::Base
|
|
20
23
|
:account_id => data['accountId'],
|
21
24
|
:invoice_number => data['invoiceNumber'],
|
22
25
|
:payment_amount => data['paymentAmount'],
|
26
|
+
:refund_adjustment => data['refundAdj'],
|
27
|
+
:credit_balance_adjustment => data['cba'],
|
28
|
+
:credit_adjustment => data['creditAdj'],
|
23
29
|
:invoice_dt => data['invoiceDate'],
|
24
30
|
:payment_dt => data['paymentDate'],
|
25
31
|
:target_dt => data['targetDate'],
|
data/app/models/kaui/product.rb
CHANGED
@@ -13,7 +13,7 @@ module Kaui
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
SAMPLE_BASE_PRODUCTS = [
|
17
17
|
Kaui::Product.new(:id => "product1", :product_category => "Base", :product_name => "OneBase", :billing_period => "ANNUAL"),
|
18
18
|
Kaui::Product.new(:id => "product2", :product_category => "Base", :product_name => "TwoBase", :billing_period => "MONTHLY"),
|
19
19
|
]
|
data/app/models/kaui/refund.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
|
+
require 'active_model'
|
2
|
+
|
1
3
|
class Kaui::Refund < Kaui::Base
|
2
4
|
SAMPLE_REASON_CODES = [ "500 - Courtesy",
|
3
|
-
|
4
|
-
|
5
|
-
|
5
|
+
"501 - Billing Error",
|
6
|
+
"502 - Alt payment method",
|
7
|
+
"599 - OTHER" ]
|
8
|
+
|
9
|
+
define_attr :refund_id
|
10
|
+
define_attr :adjusted
|
11
|
+
define_attr :refund_amount
|
6
12
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
define_attr :comment
|
13
|
-
define_attr :reason
|
13
|
+
def initialize(data = {})
|
14
|
+
super(:refund_id => data['refundId'] || data['refund_id'],
|
15
|
+
:adjusted => data['adjusted'],
|
16
|
+
:refund_amount => data['refundAmount'] || data['refund_amount'])
|
17
|
+
end
|
14
18
|
end
|
@@ -7,7 +7,7 @@ class Kaui::Subscription < Kaui::Base
|
|
7
7
|
define_attr :charged_through_date
|
8
8
|
define_attr :price_list
|
9
9
|
define_attr :start_date
|
10
|
-
define_attr :
|
10
|
+
define_attr :canceledDate
|
11
11
|
has_many :events, Kaui::Event
|
12
12
|
|
13
13
|
def initialize(data = {})
|
@@ -19,7 +19,7 @@ class Kaui::Subscription < Kaui::Base
|
|
19
19
|
:charged_through_date => data['chargedThroughDate'],
|
20
20
|
:price_list => data['priceList'],
|
21
21
|
:start_date => data['startDate'],
|
22
|
-
:
|
22
|
+
:canceledDate => data['cancelledDate'],
|
23
23
|
:events => data['events'])
|
24
24
|
end
|
25
25
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div class="page-header">
|
2
|
-
<h3>Account <%= @account.name %></h3>
|
2
|
+
<h3>Account <%= @account.name %></h3>
|
3
3
|
<%= link_to @account.email, Kaui.account_home_path.call(@account.external_key) %>
|
4
4
|
</div>
|
5
5
|
<form class="form-horizontal">
|
@@ -56,20 +56,29 @@
|
|
56
56
|
<%= link_to @bundle_names[bundle_key], Kaui.bundle_home_path.call(bundle_key) %><br/>
|
57
57
|
<% end %>
|
58
58
|
<% end %>
|
59
|
-
</td>
|
59
|
+
</td>
|
60
60
|
<td><%= "INVOICE" %></td>
|
61
|
-
<td><%= "Amount:" %> <%= invoice.amount %><br/>
|
62
|
-
<%= "Balance:" %> <%= invoice.balance %><br/>
|
63
|
-
|
61
|
+
<td><%= "Amount:" %> <%= invoice.amount %> <%= @account.currency %><br/>
|
62
|
+
<%= "Balance:" %> <%= invoice.balance %> <%= @account.currency %><br/>
|
63
|
+
<% if invoice.credit_adjustment.present? && invoice.credit_adjustment > 0 %>
|
64
|
+
<%= "Credit adjustment:" %> <%= invoice.credit_adjustment %> <%= @account.currency %> <br/>
|
65
|
+
<% end %>
|
66
|
+
<% if invoice.credit_balance_adjustment.present? && invoice.credit_balance_adjustment > 0 %>
|
67
|
+
<%= "Credit balance adjustment:" %> <%= invoice.credit_balance_adjustment %> <%= @account.currency %> <br/>
|
68
|
+
<% end %>
|
69
|
+
<% if invoice.refund_adjustment.present? && invoice.refund_adjustment < 0 %>
|
70
|
+
<%= "Refund adjustment:" %> <%= invoice.refund_adjustment %> <%= @account.currency %> <br/>
|
71
|
+
<% end %>
|
72
|
+
<%= "Invoice #" %>
|
64
73
|
<%= link_to invoice.invoice_number, invoice_path(:id => invoice.invoice_id) %>
|
65
|
-
</td>
|
74
|
+
</td>
|
66
75
|
<td></td>
|
67
76
|
<td>
|
68
77
|
<% if invoice.balance > 0 %>
|
69
78
|
<nobr>
|
70
79
|
<%= link_to "External Payment",
|
71
80
|
kaui_engine.new_credit_path(:params => { :account_id => @account.account_id,
|
72
|
-
:invoice_id => invoice.invoice_id }),
|
81
|
+
:invoice_id => invoice.invoice_id }),
|
73
82
|
:class => "btn btn-mini" %>
|
74
83
|
</nobr>
|
75
84
|
<% end %>
|
@@ -106,34 +115,34 @@
|
|
106
115
|
<% payment.bundle_keys.split(",").each do |bundle_key| %>
|
107
116
|
<%= link_to @bundle_names[bundle_key], Kaui.bundle_home_path.call(bundle_key) %><br/>
|
108
117
|
<% end %>
|
109
|
-
</td>
|
118
|
+
</td>
|
110
119
|
<td><%= "PAYMENT" %></td>
|
111
120
|
<td>
|
112
|
-
<%= "Total amount:" %> <%= payment.amount %> <%= @account.currency %><br/>
|
113
|
-
<%= "Paid amount:" %> <%= payment.amount %> <%= @account.currency %><br/>
|
121
|
+
<%= "Total amount:" %> <%= payment.amount %> <%= @account.currency %><br/>
|
122
|
+
<%= "Paid amount:" %> <%= payment.amount %> <%= @account.currency %><br/>
|
114
123
|
<span <% if payment.status == 'Failed' %>class="alert-error" <% elsif payment.status == 'Success' %>class="alert-success" <% end %>>
|
115
124
|
<%= payment.status %>
|
116
|
-
</span>
|
125
|
+
</span>
|
117
126
|
<br/>
|
118
127
|
<%= "Invoice #" %> <%= link_to invoice.invoice_number, invoice_path(:id => invoice.invoice_id) %>
|
119
128
|
<td></td>
|
120
129
|
<td>
|
121
130
|
<% if payment.payment_id.present? %>
|
122
131
|
<nobr>
|
123
|
-
<%= link_to 'Refund', kaui_engine.new_refund_path(:params => { :payment_id => payment.payment_id,
|
132
|
+
<%= link_to 'Refund', kaui_engine.new_refund_path(:params => { :payment_id => payment.payment_id,
|
124
133
|
:account_id => @account.account_id,
|
125
|
-
:invoice_id => payment.invoice_id }),
|
134
|
+
:invoice_id => payment.invoice_id }),
|
126
135
|
:class => "btn btn-mini" %>
|
127
|
-
<%= link_to 'Chargeback', kaui_engine.new_chargeback_path(:params => { :payment_id => payment.payment_id,
|
136
|
+
<%= link_to 'Chargeback', kaui_engine.new_chargeback_path(:params => { :payment_id => payment.payment_id,
|
128
137
|
:account_id => @account.account_id,
|
129
|
-
:invoice_id => payment.invoice_id }),
|
138
|
+
:invoice_id => payment.invoice_id }),
|
130
139
|
:class => "btn btn-mini" %>
|
131
140
|
</nobr>
|
132
141
|
<% elsif invoice.balance > 0 %>
|
133
|
-
<%= link_to 'Pay', kaui_engine.new_chargeback_path(:params => { :payment_id => payment.payment_id,
|
142
|
+
<%= link_to 'Pay', kaui_engine.new_chargeback_path(:params => { :payment_id => payment.payment_id,
|
134
143
|
:account_id => @account.account_id,
|
135
|
-
:invoice_id => payment.invoice_id }),
|
136
|
-
:class => "btn btn-mini" %>
|
144
|
+
:invoice_id => payment.invoice_id }),
|
145
|
+
:class => "btn btn-mini" %>
|
137
146
|
<% end %>
|
138
147
|
</td>
|
139
148
|
</tr>
|
@@ -21,9 +21,9 @@
|
|
21
21
|
<dt>State:</dt>
|
22
22
|
<dd><%= @account.state %> </dd>
|
23
23
|
<dt>Country:</dt>
|
24
|
-
<dd><%= @account.country %> </dd>
|
24
|
+
<dd><%= @account.country %> </dd>
|
25
25
|
<dt>Phone:</dt>
|
26
|
-
<dd><%= @account.phone %> </dd>
|
26
|
+
<dd><%= @account.phone %> </dd>
|
27
27
|
<dt>External key:</dt>
|
28
28
|
<dd><%= @account.external_key %> </dd>
|
29
29
|
<%= render :partial => "kaui/tags/tags_table",
|
@@ -1,8 +1,9 @@
|
|
1
1
|
<div class="page-header">
|
2
|
-
<h1>
|
2
|
+
<h1>Apply Payment Chargeback</h1>
|
3
3
|
</div>
|
4
4
|
<%= form_for(@chargeback, :url => { :action => :create }, :html => { :class => "form-horizontal" }) do |f| %>
|
5
|
-
<%=
|
5
|
+
<%= hidden_field_tag :account_id, @account_id %>
|
6
|
+
<%= hidden_field_tag :invoice_id, @invoice_id %>
|
6
7
|
<%= f.hidden_field :payment_id %>
|
7
8
|
<fieldset>
|
8
9
|
<div class="control-group">
|
@@ -55,26 +56,26 @@
|
|
55
56
|
</div>
|
56
57
|
</div>
|
57
58
|
<div class="control-group">
|
58
|
-
<%= f.label :
|
59
|
+
<%= f.label :chaergeback_amount, "Chargeback amount", :class => "control-label" %>
|
59
60
|
<div class="controls">
|
60
|
-
<%= f.text_field :
|
61
|
+
<%= f.text_field :chargeback_amount, :class => 'input-small' %>
|
61
62
|
<p class="help-inline"><%= @account.currency %></p>
|
62
63
|
</div>
|
63
64
|
</div>
|
64
65
|
<div class="control-group">
|
65
|
-
|
66
|
+
<%= label_tag :reason, "Reason", :class => "control-label" %>
|
66
67
|
<div class="controls">
|
67
|
-
<%=
|
68
|
+
<%= select_tag :reason, options_for_select(Kaui::Chargeback::SAMPLE_REASON_CODES) %>
|
68
69
|
</div>
|
69
70
|
</div>
|
70
71
|
<div class="control-group">
|
71
|
-
<%=
|
72
|
+
<%= label_tag :comment, "Comment", :class => "control-label" %>
|
72
73
|
<div class="controls">
|
73
|
-
<%=
|
74
|
+
<%= text_area_tag :comment, "", :rows => 3, :class => 'input-xlarge' %>
|
74
75
|
</div>
|
75
76
|
</div>
|
76
77
|
<div class="form-actions">
|
77
|
-
<%= button_tag "
|
78
|
+
<%= button_tag "Apply chargeback", :class =>"btn btn-primary" %>
|
78
79
|
<%= link_to 'Back', :back, :class => 'btn' %>
|
79
80
|
</div>
|
80
81
|
</fieldset>
|
@@ -2,8 +2,8 @@
|
|
2
2
|
<h1>Refund Payment</h1>
|
3
3
|
</div>
|
4
4
|
<%= form_for(@refund, :url => { :action => :create }, :html => { :class => "form-horizontal" }) do |f| %>
|
5
|
-
<%=
|
6
|
-
<%=
|
5
|
+
<%= hidden_field_tag :account_id, @account_id %>
|
6
|
+
<%= hidden_field_tag :payment_id, @payment_id %>
|
7
7
|
<fieldset>
|
8
8
|
<div class="control-group">
|
9
9
|
<label class="control-label">Date</label>
|
@@ -46,6 +46,14 @@
|
|
46
46
|
</label>
|
47
47
|
</div>
|
48
48
|
</div>
|
49
|
+
<div class="control-group">
|
50
|
+
<%= f.label :adjusted, "Adjust Invoice?", :class => "control-label" %>
|
51
|
+
<div class="controls">
|
52
|
+
<label class="checkbox">
|
53
|
+
<%= f.check_box :adjusted %>
|
54
|
+
</label>
|
55
|
+
</div>
|
56
|
+
</div>
|
49
57
|
<div class="control-group">
|
50
58
|
<label class="control-label">Payment</label>
|
51
59
|
<div class="controls">
|
@@ -55,22 +63,22 @@
|
|
55
63
|
</div>
|
56
64
|
</div>
|
57
65
|
<div class="control-group">
|
58
|
-
<%= f.label :
|
66
|
+
<%= f.label :refund_amount, "Refund amount", :class => "control-label" %>
|
59
67
|
<div class="controls">
|
60
|
-
<%= f.text_field :
|
68
|
+
<%= f.text_field :refund_amount, :value => @payment.amount, :class => 'input-small' %>
|
61
69
|
<p class="help-inline"><%= @account.currency %></p>
|
62
70
|
</div>
|
63
71
|
</div>
|
64
72
|
<div class="control-group">
|
65
|
-
<%=
|
73
|
+
<%= label_tag :reason, "Reason", :class => "control-label" %>
|
66
74
|
<div class="controls">
|
67
|
-
<%=
|
75
|
+
<%= select_tag :reason, options_for_select(Kaui::Refund::SAMPLE_REASON_CODES) %>
|
68
76
|
</div>
|
69
77
|
</div>
|
70
78
|
<div class="control-group">
|
71
|
-
<%=
|
79
|
+
<%= label_tag :comment, "Comment", :class => "control-label" %>
|
72
80
|
<div class="controls">
|
73
|
-
<%=
|
81
|
+
<%= text_area_tag :comment, "", :rows => 3, :class => 'input-xlarge' %>
|
74
82
|
</div>
|
75
83
|
</div>
|
76
84
|
<div class="form-actions">
|
@@ -9,8 +9,9 @@
|
|
9
9
|
<th>Billing period</th>
|
10
10
|
<th>Start date</th>
|
11
11
|
<th>Charged through date</th>
|
12
|
+
<th>Notes</th>
|
12
13
|
<th>Actions</th>
|
13
|
-
</tr>
|
14
|
+
</tr>
|
14
15
|
</thead>
|
15
16
|
<tbody>
|
16
17
|
<% if @subscriptions.present? && !@subscriptions.nil? %>
|
@@ -21,15 +22,21 @@
|
|
21
22
|
<td><%= sub.billing_period.downcase.capitalize if sub.billing_period.present? %></td>
|
22
23
|
<td><%= format_date(sub.start_date).html_safe %></td>
|
23
24
|
<td><%= format_date(sub.charged_through_date).html_safe %></td>
|
25
|
+
<td>
|
26
|
+
<% if sub.canceledDate.present? %>
|
27
|
+
<%= "Canceled as of #{sub.canceledDate}" %>
|
28
|
+
<% end %>
|
29
|
+
</td>
|
24
30
|
<td>
|
25
31
|
<% if sub.product_category == 'BASE' %>
|
26
|
-
<%= link_to "Change", kaui_engine.edit_subscription_path(sub.subscription_id), :class => "btn btn-mini" %>
|
32
|
+
<%= link_to "Change", kaui_engine.edit_subscription_path(sub.subscription_id), :class => "btn btn-mini" unless sub.canceledDate.present? %>
|
27
33
|
<%= link_to "Cancel", kaui_engine.subscription_path(:id => sub.subscription_id), :method => :delete, :class => "btn btn-mini" %>
|
28
34
|
<%= link_to "Add Addons", kaui_engine.subscription_path(sub.subscription_id), :method => :post, :class => "btn btn-mini" %>
|
29
35
|
<% else %>
|
30
36
|
<% end %>
|
31
37
|
<% if sub.product_category == 'ADD_ON' %>
|
32
|
-
<%= link_to "Cancel", kaui_engine.subscription_path(:id => sub.subscription_id), :method => :delete, :class => "btn btn-mini" %>
|
38
|
+
<%= link_to "Cancel", kaui_engine.subscription_path(:id => sub.subscription_id), :method => :delete, :class => "btn btn-mini" unless sub.canceledDate.present? %>
|
39
|
+
<%= link_to "Reinstate", kaui_engine.subscription_path(:id => sub.subscription_id), :method => :put, :class => "btn btn-mini" if sub.canceledDate.present? %>
|
33
40
|
<% end %>
|
34
41
|
</td>
|
35
42
|
</tr>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% @page_title = "Edit Subscription
|
1
|
+
<% @page_title = "Edit Subscription" %>
|
2
2
|
<%= form_for(@subscription, :url => subscription_path(@subscription.subscription_id), :html => { :method => :put, :class => "form-horizontal" }) do |f| %>
|
3
3
|
<%= f.hidden_field :subscription_id %>
|
4
4
|
<div class="control-group">
|
@@ -21,7 +21,6 @@
|
|
21
21
|
</div>
|
22
22
|
<div class="form-actions">
|
23
23
|
<%= f.submit "Change", :class => 'btn btn-primary' %>
|
24
|
-
<%= link_to 'Show', kaui_engine.subscription_path(@subscription.subscription_id), :class => 'btn' %>
|
25
24
|
<%= link_to 'Back', :back, :class => 'btn' %>
|
26
25
|
</div>
|
27
26
|
<% end %>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<%= form_tag subscriptions_path, :class => "form-horizontal", :method => :get do %>
|
2
2
|
<fieldset>
|
3
|
-
<legend>Please enter
|
3
|
+
<legend>Please enter subsciption id</legend>
|
4
4
|
<div class="control-group">
|
5
|
-
<label class="control-label" for="
|
5
|
+
<label class="control-label" for="subscription_id">Subscription</label>
|
6
6
|
<div class="controls">
|
7
|
-
<%= text_field_tag '
|
7
|
+
<%= text_field_tag 'subscription_id', nil, :class => "input-xlarge", :id => "subscription_id" %>
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="form-actions">
|
@@ -10,13 +10,12 @@
|
|
10
10
|
<dd><%= @subscription.billing_period.downcase.capitalize %></dd>
|
11
11
|
<dt>Charged through</dt>
|
12
12
|
<dd> <%= format_date(@subscription.charged_through_date).html_safe %>
|
13
|
-
<dd><%= DateTime.parse(@subscription.charged_through_date).utc.to_s(:pretty) %> UTC</dd>
|
14
13
|
<dt>Price List</dt>
|
15
14
|
<dd><%= @subscription.price_list %></dd>
|
16
15
|
<dt>Start Date</dt>
|
17
|
-
<dd
|
16
|
+
<dd> <%= format_date(@subscription.start_date).html_safe %>
|
18
17
|
</dl>
|
19
18
|
<hr/>
|
20
19
|
<%= link_to "Change", kaui_engine.edit_subscription_path(@subscription.subscription_id), :class => "btn btn-mini" %>
|
21
|
-
<%= link_to "Cancel", kaui_engine.subscription_path(@subscription.subscription_id), :method => :delete, :confirm => "Are you sure
|
20
|
+
<%= link_to "Cancel", kaui_engine.subscription_path(@subscription.subscription_id), :method => :delete, :confirm => "Are you sure?", :class => "btn btn-mini" %>
|
22
21
|
<%= link_to "Add Addons", kaui_engine.subscription_path(@subscription.subscription_id), :method => :post, :class => "btn btn-mini" %>
|
data/lib/kaui/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kaui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alena Dudzinskaya
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-07-
|
18
|
+
date: 2012-07-17 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Rails UI plugin for Killbill administration.
|