kaui 3.0.2 → 3.0.4

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/kaui/logo.svg +37 -0
  3. data/app/controllers/kaui/account_timelines_controller.rb +121 -0
  4. data/app/controllers/kaui/accounts_controller.rb +51 -14
  5. data/app/controllers/kaui/admin_tenants_controller.rb +19 -6
  6. data/app/controllers/kaui/audit_logs_controller.rb +40 -3
  7. data/app/controllers/kaui/bundles_controller.rb +5 -1
  8. data/app/controllers/kaui/charges_controller.rb +1 -1
  9. data/app/controllers/kaui/credits_controller.rb +1 -1
  10. data/app/controllers/kaui/custom_fields_controller.rb +3 -3
  11. data/app/controllers/kaui/engine_controller.rb +3 -28
  12. data/app/controllers/kaui/engine_controller_util.rb +8 -2
  13. data/app/controllers/kaui/home_controller.rb +5 -5
  14. data/app/controllers/kaui/invoice_items_controller.rb +1 -1
  15. data/app/controllers/kaui/invoices_controller.rb +59 -34
  16. data/app/controllers/kaui/payment_methods_controller.rb +3 -3
  17. data/app/controllers/kaui/payments_controller.rb +66 -10
  18. data/app/controllers/kaui/refunds_controller.rb +3 -2
  19. data/app/controllers/kaui/sessions_controller.rb +7 -0
  20. data/app/controllers/kaui/subscriptions_controller.rb +8 -8
  21. data/app/controllers/kaui/transactions_controller.rb +2 -2
  22. data/app/helpers/kaui/exception_helper.rb +25 -0
  23. data/app/helpers/kaui/subscription_helper.rb +4 -0
  24. data/app/models/kaui/account.rb +2 -0
  25. data/app/models/kaui/custom_field.rb +1 -1
  26. data/app/models/kaui/invoice.rb +2 -0
  27. data/app/models/kaui/payment_method.rb +4 -4
  28. data/app/views/kaui/account_timelines/_multi_functions_bar.html.erb +184 -0
  29. data/app/views/kaui/account_timelines/show.html.erb +2 -0
  30. data/app/views/kaui/accounts/_account_info.html.erb +7 -0
  31. data/app/views/kaui/accounts/_multi_functions_bar.html.erb +347 -0
  32. data/app/views/kaui/accounts/index.html.erb +46 -33
  33. data/app/views/kaui/audit_logs/_multi_functions_bar.html.erb +218 -0
  34. data/app/views/kaui/audit_logs/index.html.erb +1 -0
  35. data/app/views/kaui/bundles/index.html.erb +34 -0
  36. data/app/views/kaui/errors/500.html.erb +29 -0
  37. data/app/views/kaui/invoices/_multi_functions_bar.html.erb +340 -0
  38. data/app/views/kaui/invoices/index.html.erb +41 -19
  39. data/app/views/kaui/layouts/kaui_navbar.html.erb +1 -1
  40. data/app/views/kaui/payments/_multi_functions_bar.html.erb +344 -0
  41. data/app/views/kaui/payments/index.html.erb +64 -25
  42. data/config/locales/en.yml +3 -0
  43. data/config/routes.rb +7 -0
  44. data/lib/kaui/error_handler.rb +37 -0
  45. data/lib/kaui/version.rb +1 -1
  46. data/lib/kaui.rb +105 -29
  47. data/lib/tasks/kaui_tasks.rake +1 -0
  48. metadata +11 -3
  49. data/app/assets/images/kaui/logo.png +0 -0
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'csv'
3
4
  module Kaui
4
5
  class InvoicesController < Kaui::EngineController
5
6
  def index
@@ -12,6 +13,37 @@ module Kaui
12
13
  @max_nb_records = @search_query.blank? ? Kaui::Invoice.list_or_search(nil, 0, 0, options_for_klient).pagination_max_nb_records : 0
13
14
  end
14
15
 
