kaui 1.0.0 → 1.1.0

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/kaui/kaui.js +118 -11
  3. data/app/assets/stylesheets/kaui/common.less +91 -6
  4. data/app/assets/stylesheets/kaui/payment.less +1 -0
  5. data/app/controllers/kaui/account_children_controller.rb +1 -4
  6. data/app/controllers/kaui/accounts_controller.rb +4 -7
  7. data/app/controllers/kaui/admin_allowed_users_controller.rb +24 -7
  8. data/app/controllers/kaui/admin_tenants_controller.rb +59 -20
  9. data/app/controllers/kaui/audit_logs_controller.rb +3 -2
  10. data/app/controllers/kaui/charges_controller.rb +1 -1
  11. data/app/controllers/kaui/credits_controller.rb +1 -1
  12. data/app/controllers/kaui/home_controller.rb +273 -10
  13. data/app/controllers/kaui/invoice_items_controller.rb +1 -1
  14. data/app/controllers/kaui/invoices_controller.rb +3 -3
  15. data/app/controllers/kaui/payments_controller.rb +5 -3
  16. data/app/controllers/kaui/refunds_controller.rb +2 -2
  17. data/app/controllers/kaui/subscriptions_controller.rb +2 -1
  18. data/app/helpers/kaui/object_helper.rb +4 -0
  19. data/app/helpers/kaui/plugin_helper.rb +36 -20
  20. data/app/helpers/kaui/uuid_helper.rb +9 -0
  21. data/app/models/kaui/admin.rb +3 -1
  22. data/app/models/kaui/admin_tenant.rb +58 -10
  23. data/app/models/kaui/allowed_user.rb +1 -0
  24. data/app/models/kaui/catalog.rb +2 -2
  25. data/app/models/kaui/credit.rb +0 -2
  26. data/app/models/kaui/overdue.rb +5 -5
  27. data/app/views/kaui/account_children/index.html.erb +3 -3
  28. data/app/views/kaui/accounts/_account_info.html.erb +45 -91
  29. data/app/views/kaui/accounts/_billing_info.html.erb +12 -8
  30. data/app/views/kaui/accounts/_parent.html.erb +1 -1
  31. data/app/views/kaui/accounts/_payment_methods.html.erb +1 -1
  32. data/app/views/kaui/accounts/_personal_info.html.erb +74 -0
  33. data/app/views/kaui/accounts/index.html.erb +4 -4
  34. data/app/views/kaui/accounts/show.html.erb +9 -3
  35. data/app/views/kaui/admin_allowed_users/_form.html.erb +38 -10
  36. data/app/views/kaui/admin_tenants/_form_plugin_config.erb +82 -17
  37. data/app/views/kaui/admin_tenants/_show_catalog_simple.erb +11 -3
  38. data/app/views/kaui/admin_tenants/_show_overdue.erb +4 -4
  39. data/app/views/kaui/admin_tenants/_tenant_details.html.erb +7 -1
  40. data/app/views/kaui/admin_tenants/new_overdue_config.html.erb +1 -1
  41. data/app/views/kaui/audit_logs/_show_history_modal.html.erb +1 -1
  42. data/app/views/kaui/audit_logs/index.html.erb +4 -0
  43. data/app/views/kaui/home/_advanced_search_modal.html.erb +80 -0
  44. data/app/views/kaui/home/index.html.erb +18 -5
  45. data/app/views/kaui/invoices/show.html.erb +7 -1
  46. data/app/views/kaui/layouts/kaui_flash.html.erb +14 -3
  47. data/app/views/kaui/layouts/kaui_navbar.html.erb +11 -9
  48. data/app/views/kaui/payments/_form.html.erb +8 -10
  49. data/app/views/kaui/payments/_payment_table.html.erb +40 -37
  50. data/app/views/kaui/payments/index.html.erb +1 -0
  51. data/app/views/kaui/payments/show.html.erb +5 -7
  52. data/app/views/kaui/queues/index.html.erb +22 -4
  53. data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +1 -1
  54. data/app/views/kaui/tag_definitions/index.html.erb +1 -1
  55. data/config/routes.rb +2 -0
  56. data/lib/kaui/version.rb +1 -1
  57. data/test/functional/kaui/accounts_controller_test.rb +35 -0
  58. data/test/functional/kaui/admin_allowed_users_controller_test.rb +55 -2
  59. data/test/functional/kaui/admin_tenants_controller_test.rb +67 -6
  60. data/test/functional/kaui/home_controller_test.rb +389 -15
  61. data/test/functional/kaui/subscriptions_controller_test.rb +1 -1
  62. data/test/killbill_test_helper.rb +2 -2
  63. data/test/unit/helpers/kaui/uuid_helper_test.rb +16 -0
  64. data/test/unit/kaui/admin_tenant_test.rb +49 -0
  65. metadata +6 -4
  66. data/test/unit/kaui/uuid_helper_test.rb +0 -10
