kaui 0.1.11 → 0.1.12
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/kaui/accounts_controller.rb +12 -2
- data/app/controllers/kaui/bundles_controller.rb +1 -1
- data/app/controllers/kaui/invoice_items_controller.rb +11 -0
- data/app/controllers/kaui/invoices_controller.rb +3 -0
- data/app/controllers/kaui/refunds_controller.rb +12 -2
- data/app/controllers/kaui/subscriptions_controller.rb +1 -1
- data/app/helpers/kaui/killbill_helper.rb +35 -10
- data/app/models/kaui/account.rb +6 -0
- data/app/models/kaui/refund.rb +2 -1
- data/app/views/kaui/account_timelines/show.html.erb +104 -46
- data/app/views/kaui/accounts/show.html.erb +32 -3
- data/app/views/kaui/invoices/show.html.erb +25 -2
- data/app/views/kaui/refunds/new.html.erb +212 -15
- data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +25 -3
- data/config/routes.rb +2 -1
- data/lib/kaui/version.rb +1 -1
- data/test/dummy/app/assets/javascripts/application.js +1 -0
- data/test/dummy/log/development.log +13530 -0
- data/test/dummy/log/test.log +1634 -0
- data/test/dummy/test/fixtures/refunds.yml +2 -1
- data/test/dummy/tmp/cache/assets/C8D/080/sprockets%2F4556c595251e3b8d4f688467e330da26 +0 -0
- data/test/dummy/tmp/cache/assets/CFF/A00/sprockets%2F642f58fb154eff788f45c881b294e818 +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/dummy/tmp/pids/server.pid +1 -0
- data/test/test_helper.rb +6 -2
- data/test/unit/kaui/base_test.rb +18 -12
- data/test/unit/kaui/refund_test.rb +2 -1
- metadata +8 -2
@@ -15,7 +15,7 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
15
15
|
key.strip!
|
16
16
|
|
17
17
|
begin
|
18
|
-
@account = Kaui::KillbillHelper::
|
18
|
+
@account = Kaui::KillbillHelper::get_account_by_key_with_balance_and_cba(key)
|
19
19
|
rescue URI::InvalidURIError => e
|
20
20
|
flash[:error] = "Error while retrieving the account for #{key}: #{e.message}"
|
21
21
|
render :action => :index and return
|
@@ -161,9 +161,19 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
161
161
|
begin
|
162
162
|
@account = Kaui::KillbillHelper::update_email_notifications(params[:id], params[:is_notified])
|
163
163
|
flash[:notice] = "Email preferences updated"
|
164
|
-
redirect_to :back
|
165
164
|
rescue => e
|
166
165
|
flash[:error] = "Error while switching email notifications #{invoice_id}: #{as_string(e)}"
|
167
166
|
end
|
167
|
+
redirect_to :back
|
168
|
+
end
|
169
|
+
|
170
|
+
def pay_all_invoices
|
171
|
+
begin
|
172
|
+
@account = Kaui::KillbillHelper::pay_all_invoices(params[:id], false, current_user, params[:reason], params[:comment])
|
173
|
+
flash[:notice] = "Successfully triggered a payment for all unpaid invoices"
|
174
|
+
rescue => e
|
175
|
+
flash[:error] = "Error while triggering payments: #{as_string(e)}"
|
176
|
+
end
|
177
|
+
redirect_to :back
|
168
178
|
end
|
169
179
|
end
|
@@ -46,7 +46,7 @@ class Kaui::BundlesController < Kaui::EngineController
|
|
46
46
|
key = params[:new_account_key]
|
47
47
|
if key.present?
|
48
48
|
begin
|
49
|
-
result = Kaui::KillbillHelper.get_account_by_key(key
|
49
|
+
result = Kaui::KillbillHelper.get_account_by_key(key)
|
50
50
|
rescue => e
|
51
51
|
flash[:error] = "Error while retrieving account for #{key}: #{as_string(e)}"
|
52
52
|
render :action => :index
|
@@ -25,6 +25,17 @@ class Kaui::InvoiceItemsController < Kaui::EngineController
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
def destroy
|
29
|
+
begin
|
30
|
+
Kaui::KillbillHelper.delete_cba(params[:account_id], params[:invoice_id], params[:id], current_user, params[:reason], params[:comment])
|
31
|
+
flash[:notice] = "CBA deleted"
|
32
|
+
redirect_to kaui_engine.invoice_path(params[:invoice_id])
|
33
|
+
rescue => e
|
34
|
+
flash[:error] = "Error while deleting the CBA: #{as_string(e)}"
|
35
|
+
redirect_to kaui_engine.invoice_path(params[:invoice_id])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
28
39
|
private
|
29
40
|
|
30
41
|
def find_invoice_item
|
@@ -16,8 +16,11 @@ class Kaui::InvoicesController < Kaui::EngineController
|
|
16
16
|
|
17
17
|
@subscriptions = {}
|
18
18
|
@bundles = {}
|
19
|
+
@cba_items_not_deleteable = []
|
19
20
|
if @invoice.items.present?
|
20
21
|
@invoice.items.each do |item|
|
22
|
+
@cba_items_not_deleteable << item.linked_invoice_item_id if item.description =~ /account credit/ and item.amount < 0
|
23
|
+
|
21
24
|
unless item.subscription_id.nil? || @subscriptions.has_key?(item.subscription_id)
|
22
25
|
@subscriptions[item.subscription_id] = Kaui::KillbillHelper.get_subscription(item.subscription_id)
|
23
26
|
end
|
@@ -53,9 +53,19 @@ class Kaui::RefundsController < Kaui::EngineController
|
|
53
53
|
def create
|
54
54
|
payment_id = params[:payment_id]
|
55
55
|
account_id = params[:account_id]
|
56
|
-
|
57
56
|
refund = Kaui::Refund.new(params[:refund])
|
58
|
-
refund.adjusted = (refund.
|
57
|
+
refund.adjusted = (refund.adjustment_type != "noInvoiceAdjustment")
|
58
|
+
if refund.adjustment_type == "invoiceItemAdjustment"
|
59
|
+
refund.adjustments = []
|
60
|
+
params[:adjustments].each_with_index do |ii, idx|
|
61
|
+
h = Hash.new
|
62
|
+
h[:invoice_item_id] = ii[0]
|
63
|
+
h[:amount] = ii[1]
|
64
|
+
kaui_ii = Kaui::InvoiceItem.new(h)
|
65
|
+
puts "Got #{kaui_ii.inspect}"
|
66
|
+
refund.adjustments[idx] = kaui_ii
|
67
|
+
end
|
68
|
+
end
|
59
69
|
if refund.present?
|
60
70
|
begin
|
61
71
|
Kaui::KillbillHelper::create_refund(params[:payment_id], refund, current_user, params[:reason], params[:comment])
|
@@ -157,7 +157,7 @@ class Kaui::SubscriptionsController < Kaui::EngineController
|
|
157
157
|
subscription_id = params[:id]
|
158
158
|
if subscription_id.present?
|
159
159
|
begin
|
160
|
-
Kaui::KillbillHelper::delete_subscription(subscription_id, current_user)
|
160
|
+
Kaui::KillbillHelper::delete_subscription(subscription_id, params[:policy], current_user)
|
161
161
|
rescue => e
|
162
162
|
flash[:error] = "Error while reinstating subscription: #{as_string(e)}"
|
163
163
|
end
|
@@ -39,12 +39,16 @@ module Kaui
|
|
39
39
|
|
40
40
|
############## ACCOUNT ##############
|
41
41
|
|
42
|
-
def self.
|
42
|
+
def self.get_account_by_key_with_balance_and_cba(key)
|
43
|
+
self.get_account_by_key(key, false, true)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.get_account_by_key(key, with_balance = false, with_balance_and_cba = false)
|
43
47
|
# support id (UUID) and external key search
|
44
48
|
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}/
|
45
|
-
Kaui::KillbillHelper.get_account(key, with_balance)
|
49
|
+
Kaui::KillbillHelper.get_account(key, with_balance, with_balance_and_cba)
|
46
50
|
else
|
47
|
-
Kaui::KillbillHelper.get_account_by_external_key(key, with_balance)
|
51
|
+
Kaui::KillbillHelper.get_account_by_external_key(key, with_balance, with_balance_and_cba)
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
@@ -53,13 +57,13 @@ module Kaui
|
|
53
57
|
process_response(data, :single) {|json| Kaui::AccountTimeline.new(json) }
|
54
58
|
end
|
55
59
|
|
56
|
-
def self.get_account(account_id, with_balance=false)
|
57
|
-
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}?accountWithBalance=#{with_balance}"
|
60
|
+
def self.get_account(account_id, with_balance = false, with_balance_and_cba = false)
|
61
|
+
data = call_killbill :get, "/1.0/kb/accounts/#{account_id}?accountWithBalance=#{with_balance}&accountWithBalanceAndCBA=#{with_balance_and_cba}"
|
58
62
|
process_response(data, :single) {|json| Kaui::Account.new(json) }
|
59
63
|
end
|
60
64
|
|
61
|
-
def self.get_account_by_external_key(external_key, with_balance=false)
|
62
|
-
data = call_killbill :get, "/1.0/kb/accounts?externalKey=#{external_key}&accountWithBalance=#{with_balance}"
|
65
|
+
def self.get_account_by_external_key(external_key, with_balance = false, with_balance_and_cba = false)
|
66
|
+
data = call_killbill :get, "/1.0/kb/accounts?externalKey=#{external_key}&accountWithBalance=#{with_balance}&accountWithBalanceAndCBA=#{with_balance_and_cba}"
|
63
67
|
process_response(data, :single) {|json| Kaui::Account.new(json) }
|
64
68
|
end
|
65
69
|
|
@@ -201,9 +205,10 @@ module Kaui
|
|
201
205
|
"X-Killbill-Comment" => "#{comment}"
|
202
206
|
end
|
203
207
|
|
204
|
-
def self.delete_subscription(subscription_id, current_user = nil, reason = nil, comment = nil)
|
208
|
+
def self.delete_subscription(subscription_id, policy = nil, current_user = nil, reason = nil, comment = nil)
|
209
|
+
params = "?policy=#{policy}" unless policy.blank?
|
205
210
|
call_killbill :delete,
|
206
|
-
"/1.0/kb/subscriptions/#{subscription_id}",
|
211
|
+
"/1.0/kb/subscriptions/#{subscription_id}#{params}",
|
207
212
|
"X-Killbill-CreatedBy" => current_user,
|
208
213
|
"X-Killbill-Reason" => "#{reason}",
|
209
214
|
"X-Killbill-Comment" => "#{comment}"
|
@@ -267,6 +272,14 @@ module Kaui
|
|
267
272
|
end
|
268
273
|
end
|
269
274
|
|
275
|
+
def self.delete_cba(account_id, invoice_id, invoice_item_id, current_user = nil, reason = nil, comment = nil)
|
276
|
+
call_killbill :delete,
|
277
|
+
"/1.0/kb/invoices/#{invoice_id}/#{invoice_item_id}/cba?accountId=#{account_id}",
|
278
|
+
"X-Killbill-CreatedBy" => current_user,
|
279
|
+
"X-Killbill-Reason" => "#{reason}",
|
280
|
+
"X-Killbill-Comment" => "#{comment}"
|
281
|
+
end
|
282
|
+
|
270
283
|
############## CATALOG ##############
|
271
284
|
|
272
285
|
def self.get_full_catalog
|
@@ -301,11 +314,21 @@ module Kaui
|
|
301
314
|
return response_data
|
302
315
|
end
|
303
316
|
|
317
|
+
def self.pay_all_invoices(account_id, external = false, current_user = nil, reason = nil, comment = nil)
|
318
|
+
call_killbill :post,
|
319
|
+
"/1.0/kb/invoices/payments?externalPayment=#{external}",
|
320
|
+
ActiveSupport::JSON.encode({:accountId => account_id}, :root => false),
|
321
|
+
:content_type => "application/json",
|
322
|
+
"X-Killbill-CreatedBy" => current_user,
|
323
|
+
"X-Killbill-Reason" => extract_reason_code(reason),
|
324
|
+
"X-Killbill-Comment" => "#{comment}"
|
325
|
+
end
|
326
|
+
|
304
327
|
def self.create_payment(payment, external, current_user = nil, reason = nil, comment = nil)
|
305
328
|
payment_data = Kaui::Payment.camelize(payment.to_hash)
|
306
329
|
|
307
330
|
if payment.invoice_id.present?
|
308
|
-
# We should use different model for POST and
|
331
|
+
# We should use different model for POST and GET, this seems fragile...
|
309
332
|
payment_data.delete(:external)
|
310
333
|
payment_data.delete(:refunds)
|
311
334
|
payment_data.delete(:chargebacks)
|
@@ -380,6 +403,8 @@ module Kaui
|
|
380
403
|
|
381
404
|
def self.create_refund(payment_id, refund, current_user = nil, reason = nil, comment = nil)
|
382
405
|
refund_data = Kaui::Refund.camelize(refund.to_hash)
|
406
|
+
# We don't want to pass adjustment_type
|
407
|
+
refund_data.delete(:adjustmentType)
|
383
408
|
|
384
409
|
call_killbill :post,
|
385
410
|
"/1.0/kb/payments/#{payment_id}/refunds",
|
data/app/models/kaui/account.rb
CHANGED
@@ -16,6 +16,7 @@ class Kaui::Account < Kaui::Base
|
|
16
16
|
define_attr :country
|
17
17
|
define_attr :phone
|
18
18
|
define_attr :balance
|
19
|
+
define_attr :cba
|
19
20
|
define_attr :is_notified_for_invoices
|
20
21
|
has_one :bill_cycle_day, Kaui::BillCycleDay
|
21
22
|
|
@@ -36,6 +37,7 @@ class Kaui::Account < Kaui::Base
|
|
36
37
|
:phone => data['phone'],
|
37
38
|
:bill_cycle_day => data['billCycleDay'],
|
38
39
|
:balance => data['accountBalance'],
|
40
|
+
:cba => data['accountCBA'],
|
39
41
|
:is_notified_for_invoices => data['isNotifiedForInvoices'])
|
40
42
|
end
|
41
43
|
|
@@ -46,4 +48,8 @@ class Kaui::Account < Kaui::Base
|
|
46
48
|
def balance_to_money
|
47
49
|
Kaui::Base.to_money(balance.abs, currency)
|
48
50
|
end
|
51
|
+
|
52
|
+
def cba_to_money
|
53
|
+
Kaui::Base.to_money(cba.abs, currency)
|
54
|
+
end
|
49
55
|
end
|
data/app/models/kaui/refund.rb
CHANGED
@@ -13,9 +13,10 @@ class Kaui::Refund < Kaui::Base
|
|
13
13
|
define_attr :currency
|
14
14
|
define_attr :requested_date
|
15
15
|
define_attr :effective_date
|
16
|
-
define_attr :
|
16
|
+
define_attr :adjustment_type
|
17
17
|
|
18
18
|
has_many :audit_logs, Kaui::AuditLog
|
19
|
+
has_many :adjustments, Kaui::InvoiceItem
|
19
20
|
|
20
21
|
def amount_to_money
|
21
22
|
Kaui::Base.to_money(amount, currency)
|
@@ -15,13 +15,13 @@
|
|
15
15
|
</div>
|
16
16
|
</form>
|
17
17
|
<hr/>
|
18
|
-
<table id="timeline-table" class="table table-condensed
|
18
|
+
<table id="timeline-table" class="table table-condensed">
|
19
19
|
<thead>
|
20
20
|
<tr>
|
21
|
-
<th
|
22
|
-
<th
|
21
|
+
<th>Requested Date</th>
|
22
|
+
<th>Effective Date</th>
|
23
23
|
<th>Bundle Name</th>
|
24
|
-
<th
|
24
|
+
<th>Event Type</th>
|
25
25
|
<th>Details</th>
|
26
26
|
<th>Reason Code / Comments</th>
|
27
27
|
<th>Actions</th>
|
@@ -41,14 +41,12 @@
|
|
41
41
|
<tr title="<%= bundles %>">
|
42
42
|
<td>
|
43
43
|
<% if invoice.invoice_date.present? %>
|
44
|
-
<span class="hide" title="<%= invoice.invoice_date %>"></span>
|
45
44
|
<%= invoice.invoice_date %>
|
46
45
|
<% else %>
|
47
46
|
[unknown]
|
48
47
|
<% end %>
|
49
48
|
<td>
|
50
49
|
<% if invoice.target_date.present? %>
|
51
|
-
<span class="hide" title="<%= invoice.target_date %>"></span>
|
52
50
|
<%= invoice.target_date %>
|
53
51
|
<% else %>
|
54
52
|
[unknown]
|
@@ -62,7 +60,8 @@
|
|
62
60
|
<% end %>
|
63
61
|
</td>
|
64
62
|
<td><%= "INVOICE" %></td>
|
65
|
-
<td
|
63
|
+
<td><span class="hide" title="<%= invoice.invoice_number %>"></span>
|
64
|
+
<%= "Amount:" %> <%= humanized_money_with_symbol invoice.amount_to_money(@account.currency) %><br/>
|
66
65
|
<%= "Balance:" %> <%= humanized_money_with_symbol invoice.balance_to_money(@account.currency) %><br/>
|
67
66
|
<% if invoice.credit_adjustment.present? && invoice.credit_adjustment > 0 %>
|
68
67
|
<%= "Credit adjustment:" %> <%= humanized_money_with_symbol invoice.credit_adjustment_to_money(@account.currency) %><br/>
|
@@ -84,20 +83,18 @@
|
|
84
83
|
<% end %>
|
85
84
|
</td>
|
86
85
|
<td>
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
</nobr>
|
100
|
-
<% end %>
|
86
|
+
<nobr>
|
87
|
+
<%= link_to "Payment",
|
88
|
+
kaui_engine.new_payment_path(:params => { :account_id => invoice.account_id,
|
89
|
+
:invoice_id => invoice.invoice_id }),
|
90
|
+
:class => "btn btn-mini #{"disabled" unless invoice.balance > 0}" %>
|
91
|
+
</nobr>
|
92
|
+
<nobr>
|
93
|
+
<%= link_to "Credit",
|
94
|
+
kaui_engine.new_credit_path(:params => { :account_id => invoice.account_id,
|
95
|
+
:invoice_id => invoice.invoice_id }),
|
96
|
+
:class => "btn btn-mini" %>
|
97
|
+
</nobr>
|
101
98
|
<nobr>
|
102
99
|
<%= link_to "Charge",
|
103
100
|
kaui_engine.new_charge_path(:params => { :account_id => invoice.account_id,
|
@@ -113,7 +110,6 @@
|
|
113
110
|
<tr title="<%= bundles %>">
|
114
111
|
<td>
|
115
112
|
<% if refund.requested_date.present? %>
|
116
|
-
<span class="hide" title="<%= refund.requested_date %>"></span>
|
117
113
|
<%= format_date(refund.requested_date).html_safe %>
|
118
114
|
<% else %>
|
119
115
|
[unknown]
|
@@ -121,7 +117,6 @@
|
|
121
117
|
</td>
|
122
118
|
<td>
|
123
119
|
<% if refund.effective_date.present? %>
|
124
|
-
<span class="hide" title="<%= refund.effective_date %>"></span>
|
125
120
|
<%= format_date(refund.effective_date).html_safe %>
|
126
121
|
<% else %>
|
127
122
|
[unknown]
|
@@ -153,7 +148,6 @@
|
|
153
148
|
<tr title="<%= bundles %>">
|
154
149
|
<td>
|
155
150
|
<% if chargeback.effective_date.present? %>
|
156
|
-
<span class="hide" title="<%= chargeback.effective_date %>"></span>
|
157
151
|
<%= format_date(chargeback.effective_date).html_safe %>
|
158
152
|
<% else %>
|
159
153
|
[unknown]
|
@@ -161,7 +155,6 @@
|
|
161
155
|
</td>
|
162
156
|
<td>
|
163
157
|
<% if chargeback.effective_date.present? %>
|
164
|
-
<span class="hide" title="<%= chargeback.effective_date %>"></span>
|
165
158
|
<%= format_date(chargeback.effective_date).html_safe %>
|
166
159
|
<% else %>
|
167
160
|
[unknown]
|
@@ -197,7 +190,6 @@
|
|
197
190
|
<tr title="<%= bundles %>">
|
198
191
|
<td>
|
199
192
|
<% if payment.requested_date.present? %>
|
200
|
-
<span class="hide" title="<%= payment.requested_date %>"></span>
|
201
193
|
<%= format_date(payment.requested_date).html_safe %>
|
202
194
|
<% else %>
|
203
195
|
[unknown]
|
@@ -205,7 +197,6 @@
|
|
205
197
|
</td>
|
206
198
|
<td>
|
207
199
|
<% if payment.effective_date.present? %>
|
208
|
-
<span class="hide" title="<%= payment.effective_date %>"></span>
|
209
200
|
<%= format_date(payment.effective_date).html_safe %>
|
210
201
|
<% else %>
|
211
202
|
[unknown]
|
@@ -218,6 +209,7 @@
|
|
218
209
|
</td>
|
219
210
|
<td><%= "PAYMENT" %></td>
|
220
211
|
<td>
|
212
|
+
<span class="hide" title="<%= invoice.invoice_number %>"></span>
|
221
213
|
<%= "Payment id:" %> <%= payment.payment_id %><br/>
|
222
214
|
<%= "Total amount:" %> <%= humanized_money_with_symbol payment.amount_to_money %><br/>
|
223
215
|
<%= "Paid amount:" %> <%= humanized_money_with_symbol payment.paid_amount_to_money %><br/>
|
@@ -235,23 +227,18 @@
|
|
235
227
|
<% end %>
|
236
228
|
</td>
|
237
229
|
<td>
|
238
|
-
|
239
|
-
|
240
|
-
<%= link_to 'Refund', kaui_engine.new_refund_path(:params => { :payment_id => payment.payment_id,
|
241
|
-
:account_id => @account.account_id,
|
242
|
-
:invoice_id => payment.invoice_id }),
|
243
|
-
:class => "btn btn-mini" %>
|
244
|
-
<%= link_to 'Chargeback', kaui_engine.new_chargeback_path(:params => { :payment_id => payment.payment_id,
|
245
|
-
:account_id => @account.account_id,
|
246
|
-
:invoice_id => payment.invoice_id }),
|
247
|
-
:class => "btn btn-mini" %>
|
248
|
-
</nobr>
|
249
|
-
<% elsif invoice.balance > 0 %>
|
250
|
-
<%= link_to 'Pay', kaui_engine.new_payment_path(:params => { :payment_id => payment.payment_id,
|
230
|
+
<nobr>
|
231
|
+
<%= link_to 'Refund', kaui_engine.new_refund_path(:params => { :payment_id => payment.payment_id,
|
251
232
|
:account_id => @account.account_id,
|
252
233
|
:invoice_id => payment.invoice_id }),
|
253
|
-
:class => "btn btn-mini" %>
|
254
|
-
|
234
|
+
:class => "btn btn-mini #{"disabled" unless payment.payment_id.present?}" %>
|
235
|
+
</nobr>
|
236
|
+
<nobr>
|
237
|
+
<%= link_to 'Chargeback', kaui_engine.new_chargeback_path(:params => { :payment_id => payment.payment_id,
|
238
|
+
:account_id => @account.account_id,
|
239
|
+
:invoice_id => payment.invoice_id }),
|
240
|
+
:class => "btn btn-mini #{"disabled" unless payment.payment_id.present?}" %>
|
241
|
+
</nobr>
|
255
242
|
</td>
|
256
243
|
</tr>
|
257
244
|
<% end %>
|
@@ -263,7 +250,6 @@
|
|
263
250
|
<tr title="<%= @bundle_names[bundle.external_key] %>">
|
264
251
|
<td>
|
265
252
|
<% if event.requested_date.present? %>
|
266
|
-
<span class="hide" title="<%= event.requested_date %>"></span>
|
267
253
|
<%= format_date(event.requested_date).html_safe %>
|
268
254
|
<% else %>
|
269
255
|
[unknown]
|
@@ -271,7 +257,6 @@
|
|
271
257
|
</td>
|
272
258
|
<td>
|
273
259
|
<% if event.effective_date.present? %>
|
274
|
-
<span class="hide" title="<%= event.effective_date %>"></span>
|
275
260
|
<%= format_date(event.effective_date).html_safe %>
|
276
261
|
<% else %>
|
277
262
|
[unknown]
|
@@ -281,7 +266,7 @@
|
|
281
266
|
<%= link_to @bundle_names[bundle.external_key], Kaui.bundle_home_path.call(bundle.external_key) %><br/>
|
282
267
|
</td>
|
283
268
|
<td><%= event.event_type %></td>
|
284
|
-
<td><%= event.product %> <%= event.billing_period == 'NO_BILLING_PERIOD' || event.billing_period.nil? ? "" : event.billing_period.downcase.capitalize %> <%= event.phase.downcase.capitalize if event.phase.present? %></td>
|
269
|
+
<td><span class="hide" title="<%= sub.product_category %>"></span><%= event.product %> <%= event.billing_period == 'NO_BILLING_PERIOD' || event.billing_period.nil? ? "" : event.billing_period.downcase.capitalize %> <%= event.phase.downcase.capitalize if event.phase.present? %></td>
|
285
270
|
<td>
|
286
271
|
<% if event.audit_logs.present? %>
|
287
272
|
<% event.audit_logs.each do |entry| %>
|
@@ -301,10 +286,74 @@
|
|
301
286
|
<%= link_to 'Back', :back, :class => 'btn' %>
|
302
287
|
</div>
|
303
288
|
<%= javascript_tag do %>
|
289
|
+
function disableLinks() {
|
290
|
+
$('a.btn.disabled').click(function (e) {
|
291
|
+
e.preventDefault();
|
292
|
+
});
|
293
|
+
}
|
294
|
+
|
295
|
+
eventsOrder = ["CREATE", "PHASE", "CHANGE", "CANCEL", "INVOICE", "PAYMENT", "REFUND", "CHARGEBACK"];
|
296
|
+
|
297
|
+
jQuery.fn.dataTableExt.oSort['timeline-event-asc'] = function(e1,e2) {
|
298
|
+
var x = eventsOrder.indexOf(e1);
|
299
|
+
var y = eventsOrder.indexOf(e2);
|
300
|
+
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
301
|
+
};
|
302
|
+
|
303
|
+
jQuery.fn.dataTableExt.oSort['timeline-event-desc'] = function(e1,e2) {
|
304
|
+
var x = eventsOrder.indexOf(e1);
|
305
|
+
var y = eventsOrder.indexOf(e2);
|
306
|
+
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
|
307
|
+
};
|
308
|
+
|
309
|
+
function extractTitleAttributeFromText(txt) {
|
310
|
+
// Ugly - better way of doing this?
|
311
|
+
var matches = txt.match(/title="\w+"/g);
|
312
|
+
if (matches == null || matches.size == 0) {
|
313
|
+
return null;
|
314
|
+
}
|
315
|
+
return matches[0].split('=')[1];
|
316
|
+
}
|
317
|
+
|
318
|
+
jQuery.fn.dataTableExt.oSort['timeline-details-asc'] = function(e1,e2) {
|
319
|
+
var x = extractTitleAttributeFromText(e1);
|
320
|
+
var y = extractTitleAttributeFromText(e2);
|
321
|
+
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
322
|
+
};
|
323
|
+
|
324
|
+
jQuery.fn.dataTableExt.oSort['timeline-details-desc'] = function(e1,e2) {
|
325
|
+
var x = extractTitleAttributeFromText(e1);
|
326
|
+
var y = extractTitleAttributeFromText(e2);
|
327
|
+
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
|
328
|
+
};
|
329
|
+
|
330
|
+
function initTable() {
|
331
|
+
return $("#timeline-table").dataTable({
|
332
|
+
"sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
|
333
|
+
"sPaginationType": "bootstrap",
|
334
|
+
"oLanguage": {
|
335
|
+
"sLengthMenu": "_MENU_ records per page"
|
336
|
+
},
|
337
|
+
"iDisplayLength": 100,
|
338
|
+
"bRetrieve": true,
|
339
|
+
// Force a predictive order for event types, invoices and payments
|
340
|
+
"aaSortingFixed": [[1, 'desc'], [4, 'desc'], [3, 'desc']],
|
341
|
+
"aoColumns": [
|
342
|
+
{ "sType": 'date' },
|
343
|
+
{ "sType": 'date' },
|
344
|
+
null,
|
345
|
+
{ "sType": 'timeline-event' },
|
346
|
+
{ "sType": 'timeline-details' },
|
347
|
+
null,
|
348
|
+
null
|
349
|
+
]
|
350
|
+
});
|
351
|
+
}
|
352
|
+
|
304
353
|
function filterBundles() {
|
305
354
|
var bundle = $("#bundles").val();
|
306
|
-
var dataTable = $("#timeline-table").dataTable();
|
307
355
|
|
356
|
+
var dataTable = initTable();
|
308
357
|
$(dataTable.fnGetNodes()).each(function() {
|
309
358
|
var tr = $(this);
|
310
359
|
if (bundle == "" || tr.attr("title").split(",").indexOf(bundle) >= 0) {
|
@@ -316,7 +365,16 @@
|
|
316
365
|
});
|
317
366
|
dataTable.fnDraw();
|
318
367
|
}
|
368
|
+
|
319
369
|
$(document).ready(function() {
|
370
|
+
disableLinks();
|
371
|
+
// When going through the pages of the table, disable links as needed
|
372
|
+
$('#timeline-table').bind('draw', function (e) {
|
373
|
+
disableLinks();
|
374
|
+
});
|
375
|
+
|
376
|
+
initTable();
|
377
|
+
|
320
378
|
$("#bundles").change(filterBundles);
|
321
379
|
filterBundles();
|
322
380
|
});
|