16
+ def download
17
+ account_id = params[:account_id]
18
+ start_date = params[:startDate]
19
+ end_date = params[:endDate]
20
+ all_fields_checked = params[:allFieldsChecked] == 'true'
21
+ columns = if all_fields_checked
22
+ KillBillClient::Model::InvoiceAttributes.instance_variable_get('@json_attributes') - Kaui::Invoice::TABLE_IGNORE_COLUMNS
23
+ else
24
+ params.require(:columnsString).split(',').map { |attr| attr.split.join('_').downcase }
25
+ end
26
+
27
+ kb_params = {}
28
+ kb_params[:startDate] = Date.parse(start_date).strftime('%Y-%m-%d') if start_date
29
+ kb_params[:endDate] = Date.parse(end_date).strftime('%Y-%m-%d') if end_date
30
+ if account_id.present?
31
+ account = Kaui::Account.find_by_id_or_key(account_id, false, false, options_for_klient)
32
+ invoices = account.invoices(options_for_klient.merge(params: kb_params))
33
+ else
34
+ invoices = Kaui::Invoice.list_or_search(nil, 0, MAXIMUM_NUMBER_OF_RECORDS_DOWNLOAD, options_for_klient.merge(params: kb_params))
35
+ end
36
+
37
+ csv_string = CSV.generate(headers: true) do |csv|
38
+ csv << columns
39
+
40
+ invoices.each do |invoice|
41
+ csv << columns.map { |attr| invoice&.send(attr.downcase) }
42
+ end
43
+ end
44
+ send_data csv_string, filename: "invoices-#{Date.today}.csv", type: 'text/csv'
45
+ end
46
+
15
47
  def pagination
16
48
  cached_options_for_klient = options_for_klient
17
49
 
@@ -24,39 +56,32 @@ module Kaui
24
56
  if account.nil?
25
57
  Kaui::Invoice.list_or_search(search_key, offset, limit, cached_options_for_klient)
26
58
  else
27
- account.invoices(cached_options_for_klient.merge({ params: { includeVoidedInvoices: true } })).map! { |invoice| Kaui::Invoice.build_from_raw_invoice(invoice) }
59
+ Kaui::Account.paginated_invoices(search_key, offset, limit, 'NONE', cached_options_for_klient).map! { |invoice| Kaui::Invoice.build_from_raw_invoice(invoice) }
28
60
  end
29
61
  end
30
62
 
31
63
  account_id = (params[:search] || {})[:value]
32
- if account_id.blank?
33
- # Don't show amount and balance, and they will not be populated
34
- data_extractor = lambda do |invoice, column|
35
- [
36
- invoice.invoice_number.to_i,
37
- invoice.invoice_date
38
- ][column]
39
- end
40
- formatter = lambda do |invoice|
41
- row = [view_context.link_to(invoice.invoice_number, view_context.url_for(controller: :invoices, action: :show, account_id: invoice.account_id, id: invoice.invoice_id))]
42
- row += Kaui.invoice_search_columns.call(invoice, view_context, cached_options_for_klient)[1]
43
- row
44
- end
45
- else
46
- data_extractor = lambda do |invoice, column|
47
- [
48
- invoice.invoice_number.to_i,
49
- invoice.invoice_date,
50
- invoice.amount,
51
- invoice.balance,
52
- invoice.status
53
- ][column]
54
- end
55
- formatter = lambda do |invoice|
56
- row = [view_context.link_to(invoice.invoice_number, view_context.url_for(controller: :invoices, action: :show, account_id: invoice.account_id, id: invoice.invoice_id))]
57
- row += Kaui.account_invoices_columns.call(invoice, view_context)[1]
58
- row
59
- end
64
+ data_extractor = if account_id.blank?
65
+ lambda do |invoice, column|
66
+ [
67
+ invoice.invoice_number.to_i,
68
+ invoice.invoice_date
69
+ ][column]
70
+ end
71
+ else
72
+ lambda do |invoice, column|
73
+ [
74
+ invoice.invoice_number.to_i,
75
+ invoice.invoice_date,
76
+ invoice.amount,
77
+ invoice.balance,
78
+ invoice.status
79
+ ][column]
80
+ end
81
+ end
82
+
83
+ formatter = lambda do |invoice|
84
+ Kaui.account_invoices_columns.call(invoice, view_context)[1]
60
85
  end
61
86
 
62
87
  paginate searcher, data_extractor, formatter
@@ -67,7 +92,7 @@ module Kaui
67
92
  # Go to the database once
