kaui 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +8 -1
- data/app/controllers/kaui/accounts_controller.rb +13 -9
- data/app/controllers/kaui/bundle_tags_controller.rb +15 -7
- data/app/controllers/kaui/bundles_controller.rb +11 -12
- data/app/controllers/kaui/credits_controller.rb +2 -1
- data/app/controllers/kaui/payments_controller.rb +2 -2
- data/app/controllers/kaui/subscriptions_controller.rb +40 -27
- data/app/helpers/kaui/killbill_helper.rb +38 -56
- data/app/models/kaui/account.rb +4 -0
- data/app/models/kaui/base.rb +8 -0
- data/app/models/kaui/chargeback.rb +4 -0
- data/app/models/kaui/invoice.rb +26 -0
- data/app/models/kaui/invoice_item.rb +4 -0
- data/app/models/kaui/payment.rb +9 -0
- data/app/models/kaui/refund.rb +4 -0
- data/app/views/kaui/account_timelines/show.html.erb +13 -21
- data/app/views/kaui/accounts/show.html.erb +15 -4
- data/app/views/kaui/chargebacks/new.html.erb +8 -1
- data/app/views/kaui/charges/new.html.erb +9 -2
- data/app/views/kaui/credits/new.html.erb +8 -1
- data/app/views/kaui/invoices/show.html.erb +4 -4
- data/app/views/kaui/payments/_payments_table.html.erb +2 -2
- data/app/views/kaui/payments/new.html.erb +16 -1
- data/app/views/kaui/refunds/new.html.erb +8 -1
- data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +2 -2
- data/app/views/kaui/subscriptions/edit.html.erb +1 -1
- data/lib/kaui/version.rb +1 -1
- data/test/dummy/app/assets/javascripts/application.js +1 -0
- data/test/dummy/log/development.log +6795 -0
- data/test/dummy/log/test.log +6534 -0
- data/test/dummy/tmp/cache/assets/C95/690/sprockets%2Fc4b083702793f7599f4a3069c50f89a8 +0 -0
- data/test/dummy/tmp/cache/assets/CC2/520/sprockets%2F9637f46d37325381f96d96d94ae0bc50 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/unit/kaui/base_test.rb +14 -0
- metadata +6 -4
- data/app/controllers/kaui/external_payments_controller.rb +0 -21
- data/app/views/kaui/external_payments/new.html.erb +0 -56
data/README.rdoc
CHANGED
@@ -17,6 +17,13 @@ You can run Kaui locally using the dummy app in the test directory:
|
|
17
17
|
Kaui expects the container app to define the <tt>current_user</tt> method, which returns the
|
18
18
|
name of the logged-in user. This is used by Killbill for auditing purposes.
|
19
19
|
|
20
|
+
You also need to install validation.js into your asset pipeline.
|
21
|
+
|
22
|
+
Gem dependencies:
|
23
|
+
|
24
|
+
gem 'rest-client', '~> 1.6.7'
|
25
|
+
gem 'money-rails', '~> 0.5.0'
|
26
|
+
|
20
27
|
=== Running tests
|
21
28
|
|
22
29
|
Prepare a kaui_test database locally to be able to run the test suite:
|
@@ -26,4 +33,4 @@ Prepare a kaui_test database locally to be able to run the test suite:
|
|
26
33
|
|
27
34
|
You can run tests using rake:
|
28
35
|
|
29
|
-
rake test
|
36
|
+
rake test
|
@@ -25,17 +25,21 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
25
25
|
end
|
26
26
|
|
27
27
|
if @account.present? and @account.is_a? Kaui::Account
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
begin
|
29
|
+
@tags = Kaui::KillbillHelper::get_tags_for_account(@account.account_id).sort
|
30
|
+
@account_emails = Kaui::AccountEmail.where(:account_id => @account.account_id)
|
31
|
+
@payment_methods = Kaui::KillbillHelper::get_payment_methods(@account.account_id)
|
32
|
+
@bundles = Kaui::KillbillHelper::get_bundles(@account.account_id)
|
33
|
+
@subscriptions_by_bundle_id = {}
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
@bundles.each do |bundle|
|
36
|
+
subscriptions = Kaui::KillbillHelper::get_subscriptions_for_bundle(bundle.bundle_id)
|
37
|
+
if subscriptions.present?
|
38
|
+
@subscriptions_by_bundle_id[bundle.bundle_id.to_s] = (@subscriptions_by_bundle_id[bundle.bundle_id.to_s] || []) + subscriptions
|
39
|
+
end
|
38
40
|
end
|
41
|
+
rescue => e
|
42
|
+
flash[:error] = "Error while retrieving account information for account: #{e.message} #{e.response}"
|
39
43
|
end
|
40
44
|
else
|
41
45
|
flash[:error] = "Account #{@account_id} not found: #{@account}"
|
@@ -11,18 +11,26 @@ class Kaui::BundleTagsController < Kaui::EngineController
|
|
11
11
|
|
12
12
|
def edit
|
13
13
|
@bundle_id = params[:bundle_id]
|
14
|
-
|
14
|
+
begin
|
15
|
+
@available_tags = Kaui::KillbillHelper::get_tag_definitions.sort {|tag_a, tag_b| tag_a.name.downcase <=> tag_b.name.downcase }
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
@bundle = Kaui::KillbillHelper::get_bundle(@bundle_id)
|
18
|
+
@tags = Kaui::KillbillHelper::get_tags_for_bundle(@bundle_id)
|
19
|
+
rescue => e
|
20
|
+
flash[:error] = "Error while retrieving tags information: #{e.message} #{e.response}"
|
21
|
+
end
|
18
22
|
end
|
19
23
|
|
20
24
|
def update
|
21
|
-
|
22
|
-
|
25
|
+
begin
|
26
|
+
bundle = Kaui::KillbillHelper::get_bundle(params[:bundle_id])
|
27
|
+
tags = params[:tags]
|
23
28
|
|
24
|
-
|
25
|
-
|
29
|
+
Kaui::KillbillHelper::set_tags_for_bundle(bundle.bundle_id, tags)
|
30
|
+
redirect_to Kaui.bundle_home_path.call(bundle.bundle_id)
|
31
|
+
rescue => e
|
32
|
+
flash[:error] = "Error while updating tags: #{e.message} #{e.response}"
|
33
|
+
end
|
26
34
|
end
|
27
35
|
|
28
36
|
end
|
@@ -9,19 +9,18 @@ class Kaui::BundlesController < Kaui::EngineController
|
|
9
9
|
def show
|
10
10
|
key = params[:id]
|
11
11
|
if key.present?
|
12
|
-
|
13
|
-
|
14
|
-
@bundle = Kaui::KillbillHelper.get_bundle(key)
|
15
|
-
else
|
16
|
-
@bundle = Kaui::KillbillHelper.get_bundle_by_external_key(key, params[:account_id])
|
17
|
-
end
|
12
|
+
begin
|
13
|
+
@bundle = Kaui::KillbillHelper::get_bundle_by_key(key, params[:account_id])
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
15
|
+
if @bundle.present?
|
16
|
+
@account = Kaui::KillbillHelper::get_account_by_bundle_id(@bundle.bundle_id)
|
17
|
+
@subscriptions = Kaui::KillbillHelper::get_subscriptions_for_bundle(@bundle.bundle_id)
|
18
|
+
else
|
19
|
+
flash[:error] = "Bundle #{key} not found"
|
20
|
+
render :action => :index
|
21
|
+
end
|
22
|
+
rescue => e
|
23
|
+
flash[:error] = "Error while retrieving bundle information for #{key}: #{e.message} #{e.response}"
|
25
24
|
end
|
26
25
|
else
|
27
26
|
flash[:error] = "No id given"
|
@@ -23,7 +23,8 @@ class Kaui::CreditsController < Kaui::EngineController
|
|
23
23
|
@invoice = Kaui::KillbillHelper::get_invoice(@invoice_id) unless @invoice_id.nil?
|
24
24
|
credit_amount = @invoice.balance unless @invoice.nil?
|
25
25
|
|
26
|
-
@credit = Kaui::Credit.new("accountId" => @account_id, "invoiceId" => @invoice_id,
|
26
|
+
@credit = Kaui::Credit.new("accountId" => @account_id, "invoiceId" => @invoice_id,
|
27
|
+
"creditAmount" => credit_amount, "effectiveDate" => Time.now.utc.iso8601)
|
27
28
|
end
|
28
29
|
|
29
30
|
def create
|
@@ -11,9 +11,9 @@ class Kaui::PaymentsController < Kaui::EngineController
|
|
11
11
|
|
12
12
|
def create
|
13
13
|
payment = Kaui::Payment.new(params[:payment])
|
14
|
-
|
15
14
|
if payment.present?
|
16
|
-
|
15
|
+
payment.external = (payment.external == "1")
|
16
|
+
success = Kaui::KillbillHelper::create_payment(payment, payment.external, current_user, params[:reason], params[:comment])
|
17
17
|
if success
|
18
18
|
flash[:info] = "Payment created"
|
19
19
|
end
|
@@ -18,13 +18,17 @@ class Kaui::SubscriptionsController < Kaui::EngineController
|
|
18
18
|
def new
|
19
19
|
bundle_id = params[:bundle_id]
|
20
20
|
@base_subscription = params[:base_subscription]
|
21
|
-
|
22
|
-
|
23
|
-
@catalog = Kaui::KillbillHelper::get_available_addons(@base_subscription)
|
24
|
-
else
|
25
|
-
@catalog = Kaui::KillbillHelper::get_available_base_plans()
|
26
|
-
end
|
21
|
+
begin
|
22
|
+
@bundle = Kaui::KillbillHelper::get_bundle(bundle_id)
|
27
23
|
|
24
|
+
if @base_subscription.present?
|
25
|
+
@catalog = Kaui::KillbillHelper::get_available_addons(@base_subscription)
|
26
|
+
else
|
27
|
+
@catalog = Kaui::KillbillHelper::get_available_base_plans()
|
28
|
+
end
|
29
|
+
rescue => e
|
30
|
+
flash[:error] = "Error while trying to start new subscription creation: #{e.message} #{e.response}"
|
31
|
+
end
|
28
32
|
@subscription = Kaui::Subscription.new("bundleId" => bundle_id)
|
29
33
|
end
|
30
34
|
|
@@ -50,7 +54,7 @@ class Kaui::SubscriptionsController < Kaui::EngineController
|
|
50
54
|
Kaui::KillbillHelper::create_subscription(@subscription, current_user)
|
51
55
|
redirect_to Kaui.bundle_home_path.call(@bundle.bundle_id)
|
52
56
|
rescue => e
|
53
|
-
flash[:error] = e.message
|
57
|
+
flash[:error] = "Error while creating the new subscription: #{e.message} #{e.response}"
|
54
58
|
render :new
|
55
59
|
end
|
56
60
|
end
|
@@ -64,14 +68,18 @@ class Kaui::SubscriptionsController < Kaui::EngineController
|
|
64
68
|
@billing_period = params[:billing_period]
|
65
69
|
@price_list = params[:price_list]
|
66
70
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
begin
|
72
|
+
@subscription = Kaui::Subscription.new(:bundle_id => @bundle_id,
|
73
|
+
:product_name => @product_name,
|
74
|
+
:product_category => @product_category,
|
75
|
+
:billing_period => @billing_period,
|
76
|
+
:price_list => @price_list)
|
77
|
+
|
78
|
+
@bundle = Kaui::KillbillHelper.get_bundle(subscription.bundle_id)
|
79
|
+
@available_plans = Kaui::KillbillHelper.get_available_addons(params[:base_product_name])
|
80
|
+
rescue => e
|
81
|
+
flash[:error] = "Error while adding an addon: #{e.message} #{e.response}"
|
82
|
+
end
|
75
83
|
end
|
76
84
|
|
77
85
|
def edit
|
@@ -95,21 +103,26 @@ class Kaui::SubscriptionsController < Kaui::EngineController
|
|
95
103
|
|
96
104
|
def update
|
97
105
|
if params.has_key?(:subscription) && params[:subscription].has_key?(:subscription_id)
|
98
|
-
subscription = Kaui::KillbillHelper::get_subscription(params[:subscription][:subscription_id])
|
99
|
-
bundle = Kaui::KillbillHelper::get_bundle(subscription.bundle_id)
|
100
|
-
catalog = Kaui::KillbillHelper::get_available_base_plans
|
101
106
|
|
102
|
-
|
103
|
-
|
107
|
+
begin
|
108
|
+
subscription = Kaui::KillbillHelper::get_subscription(params[:subscription][:subscription_id])
|
109
|
+
bundle = Kaui::KillbillHelper::get_bundle(subscription.bundle_id)
|
110
|
+
catalog = Kaui::KillbillHelper::get_available_base_plans
|
104
111
|
|
105
|
-
|
106
|
-
|
107
|
-
subscription.product_name = plan["productName"]
|
108
|
-
subscription.price_list = plan["priceListName"]
|
109
|
-
subscription.subscription_id = params[:subscription][:subscription_id]
|
112
|
+
plan = catalog[params[:plan_name]]
|
113
|
+
requested_date = params[:requested_date]
|
110
114
|
|
111
|
-
|
112
|
-
|
115
|
+
subscription.billing_period = plan["billingPeriod"]
|
116
|
+
subscription.product_category = plan["productCategory"]
|
117
|
+
subscription.product_name = plan["productName"]
|
118
|
+
subscription.price_list = plan["priceListName"]
|
119
|
+
subscription.subscription_id = params[:subscription][:subscription_id]
|
120
|
+
|
121
|
+
Kaui::KillbillHelper::update_subscription(subscription, requested_date, current_user)
|
122
|
+
redirect_to Kaui.bundle_home_path.call(bundle.bundle_id)
|
123
|
+
rescue => e
|
124
|
+
flash[:error] = "Error while updating subscription: #{e.message} #{e.response}"
|
125
|
+
end
|
113
126
|
else
|
114
127
|
flash[:error] = "No subscription given"
|
115
128
|
redirect_to :back
|
@@ -105,7 +105,6 @@ module Kaui
|
|
105
105
|
"X-Killbill-Comment" => "#{comment}"
|
106
106
|
return data[:code] < 300
|
107
107
|
rescue => e
|
108
|
-
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
109
108
|
end
|
110
109
|
end
|
111
110
|
|
@@ -121,77 +120,60 @@ module Kaui
|
|
121
120
|
"X-Killbill-Comment" => "#{comment}"
|
122
121
|
return data[:code] = 200
|
123
122
|
rescue => e
|
124
|
-
puts "#{$!}\n\t" + e.backtrace.join("\n\t")
|
125
123
|
end
|
126
124
|
end
|
127
125
|
|
128
126
|
############## BUNDLE ##############
|
129
127
|
|
130
|
-
def self.
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
rescue => e
|
128
|
+
def self.get_bundle_by_key(key, account_id)
|
129
|
+
# support id (UUID) and external key search
|
130
|
+
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}/
|
131
|
+
@bundle = Kaui::KillbillHelper::get_bundle(key)
|
132
|
+
else
|
133
|
+
@bundle = Kaui::KillbillHelper::get_bundle_by_external_key(key, account_id)
|
137
134
|
end
|
138
135
|
end
|
139
136
|
|
137
|
+
def self.get_bundles(account_id)
|
138
|
+
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}/bundles"
|
139
|
+
process_response(data, :multiple) {|json| Kaui::Bundle.new(json) }
|
140
|
+
end
|
141
|
+
|
140
142
|
def self.get_bundle_by_external_key(account_id, external_key)
|
141
|
-
|
142
|
-
|
143
|
-
process_response(data, :single) {|json| Kaui::Bundle.new(json) }
|
144
|
-
rescue => e
|
145
|
-
end
|
143
|
+
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}/bundles?externalKey=#{external_key}"
|
144
|
+
process_response(data, :single) {|json| Kaui::Bundle.new(json) }
|
146
145
|
end
|
147
146
|
|
148
147
|
def self.get_bundle(bundle_id)
|
149
|
-
|
150
|
-
|
151
|
-
process_response(data, :single) {|json| Kaui::Bundle.new(json) }
|
152
|
-
rescue => e
|
153
|
-
end
|
148
|
+
data = call_killbill :get, "/1.0/kb/bundles/#{bundle_id}"
|
149
|
+
process_response(data, :single) {|json| Kaui::Bundle.new(json) }
|
154
150
|
end
|
155
151
|
|
156
152
|
def self.transfer_bundle(bundle_id, new_account_id, cancel_immediately = false, transfer_addons = true, current_user = nil, reason = nil, comment = nil)
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
return data[:code] < 300
|
166
|
-
|
167
|
-
rescue => e
|
168
|
-
end
|
153
|
+
data = call_killbill :put,
|
154
|
+
"/1.0/kb/bundles/#{bundle_id}?cancelImmediately=#{cancel_immediately}&transferAddOn=#{transfer_addons}",
|
155
|
+
ActiveSupport::JSON.encode("accountId" => new_account_id),
|
156
|
+
:content_type => :json,
|
157
|
+
"X-Killbill-CreatedBy" => current_user,
|
158
|
+
"X-Killbill-Reason" => "#{reason}",
|
159
|
+
"X-Killbill-Comment" => "#{comment}"
|
160
|
+
return data[:code] < 300
|
169
161
|
end
|
170
162
|
|
171
163
|
############## SUBSCRIPTION ##############
|
172
164
|
|
173
165
|
def self.get_subscriptions_for_bundle(bundle_id)
|
174
|
-
|
175
|
-
|
176
|
-
process_response(data, :multiple) {|json| Kaui::Subscription.new(json) }
|
177
|
-
rescue RestClient::BadRequest
|
178
|
-
[]
|
179
|
-
rescue => e
|
180
|
-
end
|
166
|
+
data = call_killbill :get, "/1.0/kb/bundles/#{bundle_id}/subscriptions"
|
167
|
+
process_response(data, :multiple) {|json| Kaui::Subscription.new(json) }
|
181
168
|
end
|
182
169
|
|
183
170
|
def self.get_subscriptions(account_id)
|
184
|
-
begin
|
185
171
|
subscriptions = []
|
186
172
|
bundles = get_bundles(account_id)
|
187
173
|
bundles.each do |bundle|
|
188
174
|
subscriptions += get_subscriptions_for_bundle(bundle.bundle_id)
|
189
175
|
end
|
190
176
|
subscriptions
|
191
|
-
rescue RestClient::BadRequest
|
192
|
-
[]
|
193
|
-
rescue => e
|
194
|
-
end
|
195
177
|
end
|
196
178
|
|
197
179
|
def self.get_subscription(subscription_id)
|
@@ -223,7 +205,8 @@ module Kaui
|
|
223
205
|
begin
|
224
206
|
subscription_data = Kaui::Subscription.camelize(subscription.to_hash)
|
225
207
|
date_param = "?requestedDate=" + requested_date.to_s unless requested_date.blank?
|
226
|
-
|
208
|
+
# We don't want to pass events
|
209
|
+
subscription_data.delete(:events)
|
227
210
|
data = call_killbill :put,
|
228
211
|
"/1.0/kb/subscriptions/#{subscription.subscription_id}#{date_param}",
|
229
212
|
ActiveSupport::JSON.encode(subscription_data, :root => false),
|
@@ -337,22 +320,16 @@ module Kaui
|
|
337
320
|
############## CATALOG ##############
|
338
321
|
|
339
322
|
def self.get_available_addons(base_product_name)
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
data[:json].inject({}) {|catalog_hash, item| catalog_hash.merge!(item["planName"] => item) }
|
344
|
-
end
|
345
|
-
rescue => e
|
323
|
+
data = call_killbill :get, "/1.0/kb/catalog/availableAddons?baseProductName=#{base_product_name}"
|
324
|
+
if data.has_key?(:json)
|
325
|
+
data[:json].inject({}) {|catalog_hash, item| catalog_hash.merge!(item["planName"] => item) }
|
346
326
|
end
|
347
327
|
end
|
348
328
|
|
349
329
|
def self.get_available_base_plans()
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
data[:json].inject({}) {|catalog_hash, item| catalog_hash.merge!(item["planName"] => item) }
|
354
|
-
end
|
355
|
-
rescue => e
|
330
|
+
data = call_killbill :get, "/1.0/kb/catalog/availableBasePlans"
|
331
|
+
if data.has_key?(:json)
|
332
|
+
data[:json].inject({}) {|catalog_hash, item| catalog_hash.merge!(item["planName"] => item) }
|
356
333
|
end
|
357
334
|
end
|
358
335
|
|
@@ -381,6 +358,11 @@ module Kaui
|
|
381
358
|
payment_data = Kaui::Payment.camelize(payment.to_hash)
|
382
359
|
|
383
360
|
if payment.invoice_id.present?
|
361
|
+
# We should use different model for POST and GEt, this seems fragile...
|
362
|
+
payment_data.delete(:external)
|
363
|
+
payment_data.delete(:refunds)
|
364
|
+
payment_data.delete(:chargebacks)
|
365
|
+
payment_data.delete(:audit_logs)
|
384
366
|
data = call_killbill :post,
|
385
367
|
"/1.0/kb/invoices/#{payment.invoice_id}/payments?externalPayment=#{external}",
|
386
368
|
ActiveSupport::JSON.encode(payment_data, :root => false),
|
data/app/models/kaui/account.rb
CHANGED
data/app/models/kaui/base.rb
CHANGED
@@ -96,6 +96,14 @@ class Kaui::Base
|
|
96
96
|
result
|
97
97
|
end
|
98
98
|
|
99
|
+
def self.to_money(amount, currency)
|
100
|
+
begin
|
101
|
+
return Money.new(amount.to_f * 100, currency)
|
102
|
+
rescue => e
|
103
|
+
end if currency.present?
|
104
|
+
Money.new(amount.to_f * 100, "USD")
|
105
|
+
end
|
106
|
+
|
99
107
|
def self.camelize(value)
|
100
108
|
case value
|
101
109
|
when Array
|
data/app/models/kaui/invoice.rb
CHANGED
@@ -33,4 +33,30 @@ class Kaui::Invoice < Kaui::Base
|
|
33
33
|
:bundle_keys => data['bundleKeys'],
|
34
34
|
:audit_logs => data['auditLogs'])
|
35
35
|
end
|
36
|
+
|
37
|
+
# TODO - fix invoice json to return the currency
|
38
|
+
|
39
|
+
def amount_to_money(currency)
|
40
|
+
Kaui::Base.to_money(amount, currency)
|
41
|
+
end
|
42
|
+
|
43
|
+
def balance_to_money(currency)
|
44
|
+
Kaui::Base.to_money(balance, currency)
|
45
|
+
end
|
46
|
+
|
47
|
+
def payment_amount_to_money(currency)
|
48
|
+
Kaui::Base.to_money(payment_amount, currency)
|
49
|
+
end
|
50
|
+
|
51
|
+
def refund_adjustment_to_money(currency)
|
52
|
+
Kaui::Base.to_money(refund_adjustment, currency)
|
53
|
+
end
|
54
|
+
|
55
|
+
def credit_balance_adjustment_to_money(currency)
|
56
|
+
Kaui::Base.to_money(credit_balance_adjustment, currency)
|
57
|
+
end
|
58
|
+
|
59
|
+
def credit_adjustment_to_money(currency)
|
60
|
+
Kaui::Base.to_money(credit_adjustment, currency)
|
61
|
+
end
|
36
62
|
end
|
data/app/models/kaui/payment.rb
CHANGED
@@ -22,8 +22,17 @@ class Kaui::Payment < Kaui::Base
|
|
22
22
|
define_attr :ext_second_payment_id_ref
|
23
23
|
define_attr :gateway_error_code
|
24
24
|
define_attr :gateway_error_msg
|
25
|
+
define_attr :external
|
25
26
|
|
26
27
|
has_many :refunds, Kaui::Refund
|
27
28
|
has_many :chargebacks, Kaui::Chargeback
|
28
29
|
has_many :audit_logs, Kaui::AuditLog
|
30
|
+
|
31
|
+
def amount_to_money
|
32
|
+
Kaui::Base.to_money(amount, currency)
|
33
|
+
end
|
34
|
+
|
35
|
+
def paid_amount_to_money
|
36
|
+
Kaui::Base.to_money(paid_amount, currency)
|
37
|
+
end
|
29
38
|
end
|
data/app/models/kaui/refund.rb
CHANGED
@@ -62,16 +62,16 @@
|
|
62
62
|
<% end %>
|
63
63
|
</td>
|
64
64
|
<td><%= "INVOICE" %></td>
|
65
|
-
<td><%= "Amount:" %> <%= invoice.
|
66
|
-
<%= "Balance:" %> <%= invoice.
|
67
|
-
<% if invoice.credit_adjustment.present? &&
|
68
|
-
<%= "Credit adjustment:" %> <%= invoice.
|
65
|
+
<td><%= "Amount:" %> <%= humanized_money_with_symbol invoice.amount_to_money(@account.currency) %><br/>
|
66
|
+
<%= "Balance:" %> <%= humanized_money_with_symbol invoice.balance_to_money(@account.currency) %><br/>
|
67
|
+
<% if invoice.credit_adjustment.present? && invoice.credit_adjustment > 0 %>
|
68
|
+
<%= "Credit adjustment:" %> <%= humanized_money_with_symbol invoice.credit_adjustment_to_money(@account.currency) %><br/>
|
69
69
|
<% end %>
|
70
|
-
<% if invoice.credit_balance_adjustment.present? &&
|
71
|
-
<%= "Credit balance adjustment:" %> <%= invoice.
|
70
|
+
<% if invoice.credit_balance_adjustment.present? && invoice.credit_balance_adjustment > 0 %>
|
71
|
+
<%= "Credit balance adjustment:" %> <%= humanized_money_with_symbol invoice.credit_balance_adjustment_to_money(@account.currency) %><br/>
|
72
72
|
<% end %>
|
73
|
-
<% if invoice.refund_adjustment.present? &&
|
74
|
-
<%= "Refund adjustment:" %> <%= invoice.
|
73
|
+
<% if invoice.refund_adjustment.present? && invoice.refund_adjustment < 0 %>
|
74
|
+
<%= "Refund adjustment:" %> <%= humanized_money_with_symbol invoice.refund_adjustment_to_money(@account.currency) %><br/>
|
75
75
|
<% end %>
|
76
76
|
<%= "Invoice #" %>
|
77
77
|
<%= link_to invoice.invoice_number, invoice_path(:id => invoice.invoice_id) %>
|
@@ -91,18 +91,10 @@
|
|
91
91
|
:invoice_id => invoice.invoice_id }),
|
92
92
|
:class => "btn btn-mini" %>
|
93
93
|
</nobr>
|
94
|
-
<nobr>
|
95
|
-
<%= link_to "External Payment",
|
96
|
-
kaui_engine.new_payment_path(:params => { :account_id => invoice.account_id,
|
97
|
-
:invoice_id => invoice.invoice_id,
|
98
|
-
:external => "true" }),
|
99
|
-
:class => "btn btn-mini" %>
|
100
|
-
</nobr>
|
101
94
|
<nobr>
|
102
95
|
<%= link_to "Payment",
|
103
96
|
kaui_engine.new_payment_path(:params => { :account_id => invoice.account_id,
|
104
|
-
:invoice_id => invoice.invoice_id,
|
105
|
-
:external => "false" }),
|
97
|
+
:invoice_id => invoice.invoice_id }),
|
106
98
|
:class => "btn btn-mini" %>
|
107
99
|
</nobr>
|
108
100
|
<% end %>
|
@@ -144,7 +136,7 @@
|
|
144
136
|
<td>
|
145
137
|
<%= "Adjusted:" %> <% if refund.adjusted %>yes<% else %>no<% end %><br/>
|
146
138
|
<%= "Payment id:" %> <%= refund.payment_id %><br/>
|
147
|
-
<%= "Refund Amount:" %> <%= refund.
|
139
|
+
<%= "Refund Amount:" %> <%= humanized_money_with_symbol refund.amount_to_money %><br/>
|
148
140
|
</td>
|
149
141
|
<td>
|
150
142
|
<% if refund.audit_logs.present? %>
|
@@ -183,7 +175,7 @@
|
|
183
175
|
<td><%= "CHARGEBACK" %></td>
|
184
176
|
<td>
|
185
177
|
<%= "Payment id:" %> <%= chargeback.payment_id %><br/>
|
186
|
-
<%= "Chargeback Amount:" %> <%= chargeback.
|
178
|
+
<%= "Chargeback Amount:" %> <%= humanized_money_with_symbol chargeback.chargeback_amount_to_money(@account.currency) %><br/>
|
187
179
|
</td>
|
188
180
|
<td>
|
189
181
|
<% if chargeback.audit_logs.present? %>
|
@@ -227,8 +219,8 @@
|
|
227
219
|
<td><%= "PAYMENT" %></td>
|
228
220
|
<td>
|
229
221
|
<%= "Payment id:" %> <%= payment.payment_id %><br/>
|
230
|
-
<%= "Total amount:" %> <%=
|
231
|
-
<%= "Paid amount:" %> <%= payment.
|
222
|
+
<%= "Total amount:" %> <%= humanized_money_with_symbol payment.amount_to_money %><br/>
|
223
|
+
<%= "Paid amount:" %> <%= humanized_money_with_symbol payment.paid_amount_to_money %><br/>
|
232
224
|
<span <% if payment.status == 'FAILED' %>class="alert-error" <% elsif payment.status == 'SUCCESS' %>class="alert-success" <% end %>>
|
233
225
|
<%= payment.status %>
|
234
226
|
</span>
|
@@ -32,15 +32,26 @@
|
|
32
32
|
<dd><%= @account.external_key %> </dd>
|
33
33
|
<dt>Account balance:</dt>
|
34
34
|
<% if @account.balance.nil? %>
|
35
|
-
<dd>unknown
|
35
|
+
<dd>unknown
|
36
36
|
<% elsif @account.balance <= 0 %>
|
37
|
-
<dd><span class="label label-success" ><%= @account.
|
37
|
+
<dd><span class="label label-success" ><%= humanized_money_with_symbol @account.balance_to_money %></span>
|
38
38
|
<% else %>
|
39
|
-
<dd><span class="label label-important" ><%= @account.
|
39
|
+
<dd><span class="label label-important" ><%= humanized_money_with_symbol @account.balance_to_money %></span>
|
40
40
|
<% end %>
|
41
|
+
|
42
|
+
<nobr>
|
43
|
+
<%= link_to 'Charge',
|
44
|
+
kaui_engine.new_charge_path(:params => { :account_id => @account.account_id }),
|
45
|
+
:class => "btn btn-mini" %>
|
46
|
+
</nobr>
|
47
|
+
<nobr>
|
48
|
+
<%= link_to 'Credit',
|
49
|
+
kaui_engine.new_credit_path(:params => { :account_id => @account.account_id }),
|
50
|
+
:class => "btn btn-mini" %>
|
51
|
+
</nobr>
|
52
|
+
</dd>
|
41
53
|
<dt>Notified for inv?</dt>
|
42
54
|
<dd><%= @account.is_notified_for_invoices %> <%= link_to "Toggle", kaui_engine.toggle_email_notifications_account_path(@account.account_id, :is_notified => !@account.is_notified_for_invoices), :method => :post, :class => 'btn btn-mini' %></dd>
|
43
|
-
|
44
55
|
<%= render :partial => "kaui/tags/tags_table",
|
45
56
|
:locals => { :tags => @tags, :tags_url_or_path => kaui_engine.edit_account_tags_path(:params => { :account_id => @account.account_id }) } %>
|
46
57
|
<%= render :partial => "kaui/account_emails/account_emails_table",
|
@@ -74,7 +74,7 @@
|
|
74
74
|
<div class="control-group">
|
75
75
|
<%= f.label :chargeback_amount, "Chargeback amount", :class => "control-label" %>
|
76
76
|
<div class="controls">
|
77
|
-
<%= f.text_field :chargeback_amount, :class => 'input-small' %>
|
77
|
+
<%= f.text_field :chargeback_amount, :id => 'chargeback_amount', :class => 'input-small' %>
|
78
78
|
<p class="help-inline"><%= @account.currency %></p>
|
79
79
|
</div>
|
80
80
|
</div>
|
@@ -96,3 +96,10 @@
|
|
96
96
|
</div>
|
97
97
|
</fieldset>
|
98
98
|
<% end %>
|
99
|
+
<%= javascript_tag do %>
|
100
|
+
$(document).ready(function() {
|
101
|
+
$("#chargeback_amount").keydown(function(event) {
|
102
|
+
preventNonNumericValues(event);
|
103
|
+
});
|
104
|
+
});
|
105
|
+
<% end %>
|