@@ -8,7 +8,8 @@ class Kaui::AuditLogsController < Kaui::EngineController
8
8
 
9
9
 
10
10
  formatter = lambda do |log|
11
- object_id_text = view_context.content_tag(:span, view_context.truncate_uuid(log.object_id), title: log.object_id )
11
+ object_id_text = view_context.object_id_popover(log.object_id)
12
+
12
13
  if object_with_history?(log.object_type)
13
14
  object_id_text = view_context.link_to(object_id_text, '#showHistoryModal',
14
15
  data: {
@@ -29,7 +30,7 @@ class Kaui::AuditLogsController < Kaui::EngineController
29
30
  log.changed_by,
30
31
  log.reason_code,
31
32
  log.comments,
32
- view_context.content_tag(:span, view_context.truncate_uuid(log.user_token), title: log.user_token )
33
+ view_context.object_id_popover(log.user_token, 'left')
33
34
  ]
34
35
  end
35
36
 
@@ -5,7 +5,7 @@ class Kaui::ChargesController < Kaui::EngineController
5
5
  amount = params[:amount]
6
6
 
7
7
  if invoice_id.present?
8
- @invoice = Kaui::Invoice.find_by_id_or_number(invoice_id, true, 'NONE', options_for_klient)
8
+ @invoice = Kaui::Invoice.find_by_id(invoice_id, true, 'NONE', options_for_klient)
9
9
  amount ||= @invoice.balance
10
10
  currency = @invoice.currency
11
11
  else
@@ -5,7 +5,7 @@ class Kaui::CreditsController < Kaui::EngineController
5
5
  amount = params[:amount]
6
6
 
7
7
  if invoice_id.present?
8
- @invoice = Kaui::Invoice.find_by_id_or_number(invoice_id, true, 'NONE', options_for_klient)
8
+ @invoice = Kaui::Invoice.find_by_id(invoice_id, true, 'NONE', options_for_klient)
9
9
  amount ||= @invoice.balance
10
10
  currency = @invoice.currency
11
11
  else
@@ -1,25 +1,288 @@
1
1
  class Kaui::HomeController < Kaui::EngineController
2
2
 
3
+ QUERY_PARSE_REGEX = ['FIND:(?<object_type>.*) BY:(?<search_by>.*) FOR:(?<search_for>.*) ONLY_FIRST:(?<fast>.*)',
4
+ 'FIND:(?<object_type>.*) BY:(?<search_by>.*) FOR:(?<search_for>.*)',
5
+ 'FIND:(?<object_type>.*) FOR:(?<search_for>.*) ONLY_FIRST:(?<fast>.*)',
6
+ 'FIND:(?<object_type>.*) FOR:(?<search_for>.*)']
7
+
8
+ SIMPLE_PARSE_REGEX = '(?<search_for>.*)'
9
+
3
10
  def index
4
11
  @search_query = params[:q]
5
12
  end
6
13
 
7
14
  def search
8
- search_type, search_query = parse_query(params[:q])
9
- if search_type == 'invoice'
10
- redirect_to invoice_path(:id => search_query)
11
- elsif search_type == 'payment'
12
- redirect_to payment_path(:id => search_query)
13
- elsif search_type == 'transaction'
14
- redirect_to transaction_path(:id => search_query)
15
- else
16
- redirect_to accounts_path(:q => search_query, :fast => params[:fast])
15
+ object_type, search_query, search_by, fast = parse_query(params[:q])
16
+
17
+ unless object_type.nil?
18
+ cached_options_for_klient = options_for_klient
19
+ send("#{object_type}_search", search_query, search_by, fast, cached_options_for_klient)
17
20
  end
18
21
  end
19
22
 
20
23
  private
21
24
 
25
+ def account_search(search_query, search_by = nil, fast = 0, options = {})
26
+ if search_by == 'ID'
27
+ begin
28
+ account = Kaui::Account.find_by_id(search_query, false, false, options)
29
+ redirect_to account_path(account.account_id) and return
30
+ rescue KillBillClient::API::NotFound => _
31
+ search_error("No account matches \"#{search_query}\"")
32
+ end
33
+ elsif search_by == 'EXTERNAL_KEY'
34
+ begin
35
+ account = Kaui::Account.find_by_external_key(search_query, false, false, options)
36
+ redirect_to account_path(account.account_id) and return
37
+ rescue KillBillClient::API::NotFound => _
38
+ search_error("No account matches \"#{search_query}\"")
39
+ end
40
+ else
41
+ account = Kaui::Account.list_or_search(search_query, 0, 1, options).first
42
+ if account.blank?
43
+ search_error("No account matches \"#{search_query}\"")
44
+ elsif true?(fast)
45
+ redirect_to account_path(account.account_id) and return
46
+ else
47
+ redirect_to accounts_path(:q => search_query, :fast => fast) and return
48
+ end
49
+ end
50
+ end
51
+
52
+ def invoice_search(search_query, search_by = nil, fast = 0, options = {})
53
+ if search_by == 'ID'
54
+ begin
55
+ invoice = Kaui::Invoice.find_by_id(search_query, false, 'NONE', options)
56
+ redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id) and return
57
+ rescue KillBillClient::API::NotFound => _
58
+ search_error("No invoice matches \"#{search_query}\"")
59
+ end
60
+ elsif search_by == 'EXTERNAL_KEY'
61
+ unsupported_external_key_search('INVOICE')
62
+ else
63
+ invoice = Kaui::Invoice.list_or_search(search_query, 0, 1, options).first
64
+ if invoice.blank?
65
+ begin
66
+ invoice = Kaui::Invoice.find_by_invoice_item_id(search_query, false, false, 'NONE', options)
67
+ redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id) and return
68
+ rescue KillBillClient::API::NotFound => _
69
+ search_error("No invoice matches \"#{search_query}\"")
70
+ end
71
+ elsif true?(fast)
72
+ redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id) and return
73
+ else
74
+ redirect_to account_invoices_path(:account_id => invoice.account_id, :q => search_query, :fast => fast) and return
75
+ end
76
+ end
77
+ end
78
+
79
+ def payment_search(search_query, search_by = nil, fast = 0, options = {})
80
+ if search_by == 'ID'
81
+ begin
82
+ payment = Kaui::Payment.find_by_id(search_query, false, false, options)
83
+ redirect_to account_payment_path(payment.account_id, payment.payment_id) and return
84
+ rescue KillBillClient::API::NotFound => _
85
+ search_error("No payment matches \"#{search_query}\"")
86
+ end
87
+ elsif search_by == 'EXTERNAL_KEY'
88
+ begin
89
+ payment = Kaui::Payment.find_by_external_key(search_query, false, false, options)
90
+ redirect_to account_payment_path(payment.account_id, payment.payment_id) and return
91
+ rescue KillBillClient::API::NotFound => _
92
+ search_error("No payment matches \"#{search_query}\"")
93
+ end
94
+ else
95
+ payment = Kaui::Payment.list_or_search(search_query, 0, 1, options).first
96
+ if payment.blank?
97
+ search_error("No payment matches \"#{search_query}\"")
98
+ elsif true?(fast)
99
+ redirect_to account_payment_path(payment.account_id, payment.payment_id) and return
100
+ else
101
+ redirect_to account_payments_path(:account_id => payment.account_id, :q => search_query, :fast => fast) and return
102
+ end
103
+ end
104
+ end
105
+
106
+ def transaction_search(search_query, search_by = nil, fast = 0, options = {})
107
+ if search_by.blank? || search_by == 'ID'
108
+ begin
109
+ payment = Kaui::Payment.find_by_transaction_id(search_query, false, true, options)
110
+ redirect_to account_payment_path(payment.account_id, payment.payment_id) and return
111
+ rescue KillBillClient::API::NotFound => _
112
+ search_error("No transaction matches \"#{search_query}\"")
113
+ end
114
+ else
115
+ begin
116
+ payment = Kaui::Payment.find_by_transaction_external_key(search_query, false, true, 'NONE', options)
117
+ redirect_to account_payment_path(payment.account_id, payment.payment_id) and return
118
+ rescue KillBillClient::API::NotFound => _
119
+ search_error("No transaction matches \"#{search_query}\"")
120
+ end
121
+ end
122
+ end
123
+
124
+ def bundle_search(search_query, search_by = nil, fast = 0, options = {})
125
+ if search_by == 'ID'
126
+ begin
127
+ bundle = Kaui::Bundle.find_by_id(search_query, options)
128
+ redirect_to kaui_engine.account_bundles_path(bundle.account_id) and return
129
+ rescue KillBillClient::API::NotFound => _
130
+ search_error("No bundle matches \"#{search_query}\"")
131
+ end
132
+ elsif search_by == 'EXTERNAL_KEY'
133
+ begin
134
+ bundle = Kaui::Bundle.find_by_external_key(search_query, false, options)
135
+ redirect_to kaui_engine.account_bundles_path(bundle.account_id) and return
136
+ rescue KillBillClient::API::NotFound => _
137
+ search_error("No bundle matches \"#{search_query}\"")
138
+ end
139
+ else
140
+ bundle = Kaui::Bundle.list_or_search(search_query, 0, 1, options).first
141
+ if bundle.blank?
142
+ search_error("No bundle matches \"#{search_query}\"")
143
+ else
144
+ redirect_to kaui_engine.account_bundles_path(bundle.account_id) and return
145
+ end
146
+ end
147
+ end
148
+
149
+ def credit_search(search_query, search_by = nil, fast = 0, options = {})
150
+ if search_by.blank? || search_by == 'ID'
151
+ begin
152
+ credit = Kaui::Credit.find_by_id(search_query, options)
153
+ redirect_to account_invoice_path(credit.account_id, credit.invoice_id) and return
154
+ rescue KillBillClient::API::NotFound => _
155
+ search_error("No credit matches \"#{search_query}\"")
156
+ end
157
+ else
158
+ unsupported_external_key_search('CREDIT')
159
+ end
160
+ end
161
+
162
+ def custom_field_search(search_query, search_by = nil, fast = 0, options = {})
163
+ if search_by.blank? || search_by == 'ID'
164
+ custom_field = Kaui::CustomField.list_or_search(search_query, 0, 1, options)
165
+ if custom_field.blank?
166
+ search_error("No custom field matches \"#{search_query}\"")
167
+ else
168
+ redirect_to custom_fields_path(:q => search_query, :fast => fast) and return
169
+ end
170
+ else
171
+ unsupported_external_key_search('CUSTOM FIELD')
172
+ end
173
+ end
174
+
175
+ def invoice_payment_search(search_query, search_by = nil, fast = 0, options = {})
176
+ if search_by.blank? || search_by == 'ID'
177
+ begin
178
+ invoice_payment = Kaui::InvoicePayment.find_safely_by_id(search_query, options)
179
+ redirect_to account_payment_path(invoice_payment.account_id, invoice_payment.payment_id) and return
180
+ rescue KillBillClient::API::NotFound => _
181
+ search_error("No invoice payment matches \"#{search_query}\"")
182
+ end
183
+ else
184
+ unsupported_external_key_search('INVOICE PAYMENT')
185
+ end
186
+ end
187
+
188
+ def subscription_search(search_query, search_by = nil, fast = 0, options = {})
189
+ if search_by.blank? || search_by == 'ID'
190
+ begin
191
+ subscription = Kaui::Subscription.find_by_id(search_query, options)
192
+ redirect_to account_bundles_path(subscription.account_id) and return
193
+ rescue KillBillClient::API::NotFound => _
194
+ search_error("No subscription matches \"#{search_query}\"")
195
+ end
196
+ else
197
+ unsupported_external_key_search('SUBSCRIPTION')
198
+ end
199
+ end
200
+
201
+ def tag_search(search_query, search_by = nil, fast = 0, options = {})
202
+ if search_by.blank? || search_by == 'ID'
203
+ tag = Kaui::Tag.list_or_search(search_query, 0, 1, options)
204
+ if tag.blank?
205
+ search_error("No tag matches \"#{search_query}\"")
206
+ else
207
+ redirect_to tags_path(:q => search_query, :fast => fast) and return
208
+ end
209
+ else
210
+ unsupported_external_key_search('TAG')
211
+ end
212
+ end
213
+
214
+ def tag_definition_search(search_query, search_by = nil, fast = 0, options = {})
215
+ if search_by == 'ID'
216
+ begin
217
+ Kaui::TagDefinition.find_by_id(search_query, 'NONE', options)
218
+ redirect_to tag_definitions_path(:q => search_query, :fast => fast) and return
219
+ rescue KillBillClient::API::NotFound => _
220
+ search_error("No tag definition matches \"#{search_query}\"")
221
+ end
222
+ elsif search_by == 'EXTERNAL_KEY'
223
+ unsupported_external_key_search('TAG DEFINITION')
224
+ else
225
+ tag_definition = Kaui::TagDefinition.find_by_name(search_query, 'NONE', options)
226
+ if tag_definition.blank?
227
+ begin
228
+ Kaui::TagDefinition.find_by_id(search_query, 'NONE', options)
229
+ redirect_to tag_definitions_path(:q => search_query, :fast => fast) and return
230
+ rescue KillBillClient::API::NotFound => _
231
+ search_error("No tag definition matches \"#{search_query}\"")
232
+ end
233
+ else
234
+ redirect_to tag_definitions_path(:q => search_query, :fast => fast) and return
235
+ end
236
+ end
237
+ end
238
+
239
+ def unsupported_external_key_search(object_type)
240
+ search_error("\"#{object_type}\": Search by \"EXTERNAL KEY\" is not supported.")
241
+ end
242
+
243
+ def search_error(message)
244
+ flash[:error] = message
245
+ redirect_to kaui_engine.home_path and return
246
+ end
247
+
22
248
  def parse_query(query)