68
93
  cached_options_for_klient = options_for_klient
69
94
 
70
- @invoice = Kaui::Invoice.find_by_id(params.require(:id), 'FULL', cached_options_for_klient)
95
+ @invoice = Kaui::Invoice.find_by_id(params.require(:id), false, 'FULL', cached_options_for_klient)
71
96
  # This will put the TAX items at the bottom
72
97
  precedence = {
73
98
  'EXTERNAL_CHARGE' => 0,
@@ -132,7 +157,7 @@ module Kaui
132
157
 
133
158
  def void_invoice
134
159
  cached_options_for_klient = options_for_klient
135
- invoice = KillBillClient::Model::Invoice.find_by_id(params.require(:id), 'NONE', cached_options_for_klient)
160
+ invoice = KillBillClient::Model::Invoice.find_by_id(params.require(:id), false, 'NONE', cached_options_for_klient)
136
161
  begin
137
162
  invoice.void(current_user.kb_username, params[:reason], params[:comment], cached_options_for_klient)
138
163
  redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id), notice: 'Invoice successfully voided'
@@ -143,12 +168,12 @@ module Kaui
143
168
  end
144
169
 
145
170
  def restful_show
146
- invoice = Kaui::Invoice.find_by_id(params.require(:id), 'NONE', options_for_klient)
171
+ invoice = Kaui::Invoice.find_by_id(params.require(:id), false, 'NONE', options_for_klient)
147
172
  redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id)
148
173
  end
149
174
 
150
175
  def restful_show_by_number
151
- invoice = Kaui::Invoice.find_by_number(params.require(:number), 'NONE', options_for_klient)
176
+ invoice = Kaui::Invoice.find_by_number(params.require(:number), false, 'NONE', options_for_klient)
152
177
  redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id)
153
178
  end
154
179
 
@@ -158,7 +183,7 @@ module Kaui
158
183
 
159
184
  def commit_invoice
160
185
  cached_options_for_klient = options_for_klient
161
- invoice = KillBillClient::Model::Invoice.find_by_id(params.require(:id), 'NONE', cached_options_for_klient)
186
+ invoice = KillBillClient::Model::Invoice.find_by_id(params.require(:id), false, 'NONE', cached_options_for_klient)
162
187
  invoice.commit(current_user.kb_username, params[:reason], params[:comment], cached_options_for_klient)
163
188
  redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id), notice: 'Invoice successfully committed'
164
189
  end
@@ -74,7 +74,7 @@ module Kaui
74
74
  def destroy
75
75
  payment_method_id = params[:id]
76
76
 
77
- payment_method = Kaui::PaymentMethod.find_by_id(payment_method_id, false, options_for_klient)
77
+ payment_method = Kaui::PaymentMethod.find_by_id(payment_method_id, false, false, [], 'NONE', options_for_klient)
78
78
  begin
79
79
  Kaui::PaymentMethod.destroy(payment_method_id, params[:set_auto_pay_off], false, current_user.kb_username, params[:reason], params[:comment], options_for_klient)
80
80
  redirect_to kaui_engine.account_path(payment_method.account_id), notice: "Payment method #{payment_method_id} successfully deleted"
@@ -89,7 +89,7 @@ module Kaui
89
89
  end
90
90
 
91
91
  def restful_show
92
- payment_method = Kaui::PaymentMethod.find_by_id(params.require(:id), false, options_for_klient)
92
+ payment_method = Kaui::PaymentMethod.find_by_id(params.require(:id), false, false, [], 'NONE', options_for_klient)
93
93
  redirect_to kaui_engine.account_path(payment_method.account_id)
94
94
  end
95
95
 
@@ -98,7 +98,7 @@ module Kaui
98
98
  external_key = params.require(:external_key)
99
99
 
100
100
  begin
101
- payment_methods = Kaui::PaymentMethod.find_by_external_key(external_key, false, false, 'NONE', options_for_klient)
101
+ payment_methods = Kaui::PaymentMethod.find_by_external_key(external_key, false, false, [], 'NONE', options_for_klient)
102
102
  rescue KillBillClient::API::NotFound
103
103
  payment_methods = nil
104
104
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'csv'
4
+
3
5
  module Kaui
4
6
  class PaymentsController < Kaui::EngineController
