kaui 0.1.6 → 0.1.7
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/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 %>
|