23
- /((invoice|payment|transaction):)?(.*)/.match(query).captures.drop(1)
249
+ statements, simple_regex_used = regex_parse_query(query)
250
+
251
+ object_type = statements[:object_type].strip.downcase rescue 'account'
252
+ search_for = statements[:search_for].strip
253
+ search_by = statements[:search_by].strip.upcase rescue simple_regex_used && uuid?(search_for) ? 'ID' : nil
254
+ fast = statements[:fast] rescue '0'
255
+
256
+ if !search_by.blank? && !(search_by == 'ID' || search_by == 'EXTERNAL_KEY')
257
+ search_error("\"#{search_by}\" is not a valid search by value")
258
+ end
259
+
260
+ return object_type, search_for, search_by, fast
261
+ end
262
+
263
+ def regex_parse_query(query)
264
+ statements = nil
265
+ simple_regex_used = false
266
+ QUERY_PARSE_REGEX.each do |query_regex|
267
+ regex_exp = Regexp.new(query_regex, true)
268
+ statements = regex_exp.match(query)
269
+ break unless statements.nil?
270
+ end
271
+
272
+ if statements.nil?
273
+ regex_exp = Regexp.new(SIMPLE_PARSE_REGEX, true)
274
+ statements = regex_exp.match(query)
275
+ simple_regex_used = true
276
+ end
277
+
278
+ return statements, simple_regex_used
279
+ end
280
+
281
+ def true?(statement)
282
+ [1,'1',true,'true'].include? ((statement.instance_of? String) ? statement.downcase : statement)
283
+ end
284
+
285
+ def uuid?(value)
286
+ value =~ /[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}/
24
287
  end