5
7
  def index
@@ -12,7 +14,68 @@ module Kaui
12
14
  @max_nb_records = @search_query.blank? ? Kaui::Payment.list_or_search(nil, 0, 0, options_for_klient).pagination_max_nb_records : 0
13
15
  end
14
16
 
17
+ def download
18
+ account_id = params[:account_id]
19
+ start_date = params[:startDate]
20
+ end_date = params[:endDate]
21
+ all_fields_checked = params[:allFieldsChecked] == 'true'
22
+ columns = if all_fields_checked
23
+ KillBillClient::Model::PaymentAttributes.instance_variable_get('@json_attributes') - %w[transactions audit_logs]
24
+ else
25
+ params.require(:columnsString).split(',').map { |attr| attr.split.join('_').downcase }
26
+ end
27
+
28
+ kb_params = {}
29
+ kb_params[:startDate] = Date.parse(start_date).strftime('%Y-%m-%d') if start_date
30
+ kb_params[:endDate] = Date.parse(end_date).strftime('%Y-%m-%d') if end_date
31
+ if account_id.present?
32
+ account = Kaui::Account.find_by_id_or_key(account_id, false, false, options_for_klient)
33
+ payments = account.payments(options_for_klient).map! { |payment| Kaui::Payment.build_from_raw_payment(payment) }
34
+ else
35
+ payments = Kaui::Payment.list_or_search(nil, 0, MAXIMUM_NUMBER_OF_RECORDS_DOWNLOAD, options_for_klient.merge(params: kb_params))
36
+ end
37
+
38
+ payments.each do |payment|
39
+ created_date = nil
40
+ payment.transactions.each do |transaction|
41
+ transaction_date = Date.parse(transaction.effective_date)
42
+ created_date ||= transaction_date if transaction_date < created_date
43
+ end
44
+ payment.payment_date = created_date
45
+ end
46
+
47
+ csv_string = CSV.generate(headers: true) do |csv|
48
+ csv << columns
49
+
50
+ payments.each do |payment|
51
+ next if start_date && end_date && (payment.payment_date < Date.parse(start_date) || payment.payment_date > Date.parse(end_date))
52
+
53
+ data = columns.map do |attr|
54
+ case attr
55
+ when 'payment_number'
56
+ payment.payment_number
57
+ when 'payment_date'
58
+ view_context.format_date(payment.payment_date, account&.time_zone)
59
+ when 'total_authed_amount_to_money'
60
+ view_context.humanized_money_with_symbol(payment.total_authed_amount_to_money)
61
+ when 'paid_amount_to_money'
62
+ view_context.humanized_money_with_symbol(payment.paid_amount_to_money)
63
+ when 'returned_amount_to_money'
64
+ view_context.humanized_money_with_symbol(payment.returned_amount_to_money)
65
+ when 'status'
66
+ payment.transactions.empty? ? nil : payment.transactions[-1].status
67
+ else
68
+ payment&.send(attr.downcase)
69
+ end
70
+ end
71
+ csv << data
72
+ end
73
+ end
74
+ send_data csv_string, filename: "payments-#{Date.today}.csv", type: 'text/csv'
75
+ end
76
+
15
77
  def pagination
78
+ account = nil
16
79
  searcher = lambda do |search_key, offset, limit|
17
80
  if Kaui::Payment::TRANSACTION_STATUSES.include?(search_key)
18
81
  # Search is done by payment state on the server side, see http://docs.killbill.io/latest/userguide_payment.html#_payment_states
@@ -30,6 +93,7 @@ module Kaui
30
93
  rescue StandardError
31
94
  nil
32
95
  end
96
+
33
97
  payments = if account.nil?
34
98
  Kaui::Payment.list_or_search(search_key, offset, limit, options_for_klient)
35
99
  else
@@ -62,15 +126,7 @@ module Kaui
62
126
  end
63
127
 
64
128
  formatter = lambda do |payment|
