kaui 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c998eb4ff14442f28a18da7cab14072cc7d19dfc
4
- data.tar.gz: 660dbac2ba54d6d0c853b63c697587e486a5c2ed
3
+ metadata.gz: 062f8cf3943a8a8cae8f80490cac4c2545ed68bd
4
+ data.tar.gz: 398c6df309bdd8bf44eaddcac3273e9cfc394d17
5
5
  SHA512:
6
- metadata.gz: 714a6e0da369b82570551cd082b7fd9b8d62ab18e906756a4194e31dfa5f90d47dd5b8624f5ca070915e45308d31839f451cca5a343895642d50ba47c89d1716
7
- data.tar.gz: bc72e0c1b8febf3d413d1191e48431a2d330aff546e84493953e0697b043258365973d3fd5d0ea6dddab244b4c9a5d4cc6a92d9ce9e60155cf9663f7acc92b60
6
+ metadata.gz: df121d5c0caa28f819c2678c7abf61a4ed161ee16dc6f047f7e6ca0279348f682de5dd8ce57e6bd31ad70f164892a44d911f22da2eaaa3689c4bf06dd560b302
7
+ data.tar.gz: 405d0913456d27232ee1518fb1637efc35423f62f5a948e3312e817c2547fe8f04f38029b5e8d4785522480ef261853640bddf728143e3f84a45408ff26b1219
data/README.md CHANGED
@@ -22,35 +22,15 @@ Ruby 2.4.2+ or JRuby 9.1.14.0+ required.
22
22
  Running Kaui locally
23
23
  ---------------------
24
24
 
25
+ Note: use Ruby, not JRuby, for running the app locally.
26
+
25
27
  You can run Kaui locally by using the test/dummy app provided:
26
28
 
27
29
  ```
28
- export RAILS_ENV=development
29
- export DATABASE_URL=mysql://root:killbill@<MySQL Host IP>/killbill
30
+ export RAILS_ENV=development DB_HOST=127.0.0.1 DB_USER=root DB_PASSWORD=root DB_PORT=3306
30
31
  bundle install
31
- rails db:migrate
32
- rails s
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
32
+ bundle exec rails db:migrate
33
+ bundle exec rails s
54
34
  ```
55
35
 
56
36
  The Kill Bill URL can be configured through the `KILLBILL_URL` environment variable, e.g.
@@ -114,7 +94,19 @@ Alternatively, you can run the `kaui` script under `bin` by setting your loadpat
114
94
  Releases
115
95
  ========
116
96
 
117
- The releases are done using Jruby and require the following property `export JRUBY_OPTS='--2.0 -J-Xmx1024m'`
97
+ To trigger a release, run (update `patch` as needed):
98
+
99
+ ```
100
+ bundle exec gem bump -c -p -t -v patch
101
+ ```
102
+
103
+ This will:
104
+
105
+ * Update the `version.rb` file
106
+ * Commit the changes
107
+ * Create the new tag and push the changes
108
+
109
+ GitHub Actions will automatically push the new gem to Rubygems.
118
110
 
119
111
  Multi-Tenancy
120
112
  =============