25
288
  end
@@ -5,7 +5,7 @@ class Kaui::InvoiceItemsController < Kaui::EngineController
5
5
  invoice_id = params.require(:invoice_id)
6
6
 
7
7
  # See https://github.com/killbill/killbill/issues/7
8
- invoice = Kaui::Invoice.find_by_id_or_number(invoice_id, true, 'NONE', options_for_klient)
8
+ invoice = Kaui::Invoice.find_by_id(invoice_id, true, 'NONE', options_for_klient)
9
9
  @invoice_item = invoice.items.find { |ii| ii.invoice_item_id == invoice_item_id }
10
10
 
11
11
  if @invoice_item.nil?
@@ -45,7 +45,7 @@ class Kaui::InvoicesController < Kaui::EngineController
45
45
  # Go to the database once
46
46
  cached_options_for_klient = options_for_klient
47
47
 
48
- @invoice = Kaui::Invoice.find_by_id_or_number(params.require(:id), true, 'FULL', cached_options_for_klient)
48
+ @invoice = Kaui::Invoice.find_by_id(params.require(:id), true, 'FULL', cached_options_for_klient)
49
49
 
50
50
  fetch_payments = promise { @invoice.payments(true, true, 'FULL', cached_options_for_klient).map { |payment| Kaui::InvoicePayment.build_from_raw_payment(payment) } }