65
- [
66
- view_context.link_to(payment.payment_number, view_context.url_for(controller: :payments, action: :show, account_id: payment.account_id, id: payment.payment_id)),
67
- view_context.format_date(payment.payment_date, @account.time_zone),
68
- view_context.humanized_money_with_symbol(payment.total_authed_amount_to_money),
69
- view_context.humanized_money_with_symbol(payment.paid_amount_to_money),
70
- view_context.humanized_money_with_symbol(payment.returned_amount_to_money),
71
- payment.transactions.empty? ? nil : view_context.colored_transaction_status(payment.transactions[-1].status),
72
- payment.payment_external_key
73
- ]
129
+ Kaui.account_payments_columns.call(account, payment, view_context)[1]
74
130
  end
75
131
 
76
132
  paginate searcher, data_extractor, formatter
@@ -78,7 +134,7 @@ module Kaui
78
134
 
79
135
  def new
80
136
  cached_options_for_klient = options_for_klient
81
- fetch_invoice = promise { Kaui::Invoice.find_by_id(params.require(:invoice_id), 'NONE', cached_options_for_klient) }
137
+ fetch_invoice = promise { Kaui::Invoice.find_by_id(params.require(:invoice_id), false, 'NONE', cached_options_for_klient) }
82
138
  fetch_payment_methods = promise { Kaui::PaymentMethod.find_all_by_account_id(params.require(:account_id), false, cached_options_for_klient) }
83
139
 
84
140
  @invoice = wait(fetch_invoice)
@@ -5,8 +5,9 @@ module Kaui
5
5
  def new
6
6
  cached_options_for_klient = options_for_klient
7
7
 
8
- fetch_invoice = promise { Kaui::Invoice.find_by_id(params.require(:invoice_id), 'NONE', cached_options_for_klient) }
8
+ fetch_invoice = promise { Kaui::Invoice.find_by_id(params.require(:invoice_id), false, 'NONE', cached_options_for_klient) }
9
9
  fetch_payment = promise { Kaui::InvoicePayment.find_by_id(params.require(:payment_id), false, false, cached_options_for_klient) }
10
+
10
11
  fetch_bundles = promise { @account.bundles(cached_options_for_klient) }
11
12
 
12
13
  @invoice = wait(fetch_invoice)
@@ -18,7 +19,7 @@ module Kaui
18
19
 
19
20
  # rubocop:disable Lint/FloatComparison
20
21
  def create
21
- invoice = Kaui::Invoice.find_by_id(params.require(:invoice_id), 'NONE', options_for_klient)
22
+ invoice = Kaui::Invoice.find_by_id(params.require(:invoice_id), false, 'NONE', options_for_klient)
22
23
 
23
24
  if params[:adjustment_type] == 'invoiceItemAdjustment'
24
25
  items = []
@@ -3,12 +3,19 @@
3
3
  module Kaui
4
4
  # Subclassed to specify the correct layout
5
5
  class SessionsController < Devise::SessionsController
6
+ include Kaui::ExceptionHelper
7
+
6
8
  layout Kaui.config[:layout]
7
9
 
8
10
  skip_before_action :check_for_redirect_to_tenant_screen, raise: false
9
11
 
10
12
  # The sign-in flow eventually calls authenticate! from config/initializers/killbill_authenticatable.rb
11
13
 
14
+ rescue_from(StandardError) do |exception|
15
+ @error = standardize_exception(exception)
16
+ render 'kaui/errors/500', status: 500, layout: false
17
+ end
18
+
12
19
  protected
13
20
 
14
21
  # Override after_sign_in_path_for to not have to rely on the default 'root' config which we want to keep on home#index
@@ -72,7 +72,7 @@ module Kaui
72
72
  end
73
73
 
74
74
  def edit
75
- @subscription = Kaui::Subscription.find_by_id(params.require(:id), options_for_klient)
75
+ @subscription = Kaui::Subscription.find_by_id(params.require(:id), 'NONE', options_for_klient)
76
76
  _, plans_details = lookup_bundle_and_plan_details(@subscription)
77
77
  # Use a Set to deal with multiple pricelists
78
78
  @plans = Set.new.merge(plans_details.map(&:plan))
@@ -86,7 +86,7 @@ module Kaui
86
86
 
87
87
  wait_for_completion = params[:wait_for_completion] == '1'
88
88
 
89
- subscription = Kaui::Subscription.find_by_id(params.require(:id), options_for_klient)
89
+ subscription = Kaui::Subscription.find_by_id(params.require(:id), 'NONE', options_for_klient)
90
90
 
