kaui 3.0.2 → 3.0.4

Sign up to get free protection for your applications and to get access to all the features.
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