51
51
  fetch_pms = fetch_payments.then { |payments| Kaui::PaymentMethod.payment_methods_for_payments(payments, cached_options_for_klient) }
@@ -76,7 +76,7 @@ class Kaui::InvoicesController < Kaui::EngineController
76
76
  end
77
77
 
78
78
  def restful_show
79
- invoice = Kaui::Invoice.find_by_id_or_number(params.require(:id), false, 'NONE', options_for_klient)
79
+ invoice = Kaui::Invoice.find_by_id(params.require(:id), false, 'NONE', options_for_klient)
80
80
  redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id)
81
81
  end
82
82
 
@@ -85,7 +85,7 @@ class Kaui::InvoicesController < Kaui::EngineController
85
85
  end
86
86
 
87
87
  def commit_invoice
88
- invoice = KillBillClient::Model::Invoice.find_by_id_or_number(params.require(:id), false, 'NONE', options_for_klient)
88
+ invoice = KillBillClient::Model::Invoice.find_by_id(params.require(:id), false, 'NONE', options_for_klient)
89
89
  invoice.commit(current_user.kb_username, params[:reason], params[:comment], options_for_klient)
90
90
  redirect_to account_invoice_path(invoice.account_id, invoice.invoice_id), :notice => 'Invoice successfully committed'