91
91
  input = { planName: plan_name }
92
92
 
@@ -124,13 +124,13 @@ module Kaui
124
124
  else
125
125
  nil
126
126
  end
127
- subscription = Kaui::Subscription.find_by_id(params.require(:id), options_for_klient)
127
+ subscription = Kaui::Subscription.find_by_id(params.require(:id), 'NONE', options_for_klient)
128
128
  subscription.cancel(current_user.kb_username, params[:reason], params[:comment], requested_date, entitlement_policy, billing_policy, use_requested_date_for_billing, options_for_klient)
129
129
  redirect_to kaui_engine.account_bundles_path(subscription.account_id), notice: 'Subscription was successfully cancelled'
130
130
  end
131
131
 
132
132
  def reinstate
133
- subscription = Kaui::Subscription.find_by_id(params.require(:id), options_for_klient)
133
+ subscription = Kaui::Subscription.find_by_id(params.require(:id), 'NONE', options_for_klient)
134
134
 
135
135
  subscription.uncancel(current_user.kb_username, params[:reason], params[:comment], options_for_klient)
136
136
 
@@ -138,7 +138,7 @@ module Kaui
138
138
  end
139
139
 
140
140
  def edit_bcd
141
- @subscription = Kaui::Subscription.find_by_id(params.require(:id), options_for_klient)
141
+ @subscription = Kaui::Subscription.find_by_id(params.require(:id), 'NONE', options_for_klient)
142
142
  end
143
143
 
144
144
  def update_bcd
@@ -158,7 +158,7 @@ module Kaui
158
158
  end
159
159
 
160
160
  def restful_show
161
- subscription = Kaui::Subscription.find_by_id(params.require(:id), options_for_klient)
161
+ subscription = Kaui::Subscription.find_by_id(params.require(:id), 'NONE', options_for_klient)
162
162
  redirect_to kaui_engine.account_bundles_path(subscription.account_id)
163
163
  end
164
164
 
@@ -181,7 +181,7 @@ module Kaui
181
181
  external_key = params.require(:external_key)
182
182
 
183
183
  begin
184
- subscription = Kaui::Subscription.find_by_external_key(external_key, options_for_klient)
184
+ subscription = Kaui::Subscription.find_by_external_key(external_key, 'NONE', options_for_klient)
185
185
  rescue KillBillClient::API::NotFound
186
186
  subscription = nil
187
187
  end
@@ -192,7 +192,7 @@ module Kaui
192
192
 
193
193
  def update_tags
194
194
  subscription_id = params.require(:id)
195
- subscription = Kaui::Subscription.find_by_id(subscription_id, options_for_klient)
195
+ subscription = Kaui::Subscription.find_by_id(subscription_id, 'NONE', options_for_klient)
196
196
  tags = []
197
197
  params.each_key do |key|
198
198
  next unless key.include? 'tag'
@@ -3,7 +3,7 @@
3
3
  module Kaui
4
4
  class TransactionsController < Kaui::EngineController
5
5
  def restful_show
6
- payment = Kaui::Payment.find_by_transaction_id(params.require(:id), false, true, options_for_klient)
6
+ payment = Kaui::Payment.find_by_transaction_id(params.require(:id), false, true, [], 'NONE', options_for_klient)
7
7
  redirect_to account_payment_path(payment.account_id, payment.payment_id)
8
8
  end
9
9
 
@@ -18,7 +18,7 @@ module Kaui
18
18
  currency: params[:currency],
19
19
  transaction_type: params[:transaction_type])
20
20
  else
21
- payment = Kaui::Payment.find_by_transaction_id(transaction_id, false, false, options_for_klient)
21
+ payment = Kaui::Payment.find_by_transaction_id(transaction_id, false, false, [], 'NONE', options_for_klient)
22
22
  @transaction = Kaui::Transaction.build_from_raw_transaction(payment.transactions.find { |tx| tx.transaction_id == transaction_id })
23
23
  end