@@ -205,7 +205,7 @@ jQuery(document).ready(function ($) {
205
205
  return;
206
206
  }
207
207
 
208
- var message = 'Request Status: ' + jqxhr.status + ', Status Text: ' + jqxhr.statusText + ': ' + getMessageFromResponse(jqxhr);
208
+ var message = 'Request error: ' + getMessageFromResponse(jqxhr);
209
209
 
210
210
  if (jqxhr.status == 200) {
211
211
  message = thrownError.message == undefined ? thrownError : thrownError.message;
@@ -74,8 +74,8 @@ class Kaui::AuditLogsController < Kaui::EngineController
74
74
  =begin See https://github.com/killbill/killbill/issues/1104
75
75
  elsif object_type == 'INVOICE_PAYMENT'
76
76
  invoice_payment = Kaui::InvoicePayment::find_by_id(object_id, false, false, cached_options_for_klient)
77
- =end
78
77
  audit_logs_with_history = invoice_payment.audit_logs_with_history(cached_options_for_klient)
78
+ =end
79
79
  elsif object_type == 'PAYMENT_ATTEMPT'
80
80
  audit_logs_with_history = Kaui::Payment::attempt_audit_logs_with_history(object_id, cached_options_for_klient)
81
81
  elsif object_type == 'PAYMENT'
@@ -31,6 +31,10 @@ class Kaui::BundlesController < Kaui::EngineController
31
31
  @available_tags = wait(fetch_available_tags)
32
32
  @available_subscription_tags = wait(fetch_available_subscription_tags)
33
33
 
34
+ # TODO This doesn't take into account catalog versions
35
+ catalogs = Kaui::Catalog.get_account_catalog_json(@account.account_id, nil, cached_options_for_klient) || []
36
+ @catalog = catalogs[-1]
37
+
34
38
  @subscription = {}
35
39
  @bundles.each do |bundle|
36
40
  bundle.subscriptions.each do |sub|
@@ -65,6 +65,7 @@ module Kaui::EngineControllerUtil
65
65
  value = promise.value!(60)
66
66
  raise promise.reason unless promise.reason.nil?
67
67
  if value.nil? && promise.state != :fulfilled
68
+ # Could be https://github.com/ruby-concurrency/concurrent-ruby/issues/585
68
69
  Rails.logger.warn("Unable to run promise #{promise_as_string(promise)}")
69
70
  raise Timeout::Error
70
71
  end
@@ -125,7 +126,7 @@ module Kaui::EngineControllerUtil
125
126
  response = yield
126
127
  response_status = 200
127
128
  rescue KillBillClient::API::ResponseError => e
128
- response = e.response.message
129
+ response = as_string_from_response(e.response.body)
129
130
  response_status = e.code
130
131
  rescue Exception => e
131
132
  response = e.message
@@ -49,7 +49,25 @@ class Kaui::InvoicesController < Kaui::EngineController
49
49
 
50
50
  @invoice = Kaui::Invoice.find_by_id(params.require(:id), 'FULL', cached_options_for_klient)
51
51
  # This will put the TAX items at the bottom
52
- @invoice.items.sort_by! { |ii| [ii.item_type, ii.description] }
52
+ precedence = {
53
+ 'EXTERNAL_CHARGE' => 0,
54
+ 'FIXED' => 1,
55
+ 'RECURRING' => 2,
56
+ 'REPAIR_ADJ' => 3,
57
+ 'USAGE' => 4,
58
+ 'PARENT_SUMMARY' => 5,
59
+ 'ITEM_ADJ' => 6,
60
+ 'CBA_ADJ' => 7,
61
+ 'CREDIT_ADJ' => 8,
62
+ 'TAX' => 9
63
+ }
64
+ # TODO The pretty description has to be shared with the view
65
+ @invoice.items.sort_by! do |ii|
66
+ # Make sure not to compare nil (ArgumentError comparison of Array with Array failed)
67
+ a = precedence[ii.item_type] || 100
68
+ b = (ii.pretty_plan_name.blank? || !ii.item_type.in?(%w{USAGE RECURRING}) ? ii.description : ii.pretty_plan_name) || ''
69
+ [a, b]
70
+ end
53
71
 
54
72
  fetch_payments = promise { @invoice.payments(true, true, 'FULL', cached_options_for_klient).map { |payment| Kaui::InvoicePayment.build_from_raw_payment(payment) } }
55
73
  fetch_pms = fetch_payments.then { |payments| Kaui::PaymentMethod.payment_methods_for_payments(payments, cached_options_for_klient) }
@@ -19,11 +19,24 @@ module Kaui
19
19
  end
20
20
  end
21
21
 
22
- def humanized_subscription_product_name(sub)
23
- if !sub.present? or !sub.product_name.present?
22
+ def humanized_subscription_product_name(sub, catalog = nil)
23
+ if !sub.present? || !sub.product_name.present?
24
24
  nil
25
25
  else
26
- humanized_product_name(sub.product_name)
26
+ product = catalog.nil? ? nil : catalog.products.find { |p| p.name == sub.product_name }
27
+ humanized_product_name(!product.nil? && !product.pretty_name.blank? ? product.pretty_name : sub.product_name)
28
+ end
29
+ end
30
+
31
+ def humanized_subscription_pretty_plan_name(sub, catalog = nil)
32
+ if !sub.present? || !sub.product_name.present?
33
+ nil
34
+ else
35
+ product = catalog.nil? ? nil : catalog.products.find { |p| p.name == sub.product_name }
36
+ return nil if product.nil?
37
+
38
+ plan = product.plans.find { |p| p.name == sub.plan_name }
39
+ plan.nil? || plan.pretty_name.blank? ? nil : plan.pretty_name
27
40
  end
28
41
  end
29
42
 
@@ -56,8 +69,11 @@ module Kaui
56
69
  end
57
70
  end
58
71
 
59
- def humanized_subscription_full_product_name(sub)
60
- humanized_product_name = humanized_subscription_product_name(sub)
72
+ def humanized_subscription_plan_or_product_name(sub, catalog = nil)
73
+ pretty_plan_name = humanized_subscription_pretty_plan_name(sub, catalog)
74
+ return pretty_plan_name unless pretty_plan_name.nil?
75
+
76
+ humanized_product_name = humanized_subscription_product_name(sub, catalog)
61
77
  humanized_billing_period = humanized_subscription_billing_period(sub)
62
78
  humanized_price_list = humanized_subscription_price_list(sub, false)
63
79
 
@@ -4,6 +4,20 @@ class Kaui::Catalog < KillBillClient::Model::Catalog
4
4
 
5
5
  class << self
6
6
 
7
+ def get_account_catalog_json(account_id, requested_date = nil, options = {})
8
+ params = {}
9
+ params[:accountId] = account_id
10
+ params[:requestedDate] = requested_date if requested_date
11
+
12
+ get KillBillClient::Model::Catalog::KILLBILL_API_CATALOG_PREFIX,
13
+ params,
14
+ {
15
+ :head => {'Accept' => "application/json"},
16
+ :content_type => "application/json",
17
+
18
+ }.merge(options)
19
+ end
20
+
7
21
  def get_tenant_catalog_json(requested_date = nil, options = {})
8
22
  super
9
23
  rescue ::KillBillClient::API::InternalServerError => e
@@ -76,7 +76,7 @@
76
76
 
77
77
  <% if bundle.subscriptions.present? %>
78
78
  <div class="search">
79
- <%= render :partial => 'kaui/subscriptions/subscriptions_table', :locals => {:bundle => bundle, :account => @account} %>
79
+ <%= render :partial => 'kaui/subscriptions/subscriptions_table', :locals => {:bundle => bundle, :account => @account, :catalog => @catalog} %>
80
80
  </div>
81
81
  <% end %>
82
82
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  </td>
84
84
  <% end %>
85
- <td onClick="hightlightLinkedItems('<%= item.invoice_item_id %>', '<%= item.linked_invoice_item_id %>'); return false;"><%= item.description %></td>
85
+ <td onClick="hightlightLinkedItems('<%= item.invoice_item_id %>', '<%= item.linked_invoice_item_id %>'); return false;"><%= item.pretty_plan_name.blank? || !item.item_type.in?(%w{USAGE RECURRING}) ? item.description : item.pretty_plan_name %></td>
86
86
  <td onClick="hightlightLinkedItems('<%= item.invoice_item_id %>', '<%= item.linked_invoice_item_id %>'); return false;"><%= item.start_date.html_safe if item.start_date %></td>
87
87
  <td onClick="hightlightLinkedItems('<%= item.invoice_item_id %>', '<%= item.linked_invoice_item_id %>'); return false;"><%= item.end_date.html_safe if item.end_date %></td>
88
88
  <td onClick="hightlightLinkedItems('<%= item.invoice_item_id %>', '<%= item.linked_invoice_item_id %>'); return false;"><%= item.subscription_id %></td>
@@ -130,7 +130,7 @@
130
130
 
131
131
  <script language="javascript">
132
132
  function hightlightLinkedItems(invoice_item_id, linked_invoice_item_id) {
133
- $("#invoice_table tr:gt(0)").each(function (index) {
133
+ $("#invoice-table tr:gt(0)").each(function (index) {
134
134
  var ids = $(this).attr("id").split("_");
135
135
  var item_id = ids[2];
136
136
  var linked_item_id = ids[3];
@@ -105,6 +105,7 @@
105
105
  $('#invoice-table').dataTable({
106
106
  "dom": "t",
107
107
  "paging": false,
108
+ "order": [],
108
109
  "columns": [
109
110
  null,
110
111
  null,
@@ -4,8 +4,8 @@
4
4
  <% unless @available_subscription_tags.blank? && @custom_fields_per_subscription.blank? %>
5
5
  <th></th>
6
6
  <% end %>
7
- <th>Product category</th>
8
- <th>Product name</th>
7
+ <th>Category</th>
8
+ <th>Name</th>
9
9
  <th>Phase type</th>
10
10
  <th>Start date</th>
11
11
  <th>Charged through date</th>
@@ -47,7 +47,7 @@
47
47
  <%= humanized_subscription_product_category(sub) %>
48
48
  </span>
49
49
  </td>
50
- <td><%= humanized_subscription_full_product_name(sub) %></td>
50
+ <td><%= humanized_subscription_plan_or_product_name(sub, catalog) %></td>
51
51
  <td><%= humanized_subscription_phase_type(sub) %></td>
52
52
  <td><%= humanized_subscription_start_date(sub, account) %></td>
53
53
  <td><%= humanized_subscription_charged_through_date(sub, account) %></td>
@@ -1,3 +1,3 @@
1
1
  module Kaui
2
- VERSION = '2.0.3'
2
+ VERSION = '2.0.4'
3
3
  end
@@ -3,7 +3,7 @@ default: &default
3
3
  encoding: utf8
4
4
  username: <%= ENV.fetch('DB_USER', 'root') %>
5
5
  password: <%= ENV.fetch('DB_PASSWORD', 'root') %>
6
- host: 127.0.0.1
6
+ host: <%= ENV.fetch('DB_HOST', '127.0.0.1') %>
7
7
  port: <%= ENV.fetch('DB_PORT', '3306') %>
8
8
  pool: 25
9
9
  timeout: 5000
@@ -17,7 +17,7 @@ default: &default
17
17
 
18
18
  development:
19
19
  <<: *default
20
- database: kaui
20
+ database: <%= ENV.fetch('DB_NAME', 'kaui') %>
21
21
 
22
22
  # Warning: The database defined as "test" will be erased and
23
23
  # re-generated from your development database when you run "rake".
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kaui
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Killbill core team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-03 00:00:00.000000000 Z
11
+ date: 2021-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -402,6 +402,20 @@ dependencies:
402
402
  - - ">="
403
403
  - !ruby/object:Gem::Version
404
404
  version: '0'
405
+ - !ruby/object:Gem::Dependency
406
+ name: gem-release
407
+ requirement: !ruby/object:Gem::Requirement
408
+ requirements:
409
+ - - "~>"
410
+ - !ruby/object:Gem::Version
411
+ version: '2.2'
412
+ type: :development
413
+ prerelease: false
414
+ version_requirements: !ruby/object:Gem::Requirement
415
+ requirements:
416
+ - - "~>"
417
+ - !ruby/object:Gem::Version
418
+ version: '2.2'
405
419
  - !ruby/object:Gem::Dependency
406
420
  name: byebug
407
421
  requirement: !ruby/object:Gem::Requirement
@@ -885,106 +899,106 @@ signing_key:
885
899
  specification_version: 4
886
900
  summary: Killbill Admin UI mountable engine
887
901
  test_files:
888
- - test/fixtures/catalog-v1.xml
889
- - test/fixtures/invoice_translation_fr-v1.properties
890
- - test/fixtures/catalog_translation_fr-v1.properties
891
- - test/fixtures/invoice_template-v1.html
892
- - test/fixtures/overdue-v1.xml
893
- - test/fixtures/stripe.yml
894
- - test/fixtures/SpyCarAdvanced.xml
895
- - test/unit/kaui/admin_tenant_test.rb
896
- - test/unit/kaui/payment_test.rb
897
- - test/unit/kaui/base_test.rb
898
- - test/unit/kaui/invoice_test.rb
899
- - test/unit/kaui/allowed_user_test.rb
900
- - test/unit/kaui/invoice_payment_test.rb
901
- - test/unit/kaui/account_test.rb
902
- - test/unit/kaui/invoice_item_test.rb
903
- - test/unit/kaui/tag_definition_test.rb
904
- - test/unit/kaui/account_email_test.rb
905
- - test/unit/kaui/date_helper_test.rb
906
- - test/unit/kaui/tenant_test.rb
907
- - test/unit/kaui/money_helper_test.rb
908
- - test/unit/helpers/kaui/tenants_helper_test.rb
909
- - test/unit/helpers/kaui/payment_method_helper_test.rb
910
- - test/unit/helpers/kaui/admin_tenants_helper_test.rb
911
- - test/unit/helpers/kaui/admin_allowed_users_helper_test.rb
912
- - test/unit/helpers/kaui/uuid_helper_test.rb
913
- - test/test_helper.rb
914
902
  - test/integration/kaui/integration_test_helper.rb
915
903
  - test/integration/kaui/navigation_test.rb
916
904
  - test/integration/kaui/date_helper_integration_test.rb
917
- - test/dummy/public/404.html
905
+ - test/test_helper.rb
906
+ - test/killbill_test_helper.rb
918
907
  - test/dummy/public/422.html
908
+ - test/dummy/public/404.html
919
909
  - test/dummy/public/500.html
920
910
  - test/dummy/public/favicon.ico
911
+ - test/dummy/README.rdoc
921
912
  - test/dummy/config/secrets.yml
922
- - test/dummy/config/locales/en.yml
923
- - test/dummy/config/environment.rb
913
+ - test/dummy/config/application.rb
924
914
  - test/dummy/config/routes.rb
925
- - test/dummy/config/symmetric-encryption.yml
926
- - test/dummy/config/environments/test.rb
927
- - test/dummy/config/environments/production.rb
928
- - test/dummy/config/environments/development.rb
929
- - test/dummy/config/database.yml
930
- - test/dummy/config/initializers/new_framework_defaults_5_1.rb
915
+ - test/dummy/config/initializers/secret_token.rb
931
916
  - test/dummy/config/initializers/inflections.rb
932
- - test/dummy/config/initializers/assets.rb
933
- - test/dummy/config/initializers/backtrace_silencers.rb
934
917
  - test/dummy/config/initializers/killbill_client.rb
918
+ - test/dummy/config/initializers/session_store.rb
919
+ - test/dummy/config/initializers/assets.rb
920
+ - test/dummy/config/initializers/wrap_parameters.rb
935
921
  - test/dummy/config/initializers/filter_parameter_logging.rb
922
+ - test/dummy/config/initializers/backtrace_silencers.rb
923
+ - test/dummy/config/initializers/new_framework_defaults_5_1.rb
936
924
  - test/dummy/config/initializers/mime_types.rb
937
925
  - test/dummy/config/initializers/application_controller_renderer.rb
938
- - test/dummy/config/initializers/secret_token.rb
939
926
  - test/dummy/config/initializers/cookies_serializer.rb
940
- - test/dummy/config/initializers/session_store.rb
941
- - test/dummy/config/initializers/wrap_parameters.rb
927
+ - test/dummy/config/environment.rb
928
+ - test/dummy/config/environments/test.rb
929
+ - test/dummy/config/environments/development.rb
930
+ - test/dummy/config/environments/production.rb
931
+ - test/dummy/config/symmetric-encryption.yml
942
932
  - test/dummy/config/boot.rb
943
- - test/dummy/config/application.rb
944
- - test/dummy/Rakefile
933
+ - test/dummy/config/locales/en.yml
934
+ - test/dummy/config/database.yml
935
+ - test/dummy/db/schema.rb
945
936
  - test/dummy/script/rails
946
- - test/dummy/README.rdoc
947
937
  - test/dummy/app/controllers/application_controller.rb
948
938
  - test/dummy/app/helpers/application_helper.rb
949
- - test/dummy/config.ru
939
+ - test/dummy/bin/yarn
940
+ - test/dummy/bin/setup
950
941
  - test/dummy/bin/rake
951
942
  - test/dummy/bin/bundle
952
943
  - test/dummy/bin/update
953
- - test/dummy/bin/setup
954
- - test/dummy/bin/yarn
955
944
  - test/dummy/bin/rails
956
- - test/dummy/db/schema.rb
957
- - test/killbill_test_helper.rb
958
- - test/functional/kaui/transactions_controller_test.rb
959
- - test/functional/kaui/admin_tenants_controller_test.rb
960
- - test/functional/kaui/credits_controller_test.rb
961
- - test/functional/kaui/home_controller_test.rb
962
- - test/functional/kaui/tag_definitions_controller_test.rb
963
- - test/functional/kaui/account_children_controller_test.rb
964
- - test/functional/kaui/account_timelines_controller_test.rb
965
- - test/functional/kaui/custom_fields_controller_test.rb
966
- - test/functional/kaui/charges_controller_test.rb
967
- - test/functional/kaui/account_emails_controller_test.rb
968
- - test/functional/kaui/queues_controller_test.rb
969
- - test/functional/kaui/admin_controller_test.rb
970
- - test/functional/kaui/accounts_controller_test.rb
971
- - test/functional/kaui/subscriptions_controller_test.rb
972
- - test/functional/kaui/chargebacks_controller_test.rb
973
- - test/functional/kaui/payments_controller_test.rb
945
+ - test/dummy/config.ru
946
+ - test/dummy/Rakefile
947
+ - test/functional/kaui/refunds_controller_test.rb
948
+ - test/functional/kaui/registrations_controller_test.rb
974
949
  - test/functional/kaui/bundles_controller_test.rb
975
- - test/functional/kaui/tags_controller_test.rb
976
950
  - test/functional/kaui/account_tags_controller_test.rb
951
+ - test/functional/kaui/admin_controller_test.rb
977
952
  - test/functional/kaui/functional_test_helper_nosetup.rb
978
- - test/functional/kaui/account_custom_fields_controller_test.rb
979
- - test/functional/kaui/invoice_items_controller_test.rb
980
- - test/functional/kaui/admin_allowed_users_controller_test.rb
981
- - test/functional/kaui/refunds_controller_test.rb
982
- - test/functional/kaui/audit_logs_controller_test.rb
983
- - test/functional/kaui/registrations_controller_test.rb
984
- - test/functional/kaui/invoices_controller_test.rb
985
953
  - test/functional/kaui/role_definitions_controller_test.rb
986
- - test/functional/kaui/payment_methods_controller_test.rb
954
+ - test/functional/kaui/tags_controller_test.rb
955
+ - test/functional/kaui/queues_controller_test.rb
956
+ - test/functional/kaui/home_controller_test.rb
957
+ - test/functional/kaui/accounts_controller_test.rb
987
958
  - test/functional/kaui/bundle_tags_controller_test.rb
959
+ - test/functional/kaui/credits_controller_test.rb
960
+ - test/functional/kaui/account_timelines_controller_test.rb
988
961
  - test/functional/kaui/login_proxy_controller_test.rb
989
962
  - test/functional/kaui/tenants_controller_test.rb
963
+ - test/functional/kaui/tag_definitions_controller_test.rb
964
+ - test/functional/kaui/admin_allowed_users_controller_test.rb
990
965
  - test/functional/kaui/functional_test_helper.rb
966
+ - test/functional/kaui/audit_logs_controller_test.rb
967
+ - test/functional/kaui/account_custom_fields_controller_test.rb
968
+ - test/functional/kaui/transactions_controller_test.rb
969
+ - test/functional/kaui/charges_controller_test.rb
970
+ - test/functional/kaui/chargebacks_controller_test.rb
971
+ - test/functional/kaui/payment_methods_controller_test.rb
972
+ - test/functional/kaui/subscriptions_controller_test.rb
973
+ - test/functional/kaui/custom_fields_controller_test.rb
974
+ - test/functional/kaui/account_children_controller_test.rb
975
+ - test/functional/kaui/payments_controller_test.rb
976
+ - test/functional/kaui/invoices_controller_test.rb
977
+ - test/functional/kaui/admin_tenants_controller_test.rb
978
+ - test/functional/kaui/invoice_items_controller_test.rb
979
+ - test/functional/kaui/account_emails_controller_test.rb
980
+ - test/fixtures/overdue-v1.xml
981
+ - test/fixtures/SpyCarAdvanced.xml
982
+ - test/fixtures/catalog-v1.xml
983
+ - test/fixtures/invoice_template-v1.html
984
+ - test/fixtures/catalog_translation_fr-v1.properties
985
+ - test/fixtures/stripe.yml
986
+ - test/fixtures/invoice_translation_fr-v1.properties
987
+ - test/unit/kaui/invoice_item_test.rb
988
+ - test/unit/kaui/admin_tenant_test.rb
989
+ - test/unit/kaui/base_test.rb
990
+ - test/unit/kaui/money_helper_test.rb
991
+ - test/unit/kaui/payment_test.rb
992
+ - test/unit/kaui/invoice_test.rb
993
+ - test/unit/kaui/tag_definition_test.rb
994
+ - test/unit/kaui/date_helper_test.rb
995
+ - test/unit/kaui/invoice_payment_test.rb
996
+ - test/unit/kaui/allowed_user_test.rb
997
+ - test/unit/kaui/account_test.rb
998
+ - test/unit/kaui/account_email_test.rb
999
+ - test/unit/kaui/tenant_test.rb
1000
+ - test/unit/helpers/kaui/tenants_helper_test.rb
1001
+ - test/unit/helpers/kaui/admin_tenants_helper_test.rb
1002
+ - test/unit/helpers/kaui/admin_allowed_users_helper_test.rb
1003
+ - test/unit/helpers/kaui/payment_method_helper_test.rb
1004
+ - test/unit/helpers/kaui/uuid_helper_test.rb