91
91
  end
@@ -52,7 +52,8 @@ class Kaui::PaymentsController < Kaui::EngineController
52
52
  payment.total_authed_amount_to_money,
53
53
  payment.paid_amount_to_money,
54
54
  payment.returned_amount_to_money,
55
- payment.transactions.empty? ? nil : payment.transactions[-1].status
55
+ payment.transactions.empty? ? nil : payment.transactions[-1].status,
56
+ payment.payment_external_key
56
57
  ][column]
57
58
  end
58
59
 
@@ -63,7 +64,8 @@ class Kaui::PaymentsController < Kaui::EngineController
63
64
  view_context.humanized_money_with_symbol(payment.total_authed_amount_to_money),
64
65
  view_context.humanized_money_with_symbol(payment.paid_amount_to_money),
65
66
  view_context.humanized_money_with_symbol(payment.returned_amount_to_money),
66
- payment.transactions.empty? ? nil : view_context.colored_transaction_status(payment.transactions[-1].status)
67
+ payment.transactions.empty? ? nil : view_context.colored_transaction_status(payment.transactions[-1].status),
68
+ payment.payment_external_key
67
69
  ]
68
70
  end
69
71
 
@@ -71,7 +73,7 @@ class Kaui::PaymentsController < Kaui::EngineController
71
73
  end