24
24
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kaui
4
+ module ExceptionHelper
5
+ def standardize_exception(exception)
6
+ if defined?(JRUBY_VERSION)
7
+ case exception
8
+ when ActiveRecord::JDBCError
9
+ return I18n.translate('errors.messages.unable_to_connect_database')
10
+ end
11
+ end
12
+
13
+ case exception
14
+ when ActiveRecord::DatabaseConnectionError
15
+ I18n.translate('errors.messages.unable_to_connect_database')
16
+ when Errno::ECONNREFUSED, Errno::EBADF
17
+ I18n.translate('errors.messages.unable_to_connect_killbill')
18
+ when ->(e) { e.class.name.start_with?('KillBillClient::API') }
19
+ I18n.translate('errors.messages.error_communicating_killbill')
20
+ else
21
+ nil
22
+ end
23
+ end
24
+ end
25
+ end
@@ -172,5 +172,9 @@ module Kaui
172
172
  def subscription_cancelled?(sub)
173
173
  sub.present? and sub.billing_end_date.present?
174
174
  end
175
+
176
+ def paging_button_class(num, current_page)
177
+ num == current_page ? 'btn btn-primary' : 'btn btn-custom'
178
+ end
175
179
  end
176
180
  end
@@ -4,6 +4,8 @@ module Kaui
4
4
  class Account < KillBillClient::Model::Account
5
5
  attr_accessor :phone, :bill_cycle_day_local
6
6
 
7
+ SENSIVITE_DATA_FIELDS = %w[name email].freeze
8
+
7
9
  def check_account_details_phone
8
10
  return true if phone =~ /\A(?:\+?\d{1,3}\s*-?)?\(?(?:\d{3})?\)?[- ]?\d{3}[- ]?\d{4}\z/i
9
11
 
@@ -6,7 +6,7 @@ module Kaui
6
6
  if search_key.present?
7
7
  find_in_batches_by_search_key(search_key, offset, limit, options)
8
8
  else
9
- find_in_batches(offset, limit, options)
9
+ find_in_batches(offset, limit, 'NONE', options)
10
10
  end
11
11
  end
12
12
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Kaui
4
4
  class Invoice < KillBillClient::Model::Invoice
5
+ TABLE_IGNORE_COLUMNS = %w[amount balance credit_adj refund_adj items is_parent_invoice parent_invoice_id parent_account_id].freeze
6
+
5
7
  def self.build_from_raw_invoice(raw_invoice)
6
8
  result = Kaui::Invoice.new
7
9
  KillBillClient::Model::InvoiceAttributes.instance_variable_get('@json_attributes').each do |attr|
@@ -11,12 +11,12 @@ module Kaui
11
11
  end
12
12
 
13
13
  def self.find_safely_by_id(id, options = {})
14
- Kaui::PaymentMethod.find_by_id(id, true, options)
14
+ Kaui::PaymentMethod.find_by_id(id, false, true, [], 'NONE', options)
15
15
  rescue StandardError => e
16
16
  # Maybe the plugin is not registered or the plugin threw an exception
17
17
  Rails.logger.warn(e)
18
18
  begin
19
- Kaui::PaymentMethod.find_by_id(id, false, options)
19
+ Kaui::PaymentMethod.find_by_id(id, false, true, [], 'NONE', options)
20
20
  rescue StandardError
21
21
  nil
22
22
  end
@@ -26,7 +26,7 @@ module Kaui
26
26
  pms = Kaui::PaymentMethod.find_all_by_account_id(account_id, false, options)
27
27
 
28
28
  pms.each_with_index do |pm, i|
29
- pms[i] = Kaui::PaymentMethod.find_by_id(pm.payment_method_id, true, options)
29
+ pms[i] = Kaui::PaymentMethod.find_by_id(pm.payment_method_id, false, true, [], 'NONE', options)
30
30
  rescue StandardError => e
31
31
  # Maybe the plugin is not registered or the plugin threw an exception
32
32
  Rails.logger.warn(e)
@@ -49,7 +49,7 @@ module Kaui
49
49
 
50
50
  # The payment method may have been deleted
51
51
  payment_methods_cache[payment.payment_method_id] ||= begin
52
- Kaui::PaymentMethod.find_by_id(payment.payment_method_id, true, options)
52
+ Kaui::PaymentMethod.find_by_id(payment.payment_method_id, false, true, [], 'NONE', options)
53
53
  rescue StandardError
54
54
  nil
55
55
  end