kaui 0.16.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/app/assets/javascripts/application.js +1 -1
- data/app/assets/javascripts/kaui/kaui.js +78 -1
- data/app/assets/stylesheets/bootstrap_and_overrides.css.less +5 -0
- data/app/assets/stylesheets/kaui/account.less +20 -0
- data/app/assets/stylesheets/kaui/audit.less +38 -0
- data/app/assets/stylesheets/kaui/common.less +103 -0
- data/app/assets/stylesheets/kaui/datatable.less +19 -0
- data/app/assets/stylesheets/kaui/kaui.less +3 -1
- data/app/assets/stylesheets/kaui/subscription.less +15 -0
- data/app/assets/stylesheets/kaui/tags.less +30 -1
- data/app/controllers/kaui/account_custom_fields_controller.rb +24 -0
- data/app/controllers/kaui/account_tags_controller.rb +21 -0
- data/app/controllers/kaui/accounts_controller.rb +43 -16
- data/app/controllers/kaui/admin_tenants_controller.rb +152 -11
- data/app/controllers/kaui/audit_logs_controller.rb +93 -0
- data/app/controllers/kaui/bundles_controller.rb +15 -3
- data/app/controllers/kaui/custom_fields_controller.rb +2 -0
- data/app/controllers/kaui/engine_controller_util.rb +14 -0
- data/app/controllers/kaui/invoice_items_controller.rb +17 -0
- data/app/controllers/kaui/invoices_controller.rb +22 -5
- data/app/controllers/kaui/payment_methods_controller.rb +10 -9
- data/app/controllers/kaui/subscriptions_controller.rb +54 -7
- data/app/controllers/kaui/tag_definitions_controller.rb +1 -0
- data/app/helpers/kaui/account_helper.rb +28 -0
- data/app/helpers/kaui/object_helper.rb +4 -0
- data/app/helpers/kaui/permissions_helper.rb +15 -0
- data/app/helpers/kaui/plugin_helper.rb +58 -0
- data/app/helpers/kaui/subscription_helper.rb +9 -7
- data/app/models/kaui/admin_tenant.rb +20 -6
- data/app/models/kaui/catalog.rb +4 -4
- data/app/models/kaui/tag.rb +1 -1
- data/app/models/kaui/tag_definition.rb +1 -1
- data/app/views/kaui/account_custom_fields/index.html.erb +35 -0
- data/app/views/kaui/account_tags/index.html.erb +35 -0
- data/app/views/kaui/accounts/_account_info.html.erb +5 -0
- data/app/views/kaui/accounts/_billing_info.html.erb +1 -1
- data/app/views/kaui/accounts/_close_account_modal.html.erb +98 -0
- data/app/views/kaui/accounts/index.html.erb +0 -7
- data/app/views/kaui/accounts/show.html.erb +4 -0
- data/app/views/kaui/admin_tenants/_add_allowed_user_modal.html.erb +64 -0
- data/app/views/kaui/admin_tenants/_form_plugin_config.erb +257 -151
- data/app/views/kaui/admin_tenants/_show_catalog_simple.erb +133 -48
- data/app/views/kaui/admin_tenants/_show_catalog_xml.erb +3 -2
- data/app/views/kaui/admin_tenants/show.html.erb +6 -1
- data/app/views/kaui/audit_logs/_show_history_modal.html.erb +177 -0
- data/app/views/kaui/audit_logs/index.html.erb +52 -0
- data/app/views/kaui/bundle_tags/_form_bar.html.erb +4 -2
- data/app/views/kaui/bundles/index.html.erb +21 -14
- data/app/views/kaui/chargebacks/_form.html.erb +1 -9
- data/app/views/kaui/charges/_form.html.erb +2 -10
- data/app/views/kaui/credits/_form.html.erb +1 -9
- data/app/views/kaui/custom_fields/_form.html.erb +1 -1
- data/app/views/kaui/custom_fields/_list_bar.html.erb +1 -1
- data/app/views/kaui/invoices/_invoice_table.html.erb +30 -2
- data/app/views/kaui/layouts/kaui_account_navbar.html.erb +7 -0
- data/app/views/kaui/layouts/kaui_flash.html.erb +13 -2
- data/app/views/kaui/payment_methods/_new_creditcard_payment_method.html.erb +11 -11
- data/app/views/kaui/payment_methods/_plugin_properties.html.erb +1 -1
- data/app/views/kaui/payments/_form.html.erb +1 -9
- data/app/views/kaui/refunds/_form.html.erb +4 -6
- data/app/views/kaui/subscriptions/_cancel_by_date_modal.html.erb +62 -0
- data/app/views/kaui/subscriptions/_form.html.erb +7 -13
- data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +50 -11
- data/app/views/kaui/subscriptions/new.html.erb +3 -1
- data/app/views/kaui/tag_definitions/_form.html.erb +139 -0
- data/app/views/kaui/tags/index.html.erb +1 -1
- data/app/views/kaui/transactions/_control_plugin_names.html.erb +1 -1
- data/config/routes.rb +18 -2
- data/db/migrate/20130812155313_devise_create_kaui_users.rb +9 -7
- data/db/migrate/20150109214021_create_kaui_tenants.rb +8 -6
- data/db/migrate/20150112232813_create_kaui_allowed_users.rb +15 -11
- data/lib/kaui/engine.rb +1 -0
- data/lib/kaui/version.rb +1 -1
- data/test/dummy/config/database.yml +6 -1
- data/test/fixtures/SpyCarAdvanced.xml +824 -0
- data/test/functional/kaui/account_children_controller_test.rb +1 -1
- data/test/functional/kaui/account_custom_fields_controller_test.rb +29 -0
- data/test/functional/kaui/account_tags_controller_test.rb +19 -0
- data/test/functional/kaui/accounts_controller_test.rb +23 -6
- data/test/functional/kaui/admin_controller_test.rb +2 -2
- data/test/functional/kaui/admin_tenants_controller_test.rb +76 -5
- data/test/functional/kaui/audit_logs_controller_test.rb +71 -0
- data/test/functional/kaui/bundles_controller_test.rb +2 -1
- data/test/functional/kaui/payments_controller_test.rb +1 -1
- data/test/functional/kaui/subscriptions_controller_test.rb +1 -2
- data/test/functional/kaui/tag_definitions_controller_test.rb +2 -1
- data/test/killbill_test_helper.rb +5 -2
- data/test/unit/kaui/admin_tenant_test.rb +100 -0
- data/test/unit/kaui/money_helper_test.rb +1 -1
- metadata +58 -13
- data/app/assets/javascripts/kaui/validation.js +0 -21
- data/test/dummy/log/test.log +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e87e62224a7eee3e9ee134db6f88824cbe6efdbf
|
4
|
+
data.tar.gz: 1f762a4df672efbaee3182d0eca916405cf057cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38bdfc7f29ad2711fec6a566ac962cbb2d0ecdadf60754522a0c786f4446433c71191dbabb40f9a80f8220da7c07da694e9f10077f2d6248030c1ab70d08b4d6
|
7
|
+
data.tar.gz: d5fbd8de69aeeef43f4690e3ad84dff02c89dbe7215bb95b87dbd451915f88f5bf73a4a25499b186376b089b0afad5fc1c80e738fc89e24610102ecb47d61199
|
data/README.md
CHANGED
@@ -11,12 +11,12 @@ 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
|
-
|
14
|
+
| 1.x.y | 0.19.z |
|
15
15
|
|
16
16
|
Dependencies
|
17
17
|
------------
|
18
18
|
|
19
|
-
Ruby 2.
|
19
|
+
Ruby 2.4.2+ or JRuby 9.1.14.0+ required.
|
20
20
|
|
21
21
|
Running Kaui locally
|
22
22
|
---------------------
|
@@ -183,4 +183,81 @@ jQuery(document).ready(function ($) {
|
|
183
183
|
}
|
184
184
|
}
|
185
185
|
|
186
|
-
|
186
|
+
// Restrict numeric input for a text field
|
187
|
+
// Using "constraint validation API" to restrict input
|
188
|
+
$("input[type=number]").keydown(function(event) {
|
189
|
+
$(this).data('oldData', $(this).val());
|
190
|
+
}).keyup(function(event) {
|
191
|
+
if (event.currentTarget.validity.badInput) {
|
192
|
+
$(this).val($(this).data('oldData'));
|
193
|
+
}
|
194
|
+
});
|
195
|
+
|
196
|
+
// this will register a global ajax error for all jquery ajax requests (not including DataTable)
|
197
|
+
$( document ).ajaxError(function( event, jqxhr, settings, thrownError ) {
|
198
|
+
if (jqxhr.status == 0) {
|
199
|
+
return;
|
200
|
+
}
|
201
|
+
|
202
|
+
var message = 'Request Status: ' + jqxhr.status + ' Status Text: ' + jqxhr.statusText + ' ' + jqxhr.responseText;
|
203
|
+
|
204
|
+
if (jqxhr.status == 200) {
|
205
|
+
message = thrownError.message == undefined ? thrownError : thrownError.message;
|
206
|
+
}
|
207
|
+
ajaxAlert(message);
|
208
|
+
});
|
209
|
+
|
210
|
+
// this will prevent DataTable to show an alert message box when an error occurs
|
211
|
+
$.fn.dataTable.ext.errMode = 'none';
|
212
|
+
// this will try to register a DataTable error event to all tables, and if an error occurs will display the error on screen
|
213
|
+
$( document ).find(".table").on('error.dt', function ( e, settings, techNote, message ) {
|
214
|
+
ajaxAlert('An error has been reported by DataTables: ' + message);
|
215
|
+
})
|
216
|
+
|
217
|
+
});
|
218
|
+
|
219
|
+
// global function used to show a error message that occurs on a Ajax call
|
220
|
+
function ajaxAlert(message) {
|
221
|
+
// do not show ajax alert if there is already an server alert
|
222
|
+
var serverAlertStatus = $(".server-alert").css("display");
|
223
|
+
if (serverAlertStatus != undefined && serverAlertStatus != "none") {
|
224
|
+
return;
|
225
|
+
}
|
226
|
+
|
227
|
+
var messageBox = $("#ajaxAlert");
|
228
|
+
messageBox.find("#ajaxErrorMessage").text(message);
|
229
|
+
messageBox.show();
|
230
|
+
messageBox.find("button").click(function(){
|
231
|
+
ajaxCloseAlert(messageBox);
|
232
|
+
});
|
233
|
+
}
|
234
|
+
|
235
|
+
function ajaxCloseAlert(messageBox) {
|
236
|
+
var messageBox = messageBox || $("#ajaxAlert");
|
237
|
+
messageBox.find("#ajaxErrorMessage").text('');
|
238
|
+
messageBox.hide();
|
239
|
+
}
|
240
|
+
|
241
|
+
// global helper function to validate if a variable is null or empty or undefined
|
242
|
+
function isNullOrUndefined(value) {
|
243
|
+
if (value == undefined || value == null) {
|
244
|
+
return true;
|
245
|
+
}
|
246
|
+
return false;
|
247
|
+
}
|
248
|
+
|
249
|
+
function isBlank(value) {
|
250
|
+
if (isNullOrUndefined(value)) {
|
251
|
+
return true;
|
252
|
+
}
|
253
|
+
|
254
|
+
if (jQuery.type(value) === "string" && value.trim().length == 0) {
|
255
|
+
return true;
|
256
|
+
} else if (jQuery.type(value) === "array" && value.length == 0) {
|
257
|
+
return true;
|
258
|
+
} else if (jQuery.type(value) === "object" && jQuery.isEmptyObject(value)) {
|
259
|
+
return true;
|
260
|
+
} else {
|
261
|
+
return false;
|
262
|
+
}
|
263
|
+
}
|
@@ -17,4 +17,24 @@ h1 span.account-child-label{
|
|
17
17
|
background-color: transparent;
|
18
18
|
color: #2a6496;
|
19
19
|
|
20
|
+
}
|
21
|
+
|
22
|
+
.title-nav-area {
|
23
|
+
.container {
|
24
|
+
p {
|
25
|
+
padding-left: 20px;
|
26
|
+
padding-right: 20px;
|
27
|
+
}
|
28
|
+
|
29
|
+
a {
|
30
|
+
max-width: 125px;
|
31
|
+
min-width: 90px;
|
32
|
+
padding: 12px 12px;
|
33
|
+
text-align: center;
|
34
|
+
}
|
35
|
+
|
36
|
+
span.label-danger {
|
37
|
+
margin: 8px;
|
38
|
+
}
|
39
|
+
}
|
20
40
|
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#showHistoryModal
|
2
|
+
{
|
3
|
+
#templatesPlaceHolder
|
4
|
+
{
|
5
|
+
display: flex;
|
6
|
+
|
7
|
+
.panel {
|
8
|
+
margin-left: 5px;
|
9
|
+
|
10
|
+
.panel-heading {
|
11
|
+
white-space: nowrap;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
.list-group-item {
|
16
|
+
padding: 5px;
|
17
|
+
min-height: 32px;
|
18
|
+
overflow-x: hidden;
|
19
|
+
white-space: nowrap;
|
20
|
+
}
|
21
|
+
|
22
|
+
#templateFieldsPlaceHolder {
|
23
|
+
.list-group-item {
|
24
|
+
span {
|
25
|
+
text-transform: capitalize;
|
26
|
+
font-weight: bold;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
#templatePlaceHolder
|
32
|
+
{
|
33
|
+
display: flex;
|
34
|
+
overflow-x: auto;
|
35
|
+
}
|
36
|
+
|
37
|
+
}
|
38
|
+
}
|
@@ -530,3 +530,106 @@ hr.breathe {
|
|
530
530
|
margin-top: 45px;
|
531
531
|
margin-bottom: 45px;
|
532
532
|
}
|
533
|
+
|
534
|
+
form[id^="new_tag_definition"] {
|
535
|
+
div:first-of-type {
|
536
|
+
margin-bottom: 0;
|
537
|
+
}
|
538
|
+
|
539
|
+
#object_types {
|
540
|
+
div {
|
541
|
+
margin-bottom: 15px;
|
542
|
+
|
543
|
+
.tag-definition-add-link {
|
544
|
+
padding-right: 0;
|
545
|
+
}
|
546
|
+
|
547
|
+
.tag-definition-select {
|
548
|
+
display: inline-block;
|
549
|
+
width: calc(~"100% - 25px");
|
550
|
+
}
|
551
|
+
}
|
552
|
+
}
|
553
|
+
}
|
554
|
+
|
555
|
+
/* The switch - the box around the slider */
|
556
|
+
.switch {
|
557
|
+
position: relative;
|
558
|
+
display: inline-block;
|
559
|
+
width: 36px;
|
560
|
+
height: 20px;
|
561
|
+
|
562
|
+
|
563
|
+
/* Hide default HTML checkbox */
|
564
|
+
input {display:none;}
|
565
|
+
|
566
|
+
/* The slider */
|
567
|
+
.slider {
|
568
|
+
position: absolute;
|
569
|
+
cursor: pointer;
|
570
|
+
top: 0;
|
571
|
+
left: 0;
|
572
|
+
right: 0;
|
573
|
+
bottom: 0;
|
574
|
+
background-color: #ccc;
|
575
|
+
-webkit-transition: .4s;
|
576
|
+
transition: .4s;
|
577
|
+
}
|
578
|
+
|
579
|
+
.slider:before {
|
580
|
+
position: absolute;
|
581
|
+
content: "";
|
582
|
+
height: 16px;
|
583
|
+
width: 16px;
|
584
|
+
left: 2px;
|
585
|
+
bottom: 2px;
|
586
|
+
background-color: white;
|
587
|
+
-webkit-transition: .4s;
|
588
|
+
transition: .4s;
|
589
|
+
}
|
590
|
+
|
591
|
+
input:checked + .slider {
|
592
|
+
background-color: #00919d;
|
593
|
+
}
|
594
|
+
|
595
|
+
input:focus + .slider {
|
596
|
+
box-shadow: 0 0 1px #2196F3;
|
597
|
+
}
|
598
|
+
}
|
599
|
+
|
600
|
+
input:checked + .slider:before {
|
601
|
+
-webkit-transform: translateX(16px);
|
602
|
+
-ms-transform: translateX(16px);
|
603
|
+
transform: translateX(16px);
|
604
|
+
}
|
605
|
+
|
606
|
+
/* Rounded sliders */
|
607
|
+
.slider.round {
|
608
|
+
border-radius: 26px;
|
609
|
+
}
|
610
|
+
|
611
|
+
.slider.round:before {
|
612
|
+
border-radius: 50%;
|
613
|
+
}
|
614
|
+
|
615
|
+
.ui-helper-hidden-accessible {
|
616
|
+
display: none;
|
617
|
+
}
|
618
|
+
|
619
|
+
.autocomplete-allowed-user, .autocomplete-override {
|
620
|
+
list-style: none;
|
621
|
+
padding-left: 10px;
|
622
|
+
}
|
623
|
+
|
624
|
+
.plugin-suggestion{
|
625
|
+
white-space: nowrap;
|
626
|
+
}
|
627
|
+
|
628
|
+
.toggle-container{
|
629
|
+
padding-right: 0;
|
630
|
+
width: 55px;
|
631
|
+
}
|
632
|
+
|
633
|
+
.toggle-label {
|
634
|
+
text-align: left !important;
|
635
|
+
}
|
@@ -23,6 +23,25 @@
|
|
23
23
|
}
|
24
24
|
}
|
25
25
|
|
26
|
+
table.table-colored-rows {
|
27
|
+
tr.insert {
|
28
|
+
background-color: #dff0d8;
|
29
|
+
}
|
30
|
+
tr.update {
|
31
|
+
background-color: #fcf8e3;
|
32
|
+
}
|
33
|
+
tr.delete {
|
34
|
+
background-color: #f2dede;
|
35
|
+
}
|
36
|
+
|
37
|
+
th, td {
|
38
|
+
|
39
|
+
&:first-of-type {
|
40
|
+
padding-left: 20px;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
26
45
|
tr.disabled {
|
27
46
|
background-color: #f5f5f5;
|
28
47
|
}
|
@@ -2,4 +2,19 @@ table tr.expired {
|
|
2
2
|
td {
|
3
3
|
color: #cccccc;
|
4
4
|
}
|
5
|
+
}
|
6
|
+
|
7
|
+
#cancel_subscription_by_date_modal {
|
8
|
+
.modal-footer {
|
9
|
+
text-align: left;
|
10
|
+
padding-bottom: 0;
|
11
|
+
|
12
|
+
.alert {
|
13
|
+
margin-bottom: 0;
|
14
|
+
|
15
|
+
.label-default {
|
16
|
+
color: white;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
5
20
|
}
|
@@ -169,7 +169,36 @@
|
|
169
169
|
position: relative;
|
170
170
|
}
|
171
171
|
.tag-select-box {
|
172
|
-
|
172
|
+
word-break: keep-all;
|
173
|
+
white-space: nowrap;
|
173
174
|
}
|
174
175
|
}
|
175
176
|
}
|
177
|
+
|
178
|
+
.inline-row-tag-bar{
|
179
|
+
padding-left: 10px !important;
|
180
|
+
|
181
|
+
.tag-bar {
|
182
|
+
|
183
|
+
.tag-select {
|
184
|
+
span {
|
185
|
+
padding: 5px;
|
186
|
+
border-right: none;
|
187
|
+
|
188
|
+
i {
|
189
|
+
margin: 0 3px;
|
190
|
+
font-size: 12px;
|
191
|
+
|
192
|
+
&.fa-tag {
|
193
|
+
font-size: 12px;
|
194
|
+
}
|
195
|
+
}
|
196
|
+
}
|
197
|
+
}
|
198
|
+
.tag-select-box {
|
199
|
+
label {
|
200
|
+
white-space: nowrap;
|
201
|
+
}
|
202
|
+
}
|
203
|
+
}
|
204
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Kaui::AccountCustomFieldsController < Kaui::EngineController
|
2
|
+
|
3
|
+
def index
|
4
|
+
cached_options_for_klient = options_for_klient
|
5
|
+
account = Kaui::Account::find_by_id_or_key(params.require(:account_id), true, true, cached_options_for_klient)
|
6
|
+
custom_fields = account.all_custom_fields(nil, 'NONE', cached_options_for_klient)
|
7
|
+
|
8
|
+
|
9
|
+
formatter = lambda do |custom_field|
|
10
|
+
url_for_object = view_context.url_for_object(custom_field.object_id, custom_field.object_type)
|
11
|
+
[
|
12
|
+
url_for_object ? view_context.link_to(custom_field.object_id, url_for_object) : custom_field.object_id,
|
13
|
+
custom_field.object_type,
|
14
|
+
custom_field.name,
|
15
|
+
custom_field.value
|
16
|
+
]
|
17
|
+
end
|
18
|
+
@custom_fields_json = []
|
19
|
+
custom_fields.each { |page| @custom_fields_json << formatter.call(page) }
|
20
|
+
|
21
|
+
@custom_fields_json = @custom_fields_json.to_json
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -1,5 +1,26 @@
|
|
1
1
|
class Kaui::AccountTagsController < Kaui::EngineController
|
2
2
|
|
3
|
+
def index
|
4
|
+
cached_options_for_klient = options_for_klient
|
5
|
+
account = Kaui::Account::find_by_id_or_key(params.require(:account_id), true, true, cached_options_for_klient)
|
6
|
+
tags = account.all_tags(nil, false, 'NONE', cached_options_for_klient)
|
7
|
+
|
8
|
+
|
9
|
+
formatter = lambda do |tag|
|
10
|
+
url_for_object = view_context.url_for_object(tag.object_id, tag.object_type)
|
11
|
+
[
|
12
|
+
tag.tag_id,
|
13
|
+
url_for_object ? view_context.link_to(tag.object_id, url_for_object) : tag.object_id,
|
14
|
+
tag.object_type,
|
15
|
+
tag.tag_definition_name
|
16
|
+
]
|
17
|
+
end
|
18
|
+
@tags_json = []
|
19
|
+
tags.each { |page| @tags_json << formatter.call(page) }
|
20
|
+
|
21
|
+
@tags_json = @tags_json.to_json
|
22
|
+
end
|
23
|
+
|
3
24
|
def edit
|
4
25
|
@account_id = params.require(:account_id)
|
5
26
|
|
@@ -38,8 +38,13 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
38
38
|
end
|
39
39
|
|
40
40
|
formatter = lambda do |account|
|
41
|
+
child_label = ''
|
42
|
+
unless account.parent_account_id.nil?
|
43
|
+
child_label = account.parent_account_id.nil? ? '' : view_context.content_tag(:span, 'Child', class: ['label', 'label-info', 'account-child-label'])
|
44
|
+
end
|
45
|
+
|
41
46
|
[
|
42
|
-
|
47
|
+
child_label,
|
43
48
|
view_context.link_to(account.name || '(not set)', view_context.url_for(:action => :show, :account_id => account.account_id)),
|
44
49
|
view_context.truncate_uuid(account.account_id),
|
45
50
|
account.external_key,
|
@@ -125,7 +130,7 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
125
130
|
@payment_methods = wait(fetch_payment_methods_with_details).map { |pm_f| pm_f.execute }.map { |pm_f| wait(pm_f) }.reject { |pm| pm.nil? }
|
126
131
|
@available_tags = wait(fetch_available_tags)
|
127
132
|
@children = wait(fetch_children)
|
128
|
-
@account_parent =
|
133
|
+
@account_parent = @account.parent_account_id.nil? ? nil : wait(fetch_parent)
|
129
134
|
@email_notification_configuration = wait(fetch_email_notification_configuration) if is_email_notifications_plugin_available
|
130
135
|
|
131
136
|
@last_transaction_by_payment_method_id = {}
|
@@ -142,6 +147,27 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
142
147
|
params.permit!
|
143
148
|
end
|
144
149
|
|
150
|
+
def destroy
|
151
|
+
account_id = params.require(:account_id)
|
152
|
+
options = params[:options] || []
|
153
|
+
|
154
|
+
cancel_subscriptions = options.include?('cancel_all_subscriptions')
|
155
|
+
writeoff_unpaid_invoices = options.include?('writeoff_unpaid_invoices')
|
156
|
+
item_adjust_unpaid_invoices = options.include?('item_adjust_unpaid_invoices')
|
157
|
+
cached_options_for_klient = options_for_klient
|
158
|
+
|
159
|
+
begin
|
160
|
+
@account = Kaui::Account::find_by_id_or_key(account_id, false, false, cached_options_for_klient)
|
161
|
+
@account.close(cancel_subscriptions, writeoff_unpaid_invoices, item_adjust_unpaid_invoices, current_user.kb_username, nil, nil, cached_options_for_klient );
|
162
|
+
|
163
|
+
flash[:notice] = "Account #{account_id} successfully closed"
|
164
|
+
rescue => e
|
165
|
+
flash[:error] = "Error while closing account: #{as_string(e)}"
|
166
|
+
end
|
167
|
+
|
168
|
+
redirect_to account_path(account_id)
|
169
|
+
end
|
170
|
+
|
145
171
|
def trigger_invoice
|
146
172
|
account_id = params.require(:account_id)
|
147
173
|
target_date = params[:target_date].presence
|
@@ -171,8 +197,10 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
171
197
|
|
172
198
|
# Fetched asynchronously, as it takes time. This also helps with enforcing permissions.
|
173
199
|
def next_invoice_date
|
174
|
-
|
175
|
-
|
200
|
+
json_response do
|
201
|
+
next_invoice = Kaui::Invoice.trigger_invoice_dry_run(params.require(:account_id), nil, true, options_for_klient)
|
202
|
+
next_invoice ? next_invoice.target_date.to_json : nil
|
203
|
+
end
|
176
204
|
end
|
177
205
|
|
178
206
|
def edit
|
@@ -211,15 +239,16 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
211
239
|
end
|
212
240
|
|
213
241
|
def validate_external_key
|
214
|
-
|
242
|
+
json_response do
|
243
|
+
external_key = params.require(:external_key)
|
215
244
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
245
|
+
begin
|
246
|
+
account = Kaui::Account::find_by_external_key(external_key, false, false, options_for_klient)
|
247
|
+
rescue KillBillClient::API::NotFound
|
248
|
+
account = nil
|
249
|
+
end
|
250
|
+
{:is_found => !account.nil?}
|
220
251
|
end
|
221
|
-
render json: {:is_found => !account.nil?}
|
222
|
-
|
223
252
|
end
|
224
253
|
|
225
254
|
def link_to_parent
|
@@ -283,10 +312,8 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
283
312
|
end
|
284
313
|
|
285
314
|
def events_to_consider
|
286
|
-
|
287
|
-
|
288
|
-
respond_to do |format|
|
289
|
-
format.json { render json: { data: data} }
|
315
|
+
json_response do
|
316
|
+
{ data: Kenui::EmailNotificationService.get_events_to_consider(options_for_klient) }
|
290
317
|
end
|
291
318
|
end
|
292
319
|
|
@@ -297,7 +324,7 @@ class Kaui::AccountsController < Kaui::EngineController
|
|
297
324
|
|
298
325
|
is_available = Kenui::EmailNotificationService.email_notification_plugin_available?(options_for_klient).first
|
299
326
|
return is_available, is_available ? nil : error_message
|
300
|
-
rescue
|
327
|
+
rescue
|
301
328
|
return false, error_message
|
302
329
|
end
|
303
330
|
|