kaui 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/Gemfile +1 -1
- data/README.md +10 -15
- data/app/assets/images/kaui/duck.png +0 -0
- data/app/assets/images/kaui/logo.png +0 -0
- data/app/assets/images/kaui/search.png +0 -0
- data/app/assets/images/kaui/search_white.png +0 -0
- data/app/assets/javascripts/application.js +3 -0
- data/app/assets/javascripts/kaui/bootstrap-tweaks.js +3 -0
- data/app/assets/javascripts/kaui/kaui.js +99 -0
- data/app/assets/stylesheets/application.css +3 -1
- data/app/assets/stylesheets/bootstrap_and_overrides.less +39 -0
- data/app/assets/stylesheets/kaui/common.less +538 -0
- data/app/assets/stylesheets/kaui/datatable.less +75 -0
- data/app/assets/stylesheets/kaui/header.less +186 -0
- data/app/assets/stylesheets/kaui/home.less +82 -0
- data/app/assets/stylesheets/kaui/invoice.less +54 -0
- data/app/assets/stylesheets/kaui/kaui.less +16 -0
- data/app/assets/stylesheets/kaui/payment.less +29 -0
- data/app/assets/stylesheets/kaui/subscription.less +5 -0
- data/app/assets/stylesheets/kaui/tags.less +175 -0
- data/app/assets/stylesheets/kaui/timeline.less +4 -0
- data/app/controllers/kaui/account_emails_controller.rb +18 -18
- data/app/controllers/kaui/account_tags_controller.rb +8 -30
- data/app/controllers/kaui/account_timelines_controller.rb +13 -23
- data/app/controllers/kaui/accounts_controller.rb +65 -62
- data/app/controllers/kaui/admin_allowed_users_controller.rb +48 -32
- data/app/controllers/kaui/admin_tenants_controller.rb +147 -142
- data/app/controllers/kaui/bundle_tags_controller.rb +9 -33
- data/app/controllers/kaui/bundles_controller.rb +23 -62
- data/app/controllers/kaui/chargebacks_controller.rb +5 -11
- data/app/controllers/kaui/charges_controller.rb +11 -18
- data/app/controllers/kaui/credits_controller.rb +19 -22
- data/app/controllers/kaui/custom_fields_controller.rb +44 -16
- data/app/controllers/kaui/engine_controller.rb +56 -3
- data/app/controllers/kaui/engine_controller_util.rb +75 -1
- data/app/controllers/kaui/home_controller.rb +19 -0
- data/app/controllers/kaui/invoice_items_controller.rb +16 -21
- data/app/controllers/kaui/invoices_controller.rb +31 -53
- data/app/controllers/kaui/payment_methods_controller.rb +14 -46
- data/app/controllers/kaui/payments_controller.rb +60 -69
- data/app/controllers/kaui/refunds_controller.rb +11 -25
- data/app/controllers/kaui/registrations_controller.rb +38 -0
- data/app/controllers/kaui/subscriptions_controller.rb +82 -95
- data/app/controllers/kaui/tag_definitions_controller.rb +1 -5
- data/app/controllers/kaui/tags_controller.rb +17 -17
- data/app/controllers/kaui/tenants_controller.rb +38 -55
- data/app/controllers/kaui/transactions_controller.rb +8 -15
- data/app/helpers/kaui/application_helper.rb +4 -0
- data/app/helpers/kaui/object_helper.rb +24 -0
- data/app/helpers/kaui/payment_method_helper.rb +9 -0
- data/app/helpers/kaui/subscription_helper.rb +1 -1
- data/app/helpers/kaui/uuid_helper.rb +1 -0
- data/app/models/kaui/ability.rb +7 -1
- data/app/models/kaui/account.rb +6 -2
- data/app/models/kaui/account_email.rb +10 -0
- data/app/models/kaui/allowed_user.rb +16 -4
- data/app/models/kaui/audit_log.rb +5 -3
- data/app/models/kaui/bundle.rb +6 -11
- data/app/models/kaui/credit.rb +3 -0
- data/app/models/kaui/invoice.rb +10 -15
- data/app/models/kaui/invoice_payment.rb +10 -13
- data/app/models/kaui/killbill_registerable.rb +7 -0
- data/app/models/kaui/payment.rb +19 -12
- data/app/models/kaui/payment_method.rb +9 -0
- data/app/models/kaui/payment_state.rb +52 -0
- data/app/models/kaui/tag.rb +14 -0
- data/app/models/kaui/tag_definition.rb +8 -2
- data/app/models/kaui/user.rb +5 -4
- data/app/views/kaui/account_emails/_account_emails_table.html.erb +12 -9
- data/app/views/kaui/account_emails/_form.html.erb +9 -9
- data/app/views/kaui/account_emails/new.html.erb +9 -2
- data/app/views/kaui/account_tags/_form.html.erb +20 -29
- data/app/views/kaui/account_tags/_form_bar.html.erb +21 -0
- data/app/views/kaui/account_tags/edit.html.erb +9 -4
- data/app/views/kaui/account_timelines/show.html.erb +204 -287
- data/app/views/kaui/accounts/_account_info.html.erb +108 -0
- data/app/views/kaui/accounts/_billing_info.html.erb +129 -0
- data/app/views/kaui/accounts/_form.html.erb +127 -115
- data/app/views/kaui/accounts/_payment_methods.html.erb +28 -0
- data/app/views/kaui/accounts/edit.html.erb +10 -0
- data/app/views/kaui/accounts/index.html.erb +38 -23
- data/app/views/kaui/accounts/new.html.erb +9 -4
- data/app/views/kaui/accounts/show.html.erb +4 -106
- data/app/views/kaui/admin_allowed_users/_form.html.erb +19 -0
- data/app/views/kaui/admin_allowed_users/index.html.erb +35 -18
- data/app/views/kaui/admin_allowed_users/new.html.erb +9 -21
- data/app/views/kaui/admin_allowed_users/show.html.erb +42 -50
- data/app/views/kaui/admin_tenants/_form.html.erb +25 -0
- data/app/views/kaui/admin_tenants/_tenants_table.html.erb +27 -0
- data/app/views/kaui/admin_tenants/index.html.erb +14 -23
- data/app/views/kaui/admin_tenants/new.html.erb +8 -37
- data/app/views/kaui/admin_tenants/show.html.erb +128 -113
- data/app/views/kaui/bundle_tags/_form.html.erb +20 -28
- data/app/views/kaui/bundle_tags/_form_bar.html.erb +21 -0
- data/app/views/kaui/bundle_tags/edit.html.erb +9 -4
- data/app/views/kaui/bundles/index.html.erb +76 -29
- data/app/views/kaui/bundles/transfer.html.erb +28 -28
- data/app/views/kaui/chargebacks/_form.html.erb +31 -29
- data/app/views/kaui/chargebacks/new.html.erb +9 -4
- data/app/views/kaui/charges/_form.html.erb +35 -59
- data/app/views/kaui/charges/new.html.erb +9 -4
- data/app/views/kaui/credits/_form.html.erb +32 -59
- data/app/views/kaui/credits/new.html.erb +9 -4
- data/app/views/kaui/custom_fields/_form.html.erb +31 -0
- data/app/views/kaui/custom_fields/index.html.erb +33 -20
- data/app/views/kaui/custom_fields/new.html.erb +10 -0
- data/app/views/kaui/home/index.html.erb +12 -9
- data/app/views/kaui/invoice_items/_edit_form.html.erb +30 -0
- data/app/views/kaui/invoice_items/edit.html.erb +10 -91
- data/app/views/kaui/invoices/_invoice_table.html.erb +113 -0
- data/app/views/kaui/invoices/index.html.erb +31 -22
- data/app/views/kaui/invoices/show.html.erb +77 -91
- data/app/views/kaui/layouts/kaui_account_navbar.html.erb +11 -0
- data/app/views/kaui/layouts/kaui_application.html.erb +14 -53
- data/app/views/kaui/layouts/kaui_flash.html.erb +17 -0
- data/app/views/kaui/layouts/kaui_footer.html.erb +2 -0
- data/app/views/kaui/layouts/kaui_header.html.erb +17 -0
- data/app/views/kaui/layouts/kaui_navbar.html.erb +75 -0
- data/app/views/kaui/payment_methods/_form.html.erb +26 -23
- data/app/views/kaui/payment_methods/_new_creditcard_payment_method.html.erb +46 -41
- data/app/views/kaui/payment_methods/_payment_methods_details_table.html.erb +25 -0
- data/app/views/kaui/payment_methods/_payment_methods_table.html.erb +50 -52
- data/app/views/kaui/payment_methods/new.html.erb +9 -4
- data/app/views/kaui/payments/_form.html.erb +55 -0
- data/app/views/kaui/payments/_payment_table.html.erb +117 -0
- data/app/views/kaui/payments/index.html.erb +31 -22
- data/app/views/kaui/payments/new.html.erb +9 -92
- data/app/views/kaui/payments/show.html.erb +38 -2
- data/app/views/kaui/refunds/_form.html.erb +240 -0
- data/app/views/kaui/refunds/new.html.erb +8 -280
- data/app/views/kaui/registrations/_form.html.erb +19 -0
- data/app/views/kaui/registrations/new.html.erb +10 -0
- data/app/views/kaui/sessions/_form.html.erb +19 -0
- data/app/views/kaui/sessions/new.html.erb +7 -18
- data/app/views/kaui/subscriptions/_edit_form.html.erb +26 -0
- data/app/views/kaui/subscriptions/_form.html.erb +34 -31
- data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +37 -24
- data/app/views/kaui/subscriptions/edit.html.erb +10 -30
- data/app/views/kaui/subscriptions/new.html.erb +14 -11
- data/app/views/kaui/tag_definitions/_form.html.erb +14 -11
- data/app/views/kaui/tag_definitions/index.html.erb +56 -30
- data/app/views/kaui/tag_definitions/new.html.erb +9 -2
- data/app/views/kaui/tags/_tags_table.html.erb +7 -10
- data/app/views/kaui/tags/index.html.erb +29 -20
- data/app/views/kaui/tenants/_form.html.erb +13 -0
- data/app/views/kaui/tenants/index.html.erb +9 -16
- data/app/views/kaui/transactions/_form.html.erb +47 -67
- data/app/views/kaui/transactions/new.html.erb +9 -2
- data/config/initializers/killbill_registerable.rb +4 -0
- data/config/routes.rb +88 -93
- data/kaui.gemspec +11 -2
- data/lib/kaui/engine.rb +6 -4
- data/lib/kaui/version.rb +1 -1
- data/lib/kaui.rb +24 -1
- data/test/dummy/config/application.rb +2 -0
- data/test/dummy/config/database.yml +6 -3
- data/test/dummy/config/initializers/killbill_client.rb +0 -2
- data/test/fixtures/catalog-v1.xml +74 -0
- data/test/fixtures/catalog_translation_fr-v1.properties +1 -0
- data/test/fixtures/invoice_template-v1.html +100 -0
- data/test/fixtures/invoice_translation_fr-v1.properties +23 -0
- data/test/fixtures/overdue-v1.xml +49 -0
- data/test/fixtures/stripe.yml +2 -0
- data/test/functional/kaui/account_emails_controller_test.rb +35 -8
- data/test/functional/kaui/account_tags_controller_test.rb +8 -8
- data/test/functional/kaui/account_timelines_controller_test.rb +6 -7
- data/test/functional/kaui/accounts_controller_test.rb +72 -10
- data/test/functional/kaui/admin_allowed_users_controller_test.rb +6 -5
- data/test/functional/kaui/admin_tenants_controller_test.rb +104 -48
- data/test/functional/kaui/bundle_tags_controller_test.rb +14 -9
- data/test/functional/kaui/bundles_controller_test.rb +59 -23
- data/test/functional/kaui/chargebacks_controller_test.rb +29 -7
- data/test/functional/kaui/charges_controller_test.rb +31 -10
- data/test/functional/kaui/credits_controller_test.rb +25 -6
- data/test/functional/kaui/custom_fields_controller_test.rb +25 -1
- data/test/functional/kaui/functional_test_helper_nosetup.rb +6 -4
- data/test/functional/kaui/home_controller_test.rb +24 -0
- data/test/functional/kaui/invoice_items_controller_test.rb +56 -8
- data/test/functional/kaui/invoices_controller_test.rb +27 -18
- data/test/functional/kaui/payment_methods_controller_test.rb +2 -22
- data/test/functional/kaui/payments_controller_test.rb +8 -3
- data/test/functional/kaui/refunds_controller_test.rb +40 -21
- data/test/functional/kaui/subscriptions_controller_test.rb +77 -24
- data/test/functional/kaui/tag_definitions_controller_test.rb +1 -7
- data/test/functional/kaui/tags_controller_test.rb +1 -1
- data/test/functional/kaui/tenants_controller_test.rb +9 -9
- data/test/functional/kaui/transactions_controller_test.rb +41 -16
- data/test/integration/kaui/integration_test_helper.rb +0 -1
- data/test/integration/kaui/navigation_test.rb +4 -6
- data/test/test_helper.rb +2 -0
- metadata +155 -28
- data/Gemfile.lock +0 -210
- data/app/assets/stylesheets/bootstrap_and_overrides.css +0 -7
- data/app/assets/stylesheets/datatables.scss +0 -14
- data/app/assets/stylesheets/layout.scss +0 -19
- data/app/views/kaui/account_emails/show.html.erb +0 -25
- data/app/views/kaui/account_tags/_account_tags_table.html.erb +0 -32
- data/app/views/kaui/account_tags/show.html.erb +0 -6
- data/app/views/kaui/account_timelines/index.html.erb +0 -14
- data/app/views/kaui/bundle_tags/_bundle_tags_table.html.erb +0 -31
- data/app/views/kaui/bundle_tags/show.html.erb +0 -6
- data/app/views/kaui/bundles/show.html.erb +0 -18
- data/app/views/kaui/payment_methods/index.html.erb +0 -30
- data/app/views/kaui/payment_methods/show.html.erb +0 -3
- data/app/views/kaui/payments/_payments_table.html.erb +0 -41
- data/app/views/kaui/subscriptions/index.html.erb +0 -15
- data/app/views/kaui/subscriptions/show.html.erb +0 -33
- data/app/views/kaui/tag_definitions/show.html.erb +0 -15
- data/vendor/assets/images/img/glyphicons-halflings-white.png +0 -0
- data/vendor/assets/images/img/glyphicons-halflings.png +0 -0
- data/vendor/assets/stylesheets/css/bootstrap-datepicker.cd46d38.css +0 -274
data/config/routes.rb
CHANGED
@@ -1,138 +1,133 @@
|
|
1
|
+
module ActionDispatch
|
2
|
+
module Routing
|
3
|
+
class Mapper
|
4
|
+
module Resources
|
5
|
+
class Resource
|
6
|
+
def nested_param
|
7
|
+
# Fix an issue where nested param would be account_account_id
|
8
|
+
param.to_s.start_with?(singular) ? param : super
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
1
16
|
Kaui::Engine.routes.draw do
|
2
17
|
|
3
18
|
devise_for :users,
|
4
19
|
:class_name => 'Kaui::User',
|
5
20
|
:module => :devise,
|
6
|
-
:controllers => { :sessions => 'kaui/sessions'}
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
21
|
+
:controllers => { :sessions => 'kaui/sessions', :registrations => 'kaui/registrations' }
|
22
|
+
|
23
|
+
root :to => 'home#index', as: 'kaui'
|
24
|
+
|
25
|
+
scope '/accounts' do
|
26
|
+
match '/pagination' => 'accounts#pagination', :via => :get, :as => 'accounts_pagination'
|
27
|
+
|
28
|
+
scope '/:account_id' do
|
29
|
+
match '/next_invoice_date' => 'accounts#next_invoice_date', :via => :get, :as => 'next_invoice_date'
|
30
|
+
|
31
|
+
scope '/account_tags' do
|
32
|
+
match '/edit' => 'account_tags#edit', :via => :get, :as => 'edit_account_tags'
|
33
|
+
match '/edit' => 'account_tags#update', :via => :post, :as => 'update_account_tags'
|
34
|
+
end
|
35
|
+
scope '/bundle_tags' do
|
36
|
+
match '/edit' => 'bundle_tags#edit', :via => :get, :as => 'edit_bundle_tags'
|
37
|
+
match '/edit' => 'bundle_tags#update', :via => :post, :as => 'update_bundle_tags'
|
38
|
+
end
|
39
|
+
scope '/timeline' do
|
40
|
+
match '/' => 'account_timelines#show', :via => :get, :as => 'account_timeline'
|
41
|
+
end
|
42
|
+
end
|
14
43
|
end
|
15
|
-
resources :accounts, :only => [ :index, :new, :create, :show ] do
|
44
|
+
resources :accounts, :only => [ :index, :new, :create, :edit, :update, :show ], :param => :account_id do
|
16
45
|
member do
|
17
46
|
put :set_default_payment_method
|
18
47
|
delete :delete_payment_method
|
19
48
|
post :toggle_email_notifications
|
20
49
|
post :pay_all_invoices
|
21
50
|
end
|
22
|
-
end
|
23
|
-
|
24
|
-
resources :account_emails, :only => [ :create, :new, :show, :destroy ]
|
25
51
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
52
|
+
# The id is the email itself
|
53
|
+
resources :account_emails, :only => [:new, :create, :destroy], :constraints => { :id => /[\w+\-;@\.]+/ }, :path => 'emails'
|
54
|
+
resources :bundles, :only => [:index]
|
55
|
+
resources :charges, :only => [:new, :create]
|
56
|
+
resources :chargebacks, :only => [:new, :create]
|
57
|
+
resources :credits, :only => [:new, :create]
|
58
|
+
resources :invoices, :only => [:index, :show]
|
59
|
+
resources :invoice_items, :only => [:edit]
|
60
|
+
resources :payments, :only => [:index, :show, :new, :create]
|
61
|
+
resources :refunds, :only => [:new, :create]
|
62
|
+
resources :transactions, :only => [:new, :create]
|
34
63
|
end
|
35
64
|
|
36
|
-
resources :
|
37
|
-
|
38
|
-
resources :credits, :only => [ :create, :new ]
|
39
|
-
|
40
|
-
resources :charges, :only => [ :create, :new ]
|
41
|
-
|
42
|
-
resources :external_payments, :only => [ :create, :new ]
|
65
|
+
resources :payment_methods, :only => [:new, :create, :show, :destroy]
|
43
66
|
|
44
|
-
scope
|
45
|
-
match
|
67
|
+
scope '/invoices' do
|
68
|
+
match '/pagination' => 'invoices#pagination', :via => :get, :as => 'invoices_pagination'
|
69
|
+
match '/:id/show_html' => 'invoices#show_html', :via => :get, :as => 'show_html_invoice'
|
70
|
+
match '/:id' => 'invoices#restful_show', :via => :get, :as => 'invoice'
|
46
71
|
end
|
47
|
-
resources :payments, :only => [ :create, :new, :index, :show ]
|
48
|
-
resources :transactions, :only => [ :create, :new ]
|
49
72
|
|
50
|
-
|
51
|
-
match "/pagination" => "payment_methods#pagination", :via => :get, :as => "payment_methods_pagination"
|
52
|
-
end
|
53
|
-
resources :payment_methods, :only => [ :index, :new, :create, :show, :destroy ]
|
54
|
-
|
55
|
-
scope "/refunds" do
|
56
|
-
match "/pagination" => "refunds#pagination", :via => :get, :as => "refunds_pagination"
|
57
|
-
end
|
58
|
-
resources :refunds, :only => [ :index, :show, :create, :new ]
|
73
|
+
resources :invoice_items, :only => [:update, :destroy]
|
59
74
|
|
60
|
-
scope
|
61
|
-
match
|
75
|
+
scope '/payments' do
|
76
|
+
match '/pagination' => 'payments#pagination', :via => :get, :as => 'payments_pagination'
|
77
|
+
match '/:id' => 'payments#restful_show', :via => :get, :as => 'payment'
|
62
78
|
end
|
63
|
-
resources :invoices, :only => [ :index, :show ] do
|
64
|
-
member do
|
65
|
-
get :show_html
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
resources :invoice_items, :only => [ :index, :show, :edit, :update, :destroy ]
|
70
79
|
|
71
|
-
scope
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
member do
|
76
|
-
put :do_transfer
|
77
|
-
get :transfer
|
78
|
-
end
|
80
|
+
scope '/bundles' do
|
81
|
+
put '/:id/do_transfer', :to => 'bundles#do_transfer', :as => 'do_transfer_bundle'
|
82
|
+
get '/:id/transfer', :to => 'bundles#transfer', :as => 'transfer_bundle'
|
83
|
+
match '/:id' => 'bundles#restful_show', :via => :get, :as => 'bundle'
|
79
84
|
end
|
80
85
|
|
81
|
-
resources :subscriptions do
|
86
|
+
resources :subscriptions, :only => [:new, :create, :show, :edit, :update, :destroy] do
|
82
87
|
member do
|
83
88
|
put :reinstate
|
84
89
|
end
|
85
90
|
end
|
86
91
|
|
87
|
-
scope
|
88
|
-
match
|
89
|
-
match "/edit" => "account_tags#edit", :via => :get, :as => "edit_account_tags"
|
90
|
-
match "/edit" => "account_tags#update", :via => :post, :as => "update_account_tags"
|
92
|
+
scope '/tags' do
|
93
|
+
match '/pagination' => 'tags#pagination', :via => :get, :as => 'tags_pagination'
|
91
94
|
end
|
95
|
+
resources :tags, :only => [:index]
|
92
96
|
|
93
|
-
|
94
|
-
match "/" => "bundle_tags#show", :via => :get, :as => "bundle_tags"
|
95
|
-
match "/edit" => "bundle_tags#edit", :via => :get, :as => "edit_bundle_tags"
|
96
|
-
match "/edit" => "bundle_tags#update", :via => :post, :as => "update_bundle_tags"
|
97
|
-
end
|
97
|
+
resources :tag_definitions, :only => [:index, :new, :create, :destroy]
|
98
98
|
|
99
|
-
scope
|
100
|
-
match
|
99
|
+
scope '/custom_fields' do
|
100
|
+
match '/pagination' => 'custom_fields#pagination', :via => :get, :as => 'custom_fields_pagination'
|
101
101
|
end
|
102
|
-
resources :
|
102
|
+
resources :custom_fields, :only => [:index, :new, :create]
|
103
103
|
|
104
|
-
scope
|
105
|
-
match
|
104
|
+
scope '/tenants' do
|
105
|
+
match '/' => 'tenants#index', :via => :get, :as => 'tenants'
|
106
|
+
match '/select_tenant' => 'tenants#select_tenant', :via => :post, :as => 'select_tenant'
|
106
107
|
end
|
107
108
|
|
108
|
-
scope
|
109
|
-
match
|
110
|
-
match "/select_tenant" => "tenants#select_tenant", :via => :post, :as => "select_tenant"
|
109
|
+
scope '/login_proxy' do
|
110
|
+
match '/check_login' => 'login_proxy#check_login', :via => :get, :as => 'check_login'
|
111
111
|
end
|
112
112
|
|
113
|
-
scope
|
114
|
-
match
|
115
|
-
|
116
|
-
|
117
|
-
scope "/home" do
|
118
|
-
match "/" => "home#index", :via => :get, :as => "home"
|
113
|
+
scope '/home' do
|
114
|
+
match '/' => 'home#index', :via => :get, :as => 'home'
|
115
|
+
match '/search' => 'home#search', :via => :get, :as => 'search'
|
119
116
|
end
|
120
117
|
|
121
118
|
resources :admin_tenants, :only => [ :index, :new, :create, :show ]
|
122
|
-
scope
|
123
|
-
match
|
124
|
-
match
|
125
|
-
match
|
126
|
-
match
|
127
|
-
match
|
128
|
-
match
|
129
|
-
match
|
119
|
+
scope '/admin_tenants' do
|
120
|
+
match '/upload_catalog' => 'admin_tenants#upload_catalog', :via => :post, :as => 'admin_tenant_upload_catalog'
|
121
|
+
match '/upload_overdue_config' => 'admin_tenants#upload_overdue_config', :via => :post, :as => 'admin_tenant_upload_overdue_config'
|
122
|
+
match '/upload_invoice_template' => 'admin_tenants#upload_invoice_template', :via => :post, :as => 'admin_tenant_upload_invoice_template'
|
123
|
+
match '/upload_invoice_translation' => 'admin_tenants#upload_invoice_translation', :via => :post, :as => 'admin_tenant_upload_invoice_translation'
|
124
|
+
match '/upload_catalog_translation' => 'admin_tenants#upload_catalog_translation', :via => :post, :as => 'admin_tenant_upload_catalog_translation'
|
125
|
+
match '/upload_plugin_config' => 'admin_tenants#upload_plugin_config', :via => :post, :as => 'admin_tenant_upload_plugin_config'
|
126
|
+
match '/remove_allowed_user' => 'admin_tenants#remove_allowed_user', :via => :delete, :as => 'remove_allowed_user'
|
130
127
|
end
|
131
128
|
|
132
129
|
resources :admin_allowed_users, :only => [ :index, :new, :create, :show ]
|
133
|
-
scope
|
134
|
-
match
|
130
|
+
scope '/admin_allowed_users' do
|
131
|
+
match '/add_tenant' => 'admin_allowed_users#add_tenant', :via => :post, :as => 'add_tenant'
|
135
132
|
end
|
136
|
-
|
137
|
-
resources :custom_fields, :only => [ :create, :new, :index, :show ]
|
138
133
|
end
|
data/kaui.gemspec
CHANGED
@@ -27,29 +27,38 @@ Gem::Specification.new do |s|
|
|
27
27
|
# Transitional gems (for rails upgrade)
|
28
28
|
s.add_dependency 'protected_attributes', '~> 1.0.6'
|
29
29
|
|
30
|
+
s.add_dependency 'js-routes', '~> 1.0.0'
|
30
31
|
s.add_dependency 'jquery-rails', '~> 3.0.4'
|
31
32
|
s.add_dependency 'jquery-datatables-rails', '~> 3.3.0'
|
32
33
|
s.add_dependency 'money-rails', '~> 1.3.0'
|
33
34
|
s.add_dependency 'd3_rails', '~> 3.2.8'
|
34
|
-
s.add_dependency 'killbill-client', '~> 0.
|
35
|
+
s.add_dependency 'killbill-client', '~> 0.22'
|
35
36
|
s.add_dependency 'twitter-bootstrap-rails', '~> 3.2.0'
|
37
|
+
s.add_dependency 'bootstrap-datepicker-rails', '~> 1.4.0'
|
36
38
|
s.add_dependency 'devise', '~> 3.4.1'
|
37
39
|
s.add_dependency 'cancan', '~> 1.6.10'
|
38
40
|
s.add_dependency 'carmen-rails', '~> 1.0.0'
|
39
41
|
s.add_dependency 'symmetric-encryption', '~> 3.6.0'
|
40
42
|
s.add_dependency 'sass-rails', '~> 5.0.2'
|
43
|
+
s.add_dependency 'less-rails', '~> 2.7.0'
|
44
|
+
s.add_dependency 'concurrent-ruby', '~> 1.0.0.pre1'
|
41
45
|
|
42
46
|
s.add_development_dependency 'fakeweb', '~> 1.3'
|
47
|
+
s.add_development_dependency 'multi_json', '~> 1.11'
|
43
48
|
s.add_development_dependency 'rake', '>= 0.8.7'
|
44
49
|
s.add_development_dependency 'pry-rails'
|
45
50
|
s.add_development_dependency 'simplecov'
|
46
51
|
|
47
52
|
if defined?(JRUBY_VERSION)
|
53
|
+
s.add_dependency 'therubyrhino', '~> 2.0.4'
|
54
|
+
|
48
55
|
s.add_development_dependency 'activerecord-jdbc-adapter', '~> 1.3.9'
|
49
56
|
s.add_development_dependency 'activerecord-jdbcmysql-adapter', '~> 1.3.9'
|
50
57
|
s.add_development_dependency 'activerecord-jdbcsqlite3-adapter', '~> 1.3.9'
|
51
58
|
s.add_development_dependency 'jdbc-mysql', '~> 5.1.25'
|
52
59
|
else
|
53
|
-
s.
|
60
|
+
s.add_dependency 'therubyracer', '~> 0.12.2'
|
61
|
+
|
62
|
+
s.add_development_dependency 'mysql2', '~> 0.3.20'
|
54
63
|
end
|
55
64
|
end
|
data/lib/kaui/engine.rb
CHANGED
@@ -6,7 +6,9 @@
|
|
6
6
|
# See also https://github.com/carlhuda/bundler/issues/49
|
7
7
|
require 'jquery-rails'
|
8
8
|
require 'jquery-datatables-rails'
|
9
|
+
require 'bootstrap-datepicker-rails'
|
9
10
|
require 'd3_rails'
|
11
|
+
require 'less-rails'
|
10
12
|
require 'json'
|
11
13
|
require 'money-rails'
|
12
14
|
require 'killbill_client'
|
@@ -14,6 +16,7 @@ require 'devise'
|
|
14
16
|
require 'cancan'
|
15
17
|
require 'carmen-rails'
|
16
18
|
require 'protected_attributes'
|
19
|
+
require 'concurrent'
|
17
20
|
|
18
21
|
module Kaui
|
19
22
|
class Engine < ::Rails::Engine
|
@@ -21,11 +24,10 @@ module Kaui
|
|
21
24
|
|
22
25
|
initializer 'kaui_engine.action_controller' do |app|
|
23
26
|
ActiveSupport.on_load :action_controller do
|
24
|
-
helper Kaui::
|
25
|
-
helper Kaui::MoneyHelper
|
26
|
-
helper Kaui::SubscriptionHelper
|
27
|
-
helper Kaui::UuidHelper
|
27
|
+
helper Kaui::Engine.helpers
|
28
28
|
end
|
29
|
+
|
30
|
+
Kaui.thread_pool = Concurrent::CachedThreadPool.new
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
data/lib/kaui/version.rb
CHANGED
data/lib/kaui.rb
CHANGED
@@ -18,9 +18,19 @@ module Kaui
|
|
18
18
|
mattr_accessor :creditcard_plugin_name
|
19
19
|
mattr_accessor :layout
|
20
20
|
|
21
|
+
mattr_accessor :thread_pool
|
22
|
+
|
23
|
+
mattr_accessor :demo_mode
|
24
|
+
|
25
|
+
mattr_accessor :root_username
|
26
|
+
mattr_accessor :root_password
|
27
|
+
mattr_accessor :root_api_key
|
28
|
+
mattr_accessor :root_api_secret
|
29
|
+
|
30
|
+
mattr_accessor :default_roles
|
31
|
+
|
21
32
|
self.home_path = lambda { Kaui::Engine.routes.url_helpers.home_path }
|
22
33
|
self.account_home_path = lambda {|account_id| Kaui::Engine.routes.url_helpers.account_path(account_id) }
|
23
|
-
self.bundle_home_path = lambda {|bundle_id| Kaui::Engine.routes.url_helpers.bundle_path(:id => bundle_id) }
|
24
34
|
self.invoice_home_path = lambda {|invoice_id| Kaui::Engine.routes.url_helpers.invoice_path(:id => invoice_id) }
|
25
35
|
self.tenant_home_path = lambda { Kaui::Engine.routes.url_helpers.tenants_path }
|
26
36
|
self.select_tenant = lambda { Kaui::Engine.routes.url_helpers.select_tenant_path }
|
@@ -30,6 +40,16 @@ module Kaui
|
|
30
40
|
self.bundle_key_display_string = lambda {|bundle_key| bundle_key }
|
31
41
|
self.creditcard_plugin_name = lambda { '__EXTERNAL_PAYMENT__' }
|
32
42
|
|
43
|
+
self.demo_mode = false
|
44
|
+
|
45
|
+
# Root credentials for SaaS operations
|
46
|
+
self.root_username = 'admin'
|
47
|
+
self.root_password = 'password'
|
48
|
+
self.root_api_key = 'bob'
|
49
|
+
self.root_api_secret = 'lazar'
|
50
|
+
|
51
|
+
# Default roles for sign-ups
|
52
|
+
self.default_roles = ['tenant_admin']
|
33
53
|
|
34
54
|
def self.is_user_assigned_valid_tenant?(user, session)
|
35
55
|
#
|
@@ -41,6 +61,9 @@ module Kaui
|
|
41
61
|
# Not tenant in the session, returns right away...
|
42
62
|
return false if session[:kb_tenant_id].nil?
|
43
63
|
|
64
|
+
# Signed-out?
|
65
|
+
return false if user.nil?
|
66
|
+
|
44
67
|
# If there is a kb_tenant_id in the session then we check if the user is allowed to access it
|
45
68
|
au = Kaui::AllowedUser.find_by_kb_username(user.kb_username)
|
46
69
|
return false if au.nil?
|
@@ -5,17 +5,20 @@ development:
|
|
5
5
|
adapter: mysql2
|
6
6
|
encoding: utf8
|
7
7
|
database: kaui
|
8
|
-
username: root
|
9
|
-
password: root
|
8
|
+
username: <%= ENV.fetch('MYSQL_USER', 'root') %>
|
9
|
+
password: <%= ENV.fetch('MYSQL_PASSWORD', 'root') %>
|
10
10
|
host: 127.0.0.1
|
11
11
|
port: 3306
|
12
|
+
pool: 25
|
13
|
+
timeout: 5000
|
12
14
|
|
13
15
|
test:
|
14
16
|
adapter: mysql2
|
17
|
+
encoding: utf8
|
15
18
|
database: kaui_test
|
16
19
|
username: <%= ENV.fetch('MYSQL_USER', 'root') %>
|
17
20
|
password: <%= ENV.fetch('MYSQL_PASSWORD', 'root') %>
|
18
21
|
host: 127.0.0.1
|
19
22
|
port: 3306
|
20
|
-
pool:
|
23
|
+
pool: 25
|
21
24
|
timeout: 5000
|
@@ -0,0 +1,74 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
3
|
+
xsi:noNamespaceSchemaLocation="CatalogSchema.xsd ">
|
4
|
+
<effectiveDate>2013-02-08T00:00:00+00:00</effectiveDate>
|
5
|
+
<catalogName>Movies</catalogName>
|
6
|
+
<recurringBillingMode>IN_ADVANCE</recurringBillingMode>
|
7
|
+
<currencies>
|
8
|
+
<currency>USD</currency>
|
9
|
+
</currencies>
|
10
|
+
<products>
|
11
|
+
<product name="Basic">
|
12
|
+
<category>BASE</category>
|
13
|
+
</product>
|
14
|
+
</products>
|
15
|
+
<rules>
|
16
|
+
<changePolicy>
|
17
|
+
<changePolicyCase>
|
18
|
+
<policy>END_OF_TERM</policy>
|
19
|
+
</changePolicyCase>
|
20
|
+
</changePolicy>
|
21
|
+
<changeAlignment>
|
22
|
+
<changeAlignmentCase>
|
23
|
+
<alignment>START_OF_BUNDLE</alignment>
|
24
|
+
</changeAlignmentCase>
|
25
|
+
</changeAlignment>
|
26
|
+
<cancelPolicy>
|
27
|
+
<cancelPolicyCase>
|
28
|
+
<productCategory>BASE</productCategory>
|
29
|
+
<policy>END_OF_TERM</policy>
|
30
|
+
</cancelPolicyCase>
|
31
|
+
</cancelPolicy>
|
32
|
+
<createAlignment>
|
33
|
+
<createAlignmentCase>
|
34
|
+
<alignment>START_OF_BUNDLE</alignment>
|
35
|
+
</createAlignmentCase>
|
36
|
+
</createAlignment>
|
37
|
+
<billingAlignment>
|
38
|
+
<billingAlignmentCase>
|
39
|
+
<alignment>ACCOUNT</alignment>
|
40
|
+
</billingAlignmentCase>
|
41
|
+
</billingAlignment>
|
42
|
+
<priceList>
|
43
|
+
<priceListCase>
|
44
|
+
<toPriceList>DEFAULT</toPriceList>
|
45
|
+
</priceListCase>
|
46
|
+
</priceList>
|
47
|
+
</rules>
|
48
|
+
<plans>
|
49
|
+
<plan name="basic-monthly">
|
50
|
+
<product>Basic</product>
|
51
|
+
<finalPhase type="EVERGREEN">
|
52
|
+
<duration>
|
53
|
+
<unit>UNLIMITED</unit>
|
54
|
+
</duration>
|
55
|
+
<recurring>
|
56
|
+
<billingPeriod>MONTHLY</billingPeriod>
|
57
|
+
<recurringPrice>
|
58
|
+
<price>
|
59
|
+
<currency>USD</currency>
|
60
|
+
<value>1000.00</value>
|
61
|
+
</price>
|
62
|
+
</recurringPrice>
|
63
|
+
</recurring>
|
64
|
+
</finalPhase>
|
65
|
+
</plan>
|
66
|
+
</plans>
|
67
|
+
<priceLists>
|
68
|
+
<defaultPriceList name="DEFAULT">
|
69
|
+
<plans>
|
70
|
+
<plan>basic-monthly</plan>
|
71
|
+
</plans>
|
72
|
+
</defaultPriceList>
|
73
|
+
</priceLists>
|
74
|
+
</catalog>
|
@@ -0,0 +1 @@
|
|
1
|
+
sports-monthly = Voiture Sport
|
@@ -0,0 +1,100 @@
|
|
1
|
+
<meta charset="UTF-8">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<style type="text/css">
|
5
|
+
th {
|
6
|
+
align: left;
|
7
|
+
width: 225px;
|
8
|
+
border-bottom: solid 2px black;
|
9
|
+
}
|
10
|
+
</style>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<h1>Tenant template: {{text.invoiceTitle}}</h1>
|
14
|
+
<table>
|
15
|
+
<tr>
|
16
|
+
<td rowspan=3 width=350px>Insert image here</td>
|
17
|
+
<td width=100px/>
|
18
|
+
<td width=225px/>
|
19
|
+
<td width=225px/>
|
20
|
+
</tr>
|
21
|
+
<tr>
|
22
|
+
<td/>
|
23
|
+
<td align=right>{{text.invoiceDate}}</td>
|
24
|
+
<td>{{invoice.formattedInvoiceDate}}</td>
|
25
|
+
</tr>
|
26
|
+
<tr>
|
27
|
+
<td/>
|
28
|
+
<td align=right>{{text.invoiceNumber}}</td>
|
29
|
+
<td>{{invoice.invoiceNumber}}</td>
|
30
|
+
</tr>
|
31
|
+
<tr>
|
32
|
+
<td>{{text.companyName}}</td>
|
33
|
+
<td></td>
|
34
|
+
<td align=right>{{text.accountOwnerName}}</td>
|
35
|
+
<td>{{account.name}}</td>
|
36
|
+
</tr>
|
37
|
+
<tr>
|
38
|
+
<td>{{text.companyAddress}}</td>
|
39
|
+
<td/>
|
40
|
+
<td/>
|
41
|
+
<td>{{account.email}}</td>
|
42
|
+
</tr>
|
43
|
+
<tr>
|
44
|
+
<td>{{text.companyCityProvincePostalCode}}</td>
|
45
|
+
<td/>
|
46
|
+
<td/>
|
47
|
+
<td>{{account.phone}}</td>
|
48
|
+
</tr>
|
49
|
+
<tr>
|
50
|
+
<td>{{text.companyCountry}}</td>
|
51
|
+
<td/>
|
52
|
+
<td/>
|
53
|
+
<td/>
|
54
|
+
</tr>
|
55
|
+
<tr>
|
56
|
+
<td><{{text.companyUrl}}</td>
|
57
|
+
<td/>
|
58
|
+
<td/>
|
59
|
+
<td/>
|
60
|
+
</tr>
|
61
|
+
</table>
|
62
|
+
<br/>
|
63
|
+
<br/>
|
64
|
+
<br/>
|
65
|
+
<table>
|
66
|
+
<tr>
|
67
|
+
<th>{{text.invoiceItemBundleName}}</th>
|
68
|
+
<th>{{text.invoiceItemDescription}}</th>
|
69
|
+
<th>{{text.invoiceItemServicePeriod}}</th>
|
70
|
+
<th>{{text.invoiceItemAmount}}</th>
|
71
|
+
</tr>
|
72
|
+
{{#invoice.invoiceItems}}
|
73
|
+
<tr>
|
74
|
+
<td>{{description}}</td>
|
75
|
+
<td>{{planName}}</td>
|
76
|
+
<td>{{formattedStartDate}}{{#formattedEndDate}} - {{formattedEndDate}}{{/formattedEndDate}}</td>
|
77
|
+
<td>{{invoice.currency}} {{amount}}</td>
|
78
|
+
</tr>
|
79
|
+
{{/invoice.invoiceItems}}
|
80
|
+
<tr>
|
81
|
+
<td colspan=4/>
|
82
|
+
</tr>
|
83
|
+
<tr>
|
84
|
+
<td colspan=2/>
|
85
|
+
<td align=right><strong>{{text.invoiceAmount}}</strong></td>
|
86
|
+
<td align=right><strong>{{invoice.chargedAmount}}</strong></td>
|
87
|
+
</tr>
|
88
|
+
<tr>
|
89
|
+
<td colspan=2/>
|
90
|
+
<td align=right><strong>{{text.invoiceAmountPaid}}</strong></td>
|
91
|
+
<td align=right><strong>{{invoice.paidAmount}}</strong></td>
|
92
|
+
</tr>
|
93
|
+
<tr>
|
94
|
+
<td colspan=2/>
|
95
|
+
<td align=right><strong>{{text.invoiceBalance}}</strong></td>
|
96
|
+
<td align=right><strong>{{invoice.balance}}</strong></td>
|
97
|
+
</tr>
|
98
|
+
</table>
|
99
|
+
</body>
|
100
|
+
</html>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
invoiceEmailSubject=Nouvelle Facture
|
2
|
+
invoiceTitle=FACTURE
|
3
|
+
invoiceDate=Date:
|
4
|
+
invoiceNumber=Facture #
|
5
|
+
invoiceAmount=Montant à payer
|
6
|
+
invoiceAmountPaid=Montant payé
|
7
|
+
invoiceBalance=Nouveau montant
|
8
|
+
|
9
|
+
accountOwnerName=Chauffeur
|
10
|
+
|
11
|
+
companyName=Killbill, Inc.
|
12
|
+
companyAddress=P.O. Box 1234
|
13
|
+
companyCityProvincePostalCode=Springfield
|
14
|
+
companyCountry=USA
|
15
|
+
companyUrl=http://killbill.io
|
16
|
+
|
17
|
+
invoiceItemBundleName=Armes
|
18
|
+
invoiceItemDescription=Description
|
19
|
+
invoiceItemServicePeriod=Période de facturation
|
20
|
+
invoiceItemAmount=Montant
|
21
|
+
|
22
|
+
processedPaymentCurrency=(*) Le payment à été payé en
|
23
|
+
processedPaymentRate=Le taux de conversion est
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<overdueConfig>
|
2
|
+
<accountOverdueStates>
|
3
|
+
<state name="OD3">
|
4
|
+
<condition>
|
5
|
+
<timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>
|
6
|
+
<unit>DAYS</unit>
|
7
|
+
<number>50</number>
|
8
|
+
</timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>
|
9
|
+
</condition>
|
10
|
+
<externalMessage>Reached OD3</externalMessage>
|
11
|
+
<blockChanges>true</blockChanges>
|
12
|
+
<disableEntitlementAndChangesBlocked>true</disableEntitlementAndChangesBlocked>
|
13
|
+
<autoReevaluationInterval>
|
14
|
+
<unit>DAYS</unit>
|
15
|
+
<number>5</number>
|
16
|
+
</autoReevaluationInterval>
|
17
|
+
</state>
|
18
|
+
<state name="OD2">
|
19
|
+
<condition>
|
20
|
+
<timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>
|
21
|
+
<unit>DAYS</unit>
|
22
|
+
<number>40</number>
|
23
|
+
</timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>
|
24
|
+
</condition>
|
25
|
+
<externalMessage>Reached OD2</externalMessage>
|
26
|
+
<blockChanges>true</blockChanges>
|
27
|
+
<disableEntitlementAndChangesBlocked>true</disableEntitlementAndChangesBlocked>
|
28
|
+
<autoReevaluationInterval>
|
29
|
+
<unit>DAYS</unit>
|
30
|
+
<number>5</number>
|
31
|
+
</autoReevaluationInterval>
|
32
|
+
</state>
|
33
|
+
<state name="OD1">
|
34
|
+
<condition>
|
35
|
+
<timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>
|
36
|
+
<unit>DAYS</unit>
|
37
|
+
<number>30</number>
|
38
|
+
</timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>
|
39
|
+
</condition>
|
40
|
+
<externalMessage>Reached OD1</externalMessage>
|
41
|
+
<blockChanges>true</blockChanges>
|
42
|
+
<disableEntitlementAndChangesBlocked>false</disableEntitlementAndChangesBlocked>
|
43
|
+
<autoReevaluationInterval>
|
44
|
+
<unit>DAYS</unit>
|
45
|
+
<number>5</number>
|
46
|
+
</autoReevaluationInterval>
|
47
|
+
</state>
|
48
|
+
</accountOverdueStates>
|
49
|
+
</overdueConfig>
|