72
74
 
73
75
  def new
74
- fetch_invoice = promise { Kaui::Invoice.find_by_id_or_number(params.require(:invoice_id), true, 'NONE', options_for_klient) }
76
+ fetch_invoice = promise { Kaui::Invoice.find_by_id(params.require(:invoice_id), true, 'NONE', options_for_klient) }
75
77
  fetch_payment_methods = promise { Kaui::PaymentMethod.find_all_by_account_id(params.require(:account_id), false, options_for_klient) }
76
78
 
77
79
  @invoice = wait(fetch_invoice)
@@ -1,7 +1,7 @@
1
1
  class Kaui::RefundsController < Kaui::EngineController
2
2
 
3
3
  def new
4
- fetch_invoice = promise { Kaui::Invoice.find_by_id_or_number(params.require(:invoice_id), true, 'NONE', options_for_klient) }
4
+ fetch_invoice = promise { Kaui::Invoice.find_by_id(params.require(:invoice_id), true, 'NONE', options_for_klient) }
5
5
  fetch_payment = promise { Kaui::InvoicePayment::find_by_id(params.require(:payment_id), false, false, options_for_klient) }
6
6
  fetch_bundles = promise { @account.bundles(options_for_klient) }
7
7
 
@@ -13,7 +13,7 @@ class Kaui::RefundsController < Kaui::EngineController
13
13
  end
14
14
 
15
15
  def create
16
- invoice = Kaui::Invoice.find_by_id_or_number(params.require(:invoice_id), true, 'NONE', options_for_klient)
16
+ invoice = Kaui::Invoice.find_by_id(params.require(:invoice_id), true, 'NONE', options_for_klient)
17
17
 
18
18
  if params[:adjustment_type] == 'invoiceItemAdjustment'
19
19
  items = []
@@ -73,6 +73,7 @@ class Kaui::SubscriptionsController < Kaui::EngineController
73
73
  params[:comment],
74
74
  requested_date,
75
75
  billing_policy,
76
+ nil,
76
77
  wait_for_completion,
77
78
  options_for_klient)
78
79
 
@@ -184,7 +185,7 @@ class Kaui::SubscriptionsController < Kaui::EngineController
184
185
  else
185
186
  options = options_for_klient
186
187
 
187
- catalog = Kaui::Catalog.get_tenant_catalog('json', DateTime.now.to_s, options)
188
+ catalog = Kaui::Catalog.get_tenant_catalog_json( DateTime.now.to_s, options)
188
189
 
189
190
  return [] if catalog.blank?
190
191
 
@@ -24,5 +24,9 @@ module Kaui
24
24
  [:ACCOUNT, :BUNDLE, :INVOICE, :INVOICE_ITEM, :INVOICE_PAYMENT, :PAYMENT, :SUBSCRIPTION, :TRANSACTION]
