kaui 1.4.0 → 2.0.3
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.
- checksums.yaml +4 -4
- data/README.md +24 -1
- data/app/assets/javascripts/kaui/kaui.js +8 -2
- data/app/assets/stylesheets/kaui/common.less +44 -1
- data/app/controllers/kaui/admin_tenants_controller.rb +77 -106
- data/app/controllers/kaui/audit_logs_controller.rb +23 -1
- data/app/controllers/kaui/charges_controller.rb +1 -1
- data/app/controllers/kaui/credits_controller.rb +5 -5
- data/app/controllers/kaui/home_controller.rb +2 -2
- data/app/controllers/kaui/invoice_items_controller.rb +1 -1
- data/app/controllers/kaui/invoices_controller.rb +6 -4
- data/app/controllers/kaui/payment_methods_controller.rb +9 -3
- data/app/controllers/kaui/payments_controller.rb +1 -1
- data/app/controllers/kaui/refunds_controller.rb +2 -2
- data/app/controllers/kaui/sessions_controller.rb +6 -0
- data/app/controllers/kaui/subscriptions_controller.rb +29 -5
- data/app/helpers/kaui/payment_method_helper.rb +5 -3
- data/app/helpers/kaui/plugin_helper.rb +9 -48
- data/app/helpers/kaui/subscription_helper.rb +5 -4
- data/app/models/kaui/admin_tenant.rb +8 -84
- data/app/models/kaui/catalog.rb +14 -2
- data/app/views/kaui/account_emails/_form.html.erb +1 -1
- data/app/views/kaui/accounts/_form.html.erb +1 -1
- data/app/views/kaui/admin_tenants/_form_plugin_config.erb +48 -240
- data/app/views/kaui/admin_tenants/_show_catalog_simple.erb +6 -6
- data/app/views/kaui/admin_tenants/new_catalog.html.erb +16 -15
- data/app/views/kaui/bundles/index.html.erb +1 -1
- data/app/views/kaui/chargebacks/_form.html.erb +1 -1
- data/app/views/kaui/charges/_form.html.erb +1 -1
- data/app/views/kaui/credits/_form.html.erb +2 -2
- data/app/views/kaui/invoices/show.html.erb +0 -1
- data/app/views/kaui/payments/_form.html.erb +1 -1
- data/app/views/kaui/payments/_payment_table.html.erb +2 -2
- data/app/views/kaui/subscriptions/_edit_form.html.erb +1 -1
- data/app/views/kaui/subscriptions/_form.html.erb +16 -4
- data/config/routes.rb +1 -1
- data/lib/kaui/version.rb +1 -1
- data/test/dummy/config/initializers/cookies_serializer.rb +1 -1
- data/test/functional/kaui/admin_tenants_controller_test.rb +2 -22
- data/test/functional/kaui/credits_controller_test.rb +3 -3
- data/test/functional/kaui/home_controller_test.rb +5 -5
- data/test/functional/kaui/subscriptions_controller_test.rb +1 -1
- data/test/killbill_test_helper.rb +6 -6
- data/test/unit/helpers/kaui/payment_method_helper_test.rb +17 -0
- data/test/unit/kaui/admin_tenant_test.rb +10 -47
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c998eb4ff14442f28a18da7cab14072cc7d19dfc
|
4
|
+
data.tar.gz: 660dbac2ba54d6d0c853b63c697587e486a5c2ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 714a6e0da369b82570551cd082b7fd9b8d62ab18e906756a4194e31dfa5f90d47dd5b8624f5ca070915e45308d31839f451cca5a343895642d50ba47c89d1716
|
7
|
+
data.tar.gz: bc72e0c1b8febf3d413d1191e48431a2d330aff546e84493953e0697b043258365973d3fd5d0ea6dddab244b4c9a5d4cc6a92d9ce9e60155cf9663f7acc92b60
|
data/README.md
CHANGED
@@ -11,7 +11,8 @@ Kill Bill compatibility
|
|
11
11
|
| 0.14.y | 0.16.z |
|
12
12
|
| 0.15.y | 0.18.z (Rails 4) |
|
13
13
|
| 0.16.y | 0.18.z (Rails 5) |
|
14
|
-
| 1.x.y | 0.20.z
|
14
|
+
| 1.x.y | 0.20.z (Rails 5) |
|
15
|
+
| 2.x.y | 0.22.z (Rails 5) |
|
15
16
|
|
16
17
|
Dependencies
|
17
18
|
------------
|
@@ -25,10 +26,32 @@ You can run Kaui locally by using the test/dummy app provided:
|
|
25
26
|
|
26
27
|
```
|
27
28
|
export RAILS_ENV=development
|
29
|
+
export DATABASE_URL=mysql://root:killbill@<MySQL Host IP>/killbill
|
28
30
|
bundle install
|
29
31
|
rails db:migrate
|
30
32
|
rails s
|
31
33
|
```
|
34
|
+
If you experience an error of;
|
35
|
+
|
36
|
+
```
|
37
|
+
You must use Bundler 2 or greater with this lockfile.
|
38
|
+
```
|
39
|
+
|
40
|
+
Then run the following commands to update your environment.
|
41
|
+
|
42
|
+
Update Rubygems;
|
43
|
+
|
44
|
+
```
|
45
|
+
gem update --system
|
46
|
+
```
|
47
|
+
Update bundler;
|
48
|
+
```
|
49
|
+
gem install bundler
|
50
|
+
```
|
51
|
+
Update the Gemfile.lock file;
|
52
|
+
```
|
53
|
+
bundler update --bundler
|
54
|
+
```
|
32
55
|
|
33
56
|
The Kill Bill URL can be configured through the `KILLBILL_URL` environment variable, e.g.
|
34
57
|
|
@@ -144,6 +144,7 @@ jQuery(document).ready(function ($) {
|
|
144
144
|
const VALIDATE_EXTERNAL_KEY = {
|
145
145
|
account: { url: Routes.kaui_engine_accounts_validate_external_key_path(), invalid_msg_class_name: '.account_external_key_invalid_msg' },
|
146
146
|
payment_method: {url: Routes.kaui_engine_payment_methods_validate_external_key_path(), invalid_msg_class_name: '.payment_method_external_key_invalid_msg'},
|
147
|
+
bundle: {url: Routes.kaui_engine_subscriptions_validate_bundle_external_key_path(), invalid_msg_class_name: '.subscription_bundle_external_key_invalid_msg'},
|
147
148
|
subscription: {url: Routes.kaui_engine_subscriptions_validate_external_key_path(), invalid_msg_class_name: '.subscription_external_key_invalid_msg'}
|
148
149
|
}
|
149
150
|
|
@@ -157,8 +158,13 @@ jQuery(document).ready(function ($) {
|
|
157
158
|
validate_external_key($(this).val(),'payment_method');
|
158
159
|
});
|
159
160
|
|
160
|
-
validate_external_key($('#
|
161
|
-
$('#
|
161
|
+
validate_external_key($('#bundle_external_key').val(),'bundle');
|
162
|
+
$('#bundle_external_key').on('change', function(e){
|
163
|
+
validate_external_key($(this).val(),'bundle');
|
164
|
+
});
|
165
|
+
|
166
|
+
validate_external_key($('#subscription_external_key').val(),'subscription');
|
167
|
+
$('#subscription_external_key').on('change', function(e){
|
162
168
|
validate_external_key($(this).val(),'subscription');
|
163
169
|
});
|
164
170
|
|
@@ -717,4 +717,47 @@ form[id^="new_tag_definition"] {
|
|
717
717
|
|
718
718
|
.switch-tenant-active {
|
719
719
|
color: #00919d;
|
720
|
-
}
|
720
|
+
}
|
721
|
+
|
722
|
+
/* Required for https://github.com/killbill/killbill-admin-ui/issues/262 */
|
723
|
+
.ui-autocomplete {
|
724
|
+
position: absolute;
|
725
|
+
z-index: 1000;
|
726
|
+
float: left;
|
727
|
+
display: none;
|
728
|
+
min-width: 160px;
|
729
|
+
padding: 4px 0;
|
730
|
+
margin: 2px 0 0 0;
|
731
|
+
list-style: none;
|
732
|
+
background-color: #ffffff;
|
733
|
+
border-color: rgba(0, 0, 0, 0.2);
|
734
|
+
border-style: solid;
|
735
|
+
border-width: 1px;
|
736
|
+
border-radius: 5px;
|
737
|
+
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
738
|
+
background-clip: padding-box;
|
739
|
+
|
740
|
+
.ui-menu-item {
|
741
|
+
display: block;
|
742
|
+
padding: 3px 15px;
|
743
|
+
clear: both;
|
744
|
+
font-weight: normal;
|
745
|
+
line-height: 18px;
|
746
|
+
color: #555555;
|
747
|
+
white-space: nowrap;
|
748
|
+
|
749
|
+
.ui-state-active, .ui-state-hover {
|
750
|
+
color: #ffffff;
|
751
|
+
text-decoration: none;
|
752
|
+
background-color: #0088cc;
|
753
|
+
border-radius: 0px;
|
754
|
+
-webkit-border-radius: 0px;
|
755
|
+
-moz-border-radius: 0px;
|
756
|
+
background-image: none;
|
757
|
+
}
|
758
|
+
}
|
759
|
+
}
|
760
|
+
|
761
|
+
.ui-helper-hidden-accessible {
|
762
|
+
display: none;
|
763
|
+
}
|
@@ -81,12 +81,7 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
81
81
|
fetch_overdue = promise { Kaui::Overdue::get_overdue_json(options) rescue @overdue = nil }
|
82
82
|
fetch_overdue_xml = promise { Kaui::Overdue::get_tenant_overdue_config('xml', options) rescue @overdue_xml = nil }
|
83
83
|
|
84
|
-
|
85
|
-
# hack:: replace paypal key with paypal_express, to set configuration and allow the ui to find the right configuration inputs
|
86
|
-
plugin_repository = plugin_repository.inject({}) { |p, (k,v)| p[k.to_s.sub(/\Apaypal/, 'paypal_express').to_sym] = v; p }
|
87
|
-
|
88
|
-
fetch_plugin_config = promise { Kaui::AdminTenant::get_oss_plugin_info(plugin_repository) }
|
89
|
-
fetch_tenant_plugin_config = promise { Kaui::AdminTenant::get_tenant_plugin_config(plugin_repository, options) }
|
84
|
+
fetch_tenant_plugin_config = promise { Kaui::AdminTenant::get_tenant_plugin_config(options) }
|
90
85
|
|
91
86
|
@catalog_versions = []
|
92
87
|
wait(fetch_catalog_versions).each_with_index do |effective_date, idx|
|
@@ -98,7 +93,6 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
98
93
|
|
99
94
|
@overdue = wait(fetch_overdue)
|
100
95
|
@overdue_xml = wait(fetch_overdue_xml)
|
101
|
-
@plugin_config = wait(fetch_plugin_config) rescue ''
|
102
96
|
@tenant_plugin_config = wait(fetch_tenant_plugin_config) rescue ''
|
103
97
|
|
104
98
|
# When reloading page from the view, it sends the last tab that was active
|
@@ -121,27 +115,15 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
121
115
|
end
|
122
116
|
|
123
117
|
def new_catalog
|
124
|
-
@tenant = safely_find_tenant_by_id(params[:id])
|
125
|
-
|
126
118
|
options = tenant_options_for_client
|
127
|
-
options
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
latest_catalog.products.select { |p| p.type == 'BASE' }.map { |p| p.name } : []
|
136
|
-
@available_ao_products = latest_catalog && latest_catalog.products ?
|
137
|
-
latest_catalog.products.select { |p| p.type == 'ADD_ON' }.map { |p| p.name } : []
|
138
|
-
@available_standalone_products = latest_catalog && latest_catalog.products ?
|
139
|
-
latest_catalog.products.select { |p| p.type == 'STANDALONE' }.map { |p| p.name } : []
|
140
|
-
@product_categories = [:BASE, :ADD_ON, :STANDALONE]
|
141
|
-
@billing_period = [:DAILY, :WEEKLY, :BIWEEKLY, :THIRTY_DAYS, :MONTHLY, :QUARTERLY, :BIANNUAL, :ANNUAL, :BIENNIAL]
|
142
|
-
@time_units = [:UNLIMITED, :DAYS, :WEEKS, :MONTHS, :YEARS]
|
143
|
-
|
144
|
-
@simple_plan = Kaui::SimplePlan.new
|
119
|
+
fetch_state_for_new_catalog_screen(options)
|
120
|
+
@simple_plan = Kaui::SimplePlan.new({
|
121
|
+
:product_category => 'BASE',
|
122
|
+
:amount => 0,
|
123
|
+
:trial_length => 0,
|
124
|
+
:currency => 'USD',
|
125
|
+
:billing_period => 'MONTHLY'
|
126
|
+
})
|
145
127
|
end
|
146
128
|
|
147
129
|
def delete_catalog
|
@@ -189,21 +171,55 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
189
171
|
end
|
190
172
|
|
191
173
|
def create_simple_plan
|
192
|
-
current_tenant = safely_find_tenant_by_id(params[:id])
|
193
|
-
|
194
174
|
options = tenant_options_for_client
|
195
|
-
options
|
196
|
-
options[:api_secret] = current_tenant.api_secret
|
175
|
+
fetch_state_for_new_catalog_screen(options)
|
197
176
|
|
198
177
|
simple_plan = params.require(:simple_plan).delete_if { |e, value| value.blank? }
|
199
178
|
# Fix issue in Rails where first entry in the multi-select array is an empty string
|
200
179
|
simple_plan["available_base_products"].reject!(&:blank?) if simple_plan["available_base_products"]
|
201
180
|
|
202
|
-
simple_plan =
|
203
|
-
|
204
|
-
|
181
|
+
@simple_plan = Kaui::SimplePlan.new(simple_plan)
|
182
|
+
|
183
|
+
valid = true
|
184
|
+
# Validate new simple plan
|
185
|
+
# https://github.com/killbill/killbill-admin-ui/issues/247
|
186
|
+
if @available_base_products.include?(@simple_plan.plan_id)
|
187
|
+
flash.now[:error] = "Error while creating plan: invalid plan name (#{@simple_plan.plan_id} is a BASE product already)"
|
188
|
+
valid = false
|
189
|
+
elsif @available_ao_products.include?(@simple_plan.plan_id)
|
190
|
+
flash.now[:error] = "Error while creating plan: invalid plan name (#{@simple_plan.plan_id} is an ADD_ON product already)"
|
191
|
+
valid = false
|
192
|
+
elsif @available_standalone_products.include?(@simple_plan.plan_id)
|
193
|
+
flash.now[:error] = "Error while creating plan: invalid plan name (#{@simple_plan.plan_id} is a STANDALONE product already)"
|
194
|
+
valid = false
|
195
|
+
elsif @all_plans.include?(@simple_plan.product_name)
|
196
|
+
flash.now[:error] = "Error while creating plan: invalid product name (#{@simple_plan.product_name} is a plan name already)"
|
197
|
+
valid = false
|
198
|
+
elsif @all_plans.include?(@simple_plan.plan_id)
|
199
|
+
flash.now[:error] = "Error while creating plan: plan #{@simple_plan.plan_id} already exists"
|
200
|
+
valid = false
|
201
|
+
elsif @available_base_products.include?(@simple_plan.product_name) && @simple_plan.product_category != 'BASE'
|
202
|
+
flash.now[:error] = "Error while creating plan: product #{@simple_plan.product_name} is a BASE product"
|
203
|
+
valid = false
|
204
|
+
elsif @available_ao_products.include?(@simple_plan.product_name) && @simple_plan.product_category != 'ADD_ON'
|
205
|
+
flash.now[:error] = "Error while creating plan: product #{@simple_plan.product_name} is an ADD_ON product"
|
206
|
+
valid = false
|
207
|
+
elsif @available_standalone_products.include?(@simple_plan.product_name) && @simple_plan.product_category != 'STANDALONE'
|
208
|
+
flash.now[:error] = "Error while creating plan: product #{@simple_plan.product_name} is a STANDALONE product"
|
209
|
+
valid = false
|
210
|
+
end
|
205
211
|
|
206
|
-
|
212
|
+
if valid
|
213
|
+
begin
|
214
|
+
Kaui::Catalog.add_tenant_catalog_simple_plan(@simple_plan, options[:username], nil, comment, options)
|
215
|
+
redirect_to admin_tenant_path(@tenant.id), :notice => 'Catalog plan was successfully added'
|
216
|
+
rescue => e
|
217
|
+
flash.now[:error] = "Error while creating plan: #{as_string(e)}"
|
218
|
+
render :action => :new_catalog
|
219
|
+
end
|
220
|
+
else
|
221
|
+
render :action => :new_catalog
|
222
|
+
end
|
207
223
|
end
|
208
224
|
|
209
225
|
def new_overdue_config
|
@@ -307,6 +323,8 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
307
323
|
|
308
324
|
if plugin_properties.blank?
|
309
325
|
flash[:error] = 'Plugin properties cannot be blank'
|
326
|
+
elsif plugin_name.blank?
|
327
|
+
flash[:error] = 'Plugin name cannot be blank'
|
310
328
|
else
|
311
329
|
plugin_config = Kaui::AdminTenant.format_plugin_config(plugin_key, plugin_type, plugin_properties)
|
312
330
|
|
@@ -314,7 +332,7 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
314
332
|
flash[:notice] = 'Config for plugin was successfully uploaded'
|
315
333
|
end
|
316
334
|
|
317
|
-
redirect_to admin_tenant_path(current_tenant.id)
|
335
|
+
redirect_to admin_tenant_path(current_tenant.id, :active_tab => 'PluginConfig')
|
318
336
|
end
|
319
337
|
|
320
338
|
def remove_allowed_user
|
@@ -406,28 +424,6 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
406
424
|
end
|
407
425
|
end
|
408
426
|
|
409
|
-
def suggest_plugin_name
|
410
|
-
json_response do
|
411
|
-
message = nil
|
412
|
-
entered_plugin_name = params.require(:plugin_name)
|
413
|
-
plugin_repository = view_context.plugin_repository
|
414
|
-
|
415
|
-
found_plugin, weights = fuzzy_match(entered_plugin_name, plugin_repository)
|
416
|
-
|
417
|
-
if weights.size > 0
|
418
|
-
plugin_anchor = view_context.link_to(weights[0][:plugin_name], '#', id: 'suggested',
|
419
|
-
data: {
|
420
|
-
plugin_name: weights[0][:plugin_name],
|
421
|
-
plugin_key: weights[0][:plugin_key],
|
422
|
-
plugin_type: weights[0][:plugin_type],
|
423
|
-
})
|
424
|
-
message = "Similar plugin already installed: '#{plugin_anchor}'" if weights[0][:worth_weight].to_f >= 1.0 && weights[0][:installed]
|
425
|
-
message = "Did you mean '#{plugin_anchor}'?" if weights[0][:worth_weight].to_f < 1.0 || !weights[0][:installed]
|
426
|
-
end
|
427
|
-
{ suggestion: message, plugin: found_plugin }
|
428
|
-
end
|
429
|
-
end
|
430
|
-
|
431
427
|
def switch_tenant
|
432
428
|
tenant = Kaui::Tenant.find_by_kb_tenant_id(params.require(:kb_tenant_id))
|
433
429
|
|
@@ -441,6 +437,29 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
441
437
|
|
442
438
|
private
|
443
439
|
|
440
|
+
# Share code to handle render on error
|
441
|
+
def fetch_state_for_new_catalog_screen(options)
|
442
|
+
@tenant = safely_find_tenant_by_id(params[:id])
|
443
|
+
|
444
|
+
options[:api_key] = @tenant.api_key
|
445
|
+
options[:api_secret] = @tenant.api_secret
|
446
|
+
|
447
|
+
latest_catalog = Kaui::Catalog::get_catalog_json(true, nil, options)
|
448
|
+
@all_plans = latest_catalog ? (latest_catalog.products || []).map(&:plans).flatten.map(&:name) : []
|
449
|
+
|
450
|
+
@ao_mapping = Kaui::Catalog::build_ao_mapping(latest_catalog)
|
451
|
+
|
452
|
+
@available_base_products = latest_catalog && latest_catalog.products ?
|
453
|
+
latest_catalog.products.select { |p| p.type == 'BASE' }.map { |p| p.name } : []
|
454
|
+
@available_ao_products = latest_catalog && latest_catalog.products ?
|
455
|
+
latest_catalog.products.select { |p| p.type == 'ADD_ON' }.map { |p| p.name } : []
|
456
|
+
@available_standalone_products = latest_catalog && latest_catalog.products ?
|
457
|
+
latest_catalog.products.select { |p| p.type == 'STANDALONE' }.map { |p| p.name } : []
|
458
|
+
@product_categories = [:BASE, :ADD_ON, :STANDALONE]
|
459
|
+
@billing_period = [:DAILY, :WEEKLY, :BIWEEKLY, :THIRTY_DAYS, :MONTHLY, :QUARTERLY, :BIANNUAL, :ANNUAL, :BIENNIAL]
|
460
|
+
@time_units = [:UNLIMITED, :DAYS, :WEEKS, :MONTHS, :YEARS]
|
461
|
+
end
|
462
|
+
|
444
463
|
def safely_find_tenant_by_id(tenant_id)
|
445
464
|
tenant = Kaui::Tenant.find_by_id(tenant_id)
|
446
465
|
raise ActiveRecord::RecordNotFound.new('Could not find tenant ' + tenant_id) unless retrieve_tenants_for_current_user.include?(tenant.kb_tenant_id)
|
@@ -473,54 +492,6 @@ class Kaui::AdminTenantsController < Kaui::EngineController
|
|
473
492
|
data.to_s.split(/(?=[A-Z])|(?=[_])|(?=[-])|(?=[ ])/).select {|member| !member.gsub(/[_-]/,'').strip.empty?}.map { |member| member.gsub(/[_-]/,'').strip.downcase }
|
474
493
|
end
|
475
494
|
|
476
|
-
def fuzzy_match(entered_plugin_name, plugin_repository)
|
477
|
-
splitted_entered_plugin_name = split_camel_dash_underscore_space(entered_plugin_name)
|
478
|
-
worth_of_non_words = 0.5 / splitted_entered_plugin_name.size.to_i
|
479
|
-
|
480
|
-
weights = []
|
481
|
-
|
482
|
-
plugin_repository.each do |plugin|
|
483
|
-
return plugin, [] if plugin[:plugin_name] == entered_plugin_name || plugin[:plugin_key] == entered_plugin_name
|
484
|
-
weight = { :plugin_name => plugin[:plugin_name], :plugin_key => plugin[:plugin_key],
|
485
|
-
:plugin_type => plugin[:plugin_type], :installed => plugin[:installed], :worth_weight => 0.0 }
|
486
|
-
|
487
|
-
splitted_plugin_name = split_camel_dash_underscore_space(plugin[:plugin_name])
|
488
|
-
splitted_entered_plugin_name.each do |entered|
|
489
|
-
if splitted_plugin_name.include?(entered)
|
490
|
-
weight[:worth_weight] = weight[:worth_weight] + 1.0
|
491
|
-
end
|
492
|
-
|
493
|
-
splitted_plugin_name.each do |splitted|
|
494
|
-
if entered.chars.all? { |ch| splitted.include?(ch) }
|
495
|
-
weight[:worth_weight] = weight[:worth_weight] + worth_of_non_words
|
496
|
-
break
|
497
|
-
end
|
498
|
-
end
|
499
|
-
|
500
|
-
# perform a plugin key search, if weight is zero
|
501
|
-
next unless weight[:worth_weight] == 0
|
502
|
-
splitted_plugin_key = split_camel_dash_underscore_space(plugin[:plugin_key])
|
503
|
-
|
504
|
-
if splitted_plugin_key.include?(entered)
|
505
|
-
weight[:worth_weight] = weight[:worth_weight] + 1.0
|
506
|
-
end
|
507
|
-
|
508
|
-
splitted_plugin_key.each do |splitted|
|
509
|
-
if entered.chars.all? { |ch| splitted.include?(ch) }
|
510
|
-
weight[:worth_weight] = weight[:worth_weight] + worth_of_non_words
|
511
|
-
break
|
512
|
-
end
|
513
|
-
end
|
514
|
-
end
|
515
|
-
|
516
|
-
weights << weight if weight[:worth_weight] > 0
|
517
|
-
|
518
|
-
end
|
519
|
-
|
520
|
-
weights.sort! { |a,b| b[:worth_weight] <=> a[:worth_weight] } if weights.size > 1
|
521
|
-
return nil, weights
|
522
|
-
end
|
523
|
-
|
524
495
|
def fetch_catalog_xml(tenant_id, effective_date)
|
525
496
|
current_tenant = safely_find_tenant_by_id(tenant_id)
|
526
497
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class Kaui::AuditLogsController < Kaui::EngineController
|
2
|
-
OBJECT_WITH_HISTORY = %w[ACCOUNT ACCOUNT_EMAIL CUSTOM_FIELD PAYMENT_ATTEMPT PAYMENT PAYMENT_METHOD TRANSACTION TAG TAG_DEFINITION]
|
2
|
+
OBJECT_WITH_HISTORY = %w[ACCOUNT ACCOUNT_EMAIL BLOCKING_STATES BUNDLE CUSTOM_FIELD INVOICE INVOICE_ITEM PAYMENT_ATTEMPT PAYMENT PAYMENT_METHOD SUBSCRIPTION SUBSCRIPTION_EVENT TRANSACTION TAG TAG_DEFINITION]
|
3
3
|
|
4
4
|
def index
|
5
5
|
cached_options_for_klient = options_for_klient
|
@@ -57,8 +57,25 @@ class Kaui::AuditLogsController < Kaui::EngineController
|
|
57
57
|
elsif object_type == 'ACCOUNT_EMAIL'
|
58
58
|
account = Kaui::Account::find_by_id_or_key(account_id, false, false, cached_options_for_klient)
|
59
59
|
audit_logs_with_history = account.email_audit_logs_with_history(object_id, cached_options_for_klient)
|
60
|
+
elsif object_type == 'BLOCKING_STATES'
|
61
|
+
audit_logs_with_history = Kaui::Account::blocking_state_audit_logs_with_history(object_id, cached_options_for_klient)
|
62
|
+
elsif object_type == 'BUNDLE'
|
63
|
+
bundle = Kaui::Bundle::find_by_id(object_id, cached_options_for_klient)
|
64
|
+
audit_logs_with_history = bundle.audit_logs_with_history(cached_options_for_klient)
|
60
65
|
elsif object_type == 'CUSTOM_FIELD'
|
61
66
|
audit_logs_with_history = Kaui::CustomField.new({:custom_field_id => object_id}).audit_logs_with_history(cached_options_for_klient)
|
67
|
+
elsif object_type == 'INVOICE'
|
68
|
+
invoice = Kaui::Invoice::find_by_id(object_id, false, "NONE", cached_options_for_klient)
|
69
|
+
audit_logs_with_history = invoice.audit_logs_with_history(cached_options_for_klient)
|
70
|
+
elsif object_type == 'INVOICE_ITEM'
|
71
|
+
invoice_item = Kaui::InvoiceItem.new
|
72
|
+
invoice_item.invoice_item_id = object_id
|
73
|
+
audit_logs_with_history = invoice_item.audit_logs_with_history(cached_options_for_klient)
|
74
|
+
=begin See https://github.com/killbill/killbill/issues/1104
|
75
|
+
elsif object_type == 'INVOICE_PAYMENT'
|
76
|
+
invoice_payment = Kaui::InvoicePayment::find_by_id(object_id, false, false, cached_options_for_klient)
|
77
|
+
=end
|
78
|
+
audit_logs_with_history = invoice_payment.audit_logs_with_history(cached_options_for_klient)
|
62
79
|
elsif object_type == 'PAYMENT_ATTEMPT'
|
63
80
|
audit_logs_with_history = Kaui::Payment::attempt_audit_logs_with_history(object_id, cached_options_for_klient)
|
64
81
|
elsif object_type == 'PAYMENT'
|
@@ -67,6 +84,11 @@ class Kaui::AuditLogsController < Kaui::EngineController
|
|
67
84
|
elsif object_type == 'PAYMENT_METHOD'
|
68
85
|
payment_method = Kaui::PaymentMethod::find_by_id(object_id, false, cached_options_for_klient)
|
69
86
|
audit_logs_with_history = payment_method.audit_logs_with_history(cached_options_for_klient)
|
87
|
+
elsif object_type == 'SUBSCRIPTION'
|
88
|
+
subscription = Kaui::Subscription::find_by_id(object_id, cached_options_for_klient)
|
89
|
+
audit_logs_with_history = subscription.audit_logs_with_history(cached_options_for_klient)
|
90
|
+
elsif object_type == 'SUBSCRIPTION_EVENT'
|
91
|
+
audit_logs_with_history = Kaui::Subscription::event_audit_logs_with_history(object_id, cached_options_for_klient)
|
70
92
|
elsif object_type == 'TRANSACTION'
|
71
93
|
audit_logs_with_history = Kaui::Transaction::new({:transaction_id => object_id}).audit_logs_with_history(cached_options_for_klient)
|
72
94
|
elsif object_type == 'TAG'
|
@@ -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(invoice_id,
|
8
|
+
@invoice = Kaui::Invoice.find_by_id(invoice_id, '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(invoice_id,
|
8
|
+
@invoice = Kaui::Invoice.find_by_id(invoice_id, 'NONE', options_for_klient)
|
9
9
|
amount ||= @invoice.balance
|
10
10
|
currency = @invoice.currency
|
11
11
|
else
|
@@ -13,7 +13,7 @@ class Kaui::CreditsController < Kaui::EngineController
|
|
13
13
|
currency = params[:currency] || 'USD'
|
14
14
|
end
|
15
15
|
|
16
|
-
@credit = Kaui::Credit.new(:account_id => params.require(:account_id), :invoice_id => invoice_id, :
|
16
|
+
@credit = Kaui::Credit.new(:account_id => params.require(:account_id), :invoice_id => invoice_id, :amount => amount, :currency => currency)
|
17
17
|
end
|
18
18
|
|
19
19
|
def create
|
@@ -23,13 +23,13 @@ class Kaui::CreditsController < Kaui::EngineController
|
|
23
23
|
# No need to show the newly created invoice for account level credits
|
24
24
|
should_redirect_to_invoice = credit.invoice_id.present?
|
25
25
|
|
26
|
-
|
26
|
+
credits = credit.create(true, current_user.kb_username, params[:reason], params[:comment], options_for_klient)
|
27
27
|
flash[:notice] = 'Credit was successfully created'
|
28
28
|
|
29
29
|
if should_redirect_to_invoice
|
30
|
-
redirect_to kaui_engine.account_invoice_path(
|
30
|
+
redirect_to kaui_engine.account_invoice_path(credits[0].account_id, credits[0].invoice_id)
|
31
31
|
else
|
32
|
-
redirect_to kaui_engine.account_path(
|
32
|
+
redirect_to kaui_engine.account_path(credits[0].account_id)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|