25
25
  end
26
26
 
27
+ def object_types_for_advanced_search
28
+ [:ACCOUNT, :BUNDLE, :INVOICE, :CREDIT, :CUSTOM_FIELD, :INVOICE_PAYMENT, :INVOICE, :PAYMENT, :SUBSCRIPTION, :TRANSACTION, :TAG, :TAG_DEFINITION]
29
+ end
30
+
27
31
  end
28
32
  end
@@ -3,30 +3,22 @@ module Kaui
3
3
  # including plugin that are installed
4
4
  def plugin_repository
5
5
  plugins = []
6
- plugin_repository = Kaui::AdminTenant::get_plugin_repository
7
- installed_plugins = installed_plugins()
8
-
6
+ plugin_repository = Kaui::AdminTenant.get_plugin_repository
9
7
  plugin_repository.each_pair do |key, info|
10
- found_plugin = installed_plugins.reject! { |p| p.plugin_key.eql?(key.to_s) }
11
8
  plugins << {
12
- plugin_key: plugin_key(key.to_s, info),
13
- plugin_name: plugin_name(key.to_s, info),
14
- plugin_type: info[:type],
15
- installed: !found_plugin.nil?
9
+ plugin_key: plugin_key(key.to_s, info),
10
+ plugin_name: plugin_name(key.to_s, info),
11
+ plugin_type: info[:type],
12
+ installed: false
16
13
  }
17
14
  end
18
15
 
19
- installed_plugins.each do |plugin|
20
- plugins << {
21
- plugin_key: plugin.plugin_key,
22
- plugin_name: plugin.plugin_name,
23
- plugin_type: nil,
24
- installed: true
25
- }
26
- end
16
+ installed_plugins = installed_plugins(plugins)
17
+
18
+ plugins.sort! { |a, b| a[:plugin_key] <=> b[:plugin_key] }
19
+ plugins.each { |plugin| installed_plugins << plugin }
27
20
 
28
- plugins.sort! { |a,b| a[:plugin_key] <=> b[:plugin_key] && b[:installed].to_s <=> a[:installed].to_s }
29
- plugins
21
+ installed_plugins
30
22
  end
31
23
 
32
24
  private
@@ -48,11 +40,35 @@ module Kaui
48
40
  end
49
41
  end
50
42
 
51
- def installed_plugins
43
+ def installed_plugins(plugins)
44
+ installed_plugins = []
52
45
  nodes_info = KillBillClient::Model::NodesInfo.nodes_info(Kaui.current_tenant_user_options(current_user, session)) || []
53
46
  plugins_info = nodes_info.first.plugins_info || []
54
47
 
55
- plugins_info.select { |plugin| !plugin.version.nil?}
48
+ plugins_info.each do |plugin|
49
+ next if plugin.version.nil?
50
+ # do not allow duplicate
51
+ next if installed_plugins.any? { |p| p[:plugin_name].eql?(plugin.plugin_name) }
52
+ plugin_key = Kaui::AdminTenant.rewrite_plugin_key(plugin.plugin_key)
53
+ installed_plugins << {
54
+ plugin_key: plugin_key,
55
+ plugin_name: plugin.plugin_name,
56
+ plugin_type: find_plugin_type(plugins, plugin_key),
57
+ installed: true
58
+ }
59
+ end
60
+
61
+ installed_plugins.sort! { |a,b| a[:plugin_key] <=> b[:plugin_key] }
62
+ end
63
+
64
+ def find_plugin_type(plugins, plugin_key_to_search)
65
+ plugins.each do |plugin|
66
+ if plugin[:plugin_key] == plugin_key_to_search
67
+ return plugin[:plugin_type]
68
+ end
69
+ end
70
+
71
+ return nil
56
72
  end
57
73
  end
58
74
  end