hr_lite 0.15.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +111 -0
- data/README.md +5 -1
- data/app/assets/javascripts/hr_lite/print.js +5 -0
- data/app/assets/stylesheets/hr_lite/hr_lite.css +72 -0
- data/app/controllers/hr_lite/admin/benefits_controller.rb +61 -0
- data/app/controllers/hr_lite/admin/employees_controller.rb +1 -1
- data/app/controllers/hr_lite/admin/expense_categories_controller.rb +43 -0
- data/app/controllers/hr_lite/admin/holidays_controller.rb +7 -0
- data/app/controllers/hr_lite/admin/leave_balances_controller.rb +4 -1
- data/app/controllers/hr_lite/admin/leave_requests_controller.rb +24 -1
- data/app/controllers/hr_lite/admin/payroll_line_items_controller.rb +47 -0
- data/app/controllers/hr_lite/admin/payroll_runs_controller.rb +3 -1
- data/app/controllers/hr_lite/admin/policies_controller.rb +29 -0
- data/app/controllers/hr_lite/hr_requests_controller.rb +2 -0
- data/app/controllers/hr_lite/id_cards_controller.rb +25 -0
- data/app/controllers/hr_lite/leave_requests_controller.rb +3 -1
- data/app/controllers/hr_lite/salary_slips_controller.rb +6 -6
- data/app/helpers/hr_lite/application_helper.rb +21 -6
- data/app/jobs/hr_lite/payroll_auto_draft_job.rb +4 -3
- data/app/jobs/hr_lite/slips_ready_job.rb +10 -0
- data/app/models/hr_lite/audit_log.rb +1 -1
- data/app/models/hr_lite/benefit_enrolment.rb +1 -1
- data/app/models/hr_lite/employee_profile.rb +21 -3
- data/app/models/hr_lite/hr_request.rb +12 -3
- data/app/models/hr_lite/leave_balance.rb +2 -1
- data/app/models/hr_lite/leave_request.rb +51 -19
- data/app/models/hr_lite/payroll_line_item.rb +5 -3
- data/app/models/hr_lite/payroll_run.rb +19 -3
- data/app/models/hr_lite/policy.rb +15 -0
- data/app/models/hr_lite/salary_slip.rb +6 -0
- data/app/models/hr_lite/setting.rb +1 -1
- data/app/services/hr_lite/attendance_summary.rb +12 -15
- data/app/views/hr_lite/admin/benefits/index.html.erb +65 -0
- data/app/views/hr_lite/admin/benefits/new.html.erb +37 -0
- data/app/views/hr_lite/admin/employees/_form.html.erb +5 -0
- data/app/views/hr_lite/admin/employees/show.html.erb +1 -0
- data/app/views/hr_lite/admin/expense_categories/_form.html.erb +16 -0
- data/app/views/hr_lite/admin/expense_categories/edit.html.erb +3 -0
- data/app/views/hr_lite/admin/expense_categories/index.html.erb +30 -0
- data/app/views/hr_lite/admin/expense_categories/new.html.erb +3 -0
- data/app/views/hr_lite/admin/hr_requests/show.html.erb +3 -0
- data/app/views/hr_lite/admin/leave_balances/index.html.erb +4 -0
- data/app/views/hr_lite/admin/leave_requests/index.html.erb +3 -0
- data/app/views/hr_lite/admin/leave_requests/new.html.erb +35 -0
- data/app/views/hr_lite/admin/leave_requests/show.html.erb +3 -0
- data/app/views/hr_lite/admin/leave_types/index.html.erb +1 -0
- data/app/views/hr_lite/admin/payroll_line_items/index.html.erb +47 -0
- data/app/views/hr_lite/admin/payroll_line_items/new.html.erb +42 -0
- data/app/views/hr_lite/admin/payroll_runs/show.html.erb +1 -0
- data/app/views/hr_lite/admin/policies/index.html.erb +27 -0
- data/app/views/hr_lite/admin/policies/new.html.erb +22 -0
- data/app/views/hr_lite/admin/salary_structures/_form.html.erb +5 -1
- data/app/views/hr_lite/admin/shared/_approvals_tabs.html.erb +3 -1
- data/app/views/hr_lite/id_cards/show.html.erb +86 -0
- data/app/views/hr_lite/leave_requests/index.html.erb +1 -0
- data/app/views/hr_lite/leave_requests/new.html.erb +1 -0
- data/app/views/hr_lite/salary_slips/index.html.erb +1 -1
- data/app/views/hr_lite/shared/_bell.html.erb +3 -0
- data/app/views/layouts/hr_lite/application.html.erb +6 -4
- data/config/routes.rb +9 -1
- data/db/migrate/20260927100145_add_id_card_fields_to_hr_lite_employee_profiles.rb +6 -0
- data/db/migrate/20260927101031_add_created_by_id_to_hr_lite_leave_requests.rb +5 -0
- data/db/migrate/20260929081109_add_paid_days_to_hr_lite_leave_requests.rb +5 -0
- data/lib/hr_lite/configuration.rb +15 -2
- data/lib/hr_lite/notifications.rb +10 -5
- data/lib/hr_lite/version.rb +1 -1
- data/lib/hr_lite.rb +1 -0
- metadata +38 -1
|
@@ -9,9 +9,12 @@ module HrLite
|
|
|
9
9
|
:time_zone, :currency_symbol, :on_designation_change,
|
|
10
10
|
:leadership_emails, :extra_stylesheets, :superadmin_emails,
|
|
11
11
|
:mailer_from, :public_url_base, :notification_matrix, :back_link,
|
|
12
|
-
:onboard_user, :offboard_user, :invite_url_for
|
|
12
|
+
:onboard_user, :offboard_user, :invite_url_for,
|
|
13
|
+
# ->(user) { { url:, unread: } } — shows a notifications link in
|
|
14
|
+
# the HR shell; nil (default) shows nothing.
|
|
15
|
+
:notifications
|
|
13
16
|
|
|
14
|
-
attr_reader :leave_year_start_month
|
|
17
|
+
attr_reader :leave_year_start_month, :slip_release_day
|
|
15
18
|
|
|
16
19
|
# Misconfiguration must fail at boot, not as production 500s on every
|
|
17
20
|
# balance screen. Accepts "7" (ENV-friendly) and validates 1..12.
|
|
@@ -24,6 +27,15 @@ module HrLite
|
|
|
24
27
|
@leave_year_start_month = month
|
|
25
28
|
end
|
|
26
29
|
|
|
30
|
+
# nil = an employee sees a slip the moment it is published; 10 = the
|
|
31
|
+
# October slip opens on 10 November. 1..28 so every month has that day.
|
|
32
|
+
def slip_release_day=(value)
|
|
33
|
+
day = value.presence && Integer(value)
|
|
34
|
+
raise ArgumentError, "slip_release_day must be 1..28 or nil, got #{value.inspect}" if day && !(1..28).cover?(day)
|
|
35
|
+
|
|
36
|
+
@slip_release_day = day
|
|
37
|
+
end
|
|
38
|
+
|
|
27
39
|
# 0.1.0 pre-release name for public_url_base; kept as an alias so early
|
|
28
40
|
# adopters' initializers don't break.
|
|
29
41
|
alias_method :mail_link_base, :public_url_base
|
|
@@ -64,6 +76,7 @@ module HrLite
|
|
|
64
76
|
@notification_matrix = nil # resolved lazily to Notifications::DEFAULT_MATRIX
|
|
65
77
|
@back_link = nil # optional {label:, url:} for the shell nav
|
|
66
78
|
@leave_year_start_month = 1 # 1 = calendar year; 7 = July–June leave year
|
|
79
|
+
@slip_release_day = nil # e.g. 10 = slips open on the 10th of the next month
|
|
67
80
|
|
|
68
81
|
# Leadership onboarding/offboarding. onboard_user must return a saved
|
|
69
82
|
# user record (default: create on user_class with whatever of
|
|
@@ -12,7 +12,7 @@ module HrLite
|
|
|
12
12
|
# the matrix is purely the on/off routing table.
|
|
13
13
|
module Notifications
|
|
14
14
|
DEFAULT_MATRIX = {
|
|
15
|
-
"leave.requested" => { bell: true, email:
|
|
15
|
+
"leave.requested" => { bell: true, email: true, leadership_email: true, leadership_bell: true },
|
|
16
16
|
"leave.approved" => { bell: true, email: true, leadership_email: true, leadership_bell: false },
|
|
17
17
|
"leave.rejected" => { bell: true, email: true, leadership_email: true, leadership_bell: false },
|
|
18
18
|
"leave.cancelled" => { bell: true, email: false, leadership_email: true, leadership_bell: false },
|
|
@@ -38,17 +38,18 @@ module HrLite
|
|
|
38
38
|
"expense.approved" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
39
39
|
"expense.rejected" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
40
40
|
"expense.reimbursed" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
41
|
-
"hr_request.raised" => { bell: true, email:
|
|
41
|
+
"hr_request.raised" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
42
42
|
"hr_request.assigned" => { bell: true, email: false, leadership_email: false, leadership_bell: false },
|
|
43
43
|
"hr_request.resolved" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
44
44
|
"policy.published" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
45
|
+
"holiday.published" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
45
46
|
"digest.daily" => { bell: false, email: false, leadership_email: true, leadership_bell: false },
|
|
46
47
|
"resignation.submitted" => { bell: true, email: false, leadership_email: true, leadership_bell: true },
|
|
47
48
|
"resignation.accepted" => { bell: true, email: true, leadership_email: true, leadership_bell: false },
|
|
48
49
|
"resignation.withdrawn" => { bell: true, email: false, leadership_email: true, leadership_bell: false },
|
|
49
50
|
"employee.onboarded" => { bell: true, email: true, leadership_email: true, leadership_bell: false },
|
|
50
|
-
"payroll.draft_ready" => { bell:
|
|
51
|
-
"leave.team_notice" => { bell: true, email:
|
|
51
|
+
"payroll.draft_ready" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
52
|
+
"leave.team_notice" => { bell: true, email: false, leadership_email: false, leadership_bell: false },
|
|
52
53
|
"comp_off.requested" => { bell: true, email: false, leadership_email: true, leadership_bell: true },
|
|
53
54
|
"comp_off.approved" => { bell: true, email: true, leadership_email: true, leadership_bell: false },
|
|
54
55
|
"comp_off.rejected" => { bell: true, email: true, leadership_email: false, leadership_bell: false },
|
|
@@ -72,8 +73,10 @@ module HrLite
|
|
|
72
73
|
# employee-scoped path ("Your appraisal has been shared", /appraisals/7):
|
|
73
74
|
# fanned out verbatim, leadership read them as being about themselves and
|
|
74
75
|
# followed a link their own scope 404s or resolves to their own record.
|
|
76
|
+
# `skip_leadership:` is for a delayed employee half of an event whose
|
|
77
|
+
# leadership copy already went out.
|
|
75
78
|
def publish(event, title:, body: nil, path: nil, bell_to: [], email_to: [], lines: [],
|
|
76
|
-
diff: nil, link_url: nil, leadership: {})
|
|
79
|
+
diff: nil, link_url: nil, leadership: {}, skip_leadership: false)
|
|
77
80
|
row = matrix[event.to_s]
|
|
78
81
|
unless row
|
|
79
82
|
Rails.logger.warn("[hr_lite] unknown notification event #{event}")
|
|
@@ -86,6 +89,8 @@ module HrLite
|
|
|
86
89
|
|
|
87
90
|
deliver_bells(event, row, bell_to, title, body, path)
|
|
88
91
|
deliver_emails(row, email_to, title, body, path, lines, link_url)
|
|
92
|
+
return if skip_leadership
|
|
93
|
+
|
|
89
94
|
deliver_leadership_email(event, row, lead_title, lead_body, lead_path, lines, diff)
|
|
90
95
|
deliver_leadership_bells(event, row, bell_to, lead_title, lead_body, lead_path)
|
|
91
96
|
nil
|
data/lib/hr_lite/version.rb
CHANGED
data/lib/hr_lite.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hr_lite
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.18.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- kshitiz sinha
|
|
@@ -37,6 +37,20 @@ dependencies:
|
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: rqrcode
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '3.0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '3.0'
|
|
40
54
|
description: Mountable Rails engine providing attendance with geolocation, leave management,
|
|
41
55
|
holiday calendar, Indian payroll (PF/ESI/PT/TDS) with salary-slip PDFs, kudos with
|
|
42
56
|
@mentions, appraisals and promotions — integrated into a host app via config hooks.
|
|
@@ -53,6 +67,7 @@ files:
|
|
|
53
67
|
- app/assets/javascripts/hr_lite/confirm.js
|
|
54
68
|
- app/assets/javascripts/hr_lite/geo_punch.js
|
|
55
69
|
- app/assets/javascripts/hr_lite/mention.js
|
|
70
|
+
- app/assets/javascripts/hr_lite/print.js
|
|
56
71
|
- app/assets/stylesheets/hr_lite/application.css
|
|
57
72
|
- app/assets/stylesheets/hr_lite/hr_lite.css
|
|
58
73
|
- app/controllers/hr_lite/admin/appraisals_controller.rb
|
|
@@ -60,11 +75,13 @@ files:
|
|
|
60
75
|
- app/controllers/hr_lite/admin/attendances_controller.rb
|
|
61
76
|
- app/controllers/hr_lite/admin/audit_logs_controller.rb
|
|
62
77
|
- app/controllers/hr_lite/admin/base_controller.rb
|
|
78
|
+
- app/controllers/hr_lite/admin/benefits_controller.rb
|
|
63
79
|
- app/controllers/hr_lite/admin/checklists_controller.rb
|
|
64
80
|
- app/controllers/hr_lite/admin/comp_off_requests_controller.rb
|
|
65
81
|
- app/controllers/hr_lite/admin/designation_changes_controller.rb
|
|
66
82
|
- app/controllers/hr_lite/admin/documents_controller.rb
|
|
67
83
|
- app/controllers/hr_lite/admin/employees_controller.rb
|
|
84
|
+
- app/controllers/hr_lite/admin/expense_categories_controller.rb
|
|
68
85
|
- app/controllers/hr_lite/admin/expenses_controller.rb
|
|
69
86
|
- app/controllers/hr_lite/admin/holidays_controller.rb
|
|
70
87
|
- app/controllers/hr_lite/admin/hr_requests_controller.rb
|
|
@@ -75,7 +92,9 @@ files:
|
|
|
75
92
|
- app/controllers/hr_lite/admin/loans_controller.rb
|
|
76
93
|
- app/controllers/hr_lite/admin/office_locations_controller.rb
|
|
77
94
|
- app/controllers/hr_lite/admin/overview_controller.rb
|
|
95
|
+
- app/controllers/hr_lite/admin/payroll_line_items_controller.rb
|
|
78
96
|
- app/controllers/hr_lite/admin/payroll_runs_controller.rb
|
|
97
|
+
- app/controllers/hr_lite/admin/policies_controller.rb
|
|
79
98
|
- app/controllers/hr_lite/admin/regularization_requests_controller.rb
|
|
80
99
|
- app/controllers/hr_lite/admin/reports_controller.rb
|
|
81
100
|
- app/controllers/hr_lite/admin/resignations_controller.rb
|
|
@@ -101,6 +120,7 @@ files:
|
|
|
101
120
|
- app/controllers/hr_lite/holidays_controller.rb
|
|
102
121
|
- app/controllers/hr_lite/home_controller.rb
|
|
103
122
|
- app/controllers/hr_lite/hr_requests_controller.rb
|
|
123
|
+
- app/controllers/hr_lite/id_cards_controller.rb
|
|
104
124
|
- app/controllers/hr_lite/kudos_controller.rb
|
|
105
125
|
- app/controllers/hr_lite/leave_balances_controller.rb
|
|
106
126
|
- app/controllers/hr_lite/leave_requests_controller.rb
|
|
@@ -120,6 +140,7 @@ files:
|
|
|
120
140
|
- app/jobs/hr_lite/document_expiry_job.rb
|
|
121
141
|
- app/jobs/hr_lite/leave_year_rollover_job.rb
|
|
122
142
|
- app/jobs/hr_lite/payroll_auto_draft_job.rb
|
|
143
|
+
- app/jobs/hr_lite/slips_ready_job.rb
|
|
123
144
|
- app/mailers/hr_lite/application_mailer.rb
|
|
124
145
|
- app/mailers/hr_lite/event_mailer.rb
|
|
125
146
|
- app/models/concerns/hr_lite/approvable.rb
|
|
@@ -197,6 +218,8 @@ files:
|
|
|
197
218
|
- app/views/hr_lite/admin/attendances/index.html.erb
|
|
198
219
|
- app/views/hr_lite/admin/attendances/show.html.erb
|
|
199
220
|
- app/views/hr_lite/admin/audit_logs/index.html.erb
|
|
221
|
+
- app/views/hr_lite/admin/benefits/index.html.erb
|
|
222
|
+
- app/views/hr_lite/admin/benefits/new.html.erb
|
|
200
223
|
- app/views/hr_lite/admin/checklists/index.html.erb
|
|
201
224
|
- app/views/hr_lite/admin/comp_off_requests/index.html.erb
|
|
202
225
|
- app/views/hr_lite/admin/comp_off_requests/show.html.erb
|
|
@@ -208,12 +231,17 @@ files:
|
|
|
208
231
|
- app/views/hr_lite/admin/employees/index.html.erb
|
|
209
232
|
- app/views/hr_lite/admin/employees/new.html.erb
|
|
210
233
|
- app/views/hr_lite/admin/employees/show.html.erb
|
|
234
|
+
- app/views/hr_lite/admin/expense_categories/_form.html.erb
|
|
235
|
+
- app/views/hr_lite/admin/expense_categories/edit.html.erb
|
|
236
|
+
- app/views/hr_lite/admin/expense_categories/index.html.erb
|
|
237
|
+
- app/views/hr_lite/admin/expense_categories/new.html.erb
|
|
211
238
|
- app/views/hr_lite/admin/expenses/index.html.erb
|
|
212
239
|
- app/views/hr_lite/admin/holidays/index.html.erb
|
|
213
240
|
- app/views/hr_lite/admin/hr_requests/index.html.erb
|
|
214
241
|
- app/views/hr_lite/admin/hr_requests/show.html.erb
|
|
215
242
|
- app/views/hr_lite/admin/leave_balances/index.html.erb
|
|
216
243
|
- app/views/hr_lite/admin/leave_requests/index.html.erb
|
|
244
|
+
- app/views/hr_lite/admin/leave_requests/new.html.erb
|
|
217
245
|
- app/views/hr_lite/admin/leave_requests/show.html.erb
|
|
218
246
|
- app/views/hr_lite/admin/leave_types/_form.html.erb
|
|
219
247
|
- app/views/hr_lite/admin/leave_types/edit.html.erb
|
|
@@ -227,9 +255,13 @@ files:
|
|
|
227
255
|
- app/views/hr_lite/admin/office_locations/index.html.erb
|
|
228
256
|
- app/views/hr_lite/admin/office_locations/new.html.erb
|
|
229
257
|
- app/views/hr_lite/admin/overview/index.html.erb
|
|
258
|
+
- app/views/hr_lite/admin/payroll_line_items/index.html.erb
|
|
259
|
+
- app/views/hr_lite/admin/payroll_line_items/new.html.erb
|
|
230
260
|
- app/views/hr_lite/admin/payroll_runs/index.html.erb
|
|
231
261
|
- app/views/hr_lite/admin/payroll_runs/new.html.erb
|
|
232
262
|
- app/views/hr_lite/admin/payroll_runs/show.html.erb
|
|
263
|
+
- app/views/hr_lite/admin/policies/index.html.erb
|
|
264
|
+
- app/views/hr_lite/admin/policies/new.html.erb
|
|
233
265
|
- app/views/hr_lite/admin/regularization_requests/index.html.erb
|
|
234
266
|
- app/views/hr_lite/admin/regularization_requests/show.html.erb
|
|
235
267
|
- app/views/hr_lite/admin/reports/index.html.erb
|
|
@@ -275,6 +307,7 @@ files:
|
|
|
275
307
|
- app/views/hr_lite/hr_requests/index.html.erb
|
|
276
308
|
- app/views/hr_lite/hr_requests/new.html.erb
|
|
277
309
|
- app/views/hr_lite/hr_requests/show.html.erb
|
|
310
|
+
- app/views/hr_lite/id_cards/show.html.erb
|
|
278
311
|
- app/views/hr_lite/kudos/_kudo.html.erb
|
|
279
312
|
- app/views/hr_lite/kudos/index.html.erb
|
|
280
313
|
- app/views/hr_lite/leave_balances/index.html.erb
|
|
@@ -294,6 +327,7 @@ files:
|
|
|
294
327
|
- app/views/hr_lite/salary_slips/index.html.erb
|
|
295
328
|
- app/views/hr_lite/salary_slips/pdf.html.erb
|
|
296
329
|
- app/views/hr_lite/salary_slips/show.html.erb
|
|
330
|
+
- app/views/hr_lite/shared/_bell.html.erb
|
|
297
331
|
- app/views/hr_lite/shared/_form_errors.html.erb
|
|
298
332
|
- app/views/hr_lite/shared/_pagination.html.erb
|
|
299
333
|
- app/views/hr_lite/tax_declarations/show.html.erb
|
|
@@ -337,6 +371,9 @@ files:
|
|
|
337
371
|
- db/migrate/20260818003616_create_hr_lite_documents_and_declarations.rb
|
|
338
372
|
- db/migrate/20260818004707_create_hr_lite_employee_services.rb
|
|
339
373
|
- db/migrate/20260818010401_create_hr_lite_assets_and_onboarding.rb
|
|
374
|
+
- db/migrate/20260927100145_add_id_card_fields_to_hr_lite_employee_profiles.rb
|
|
375
|
+
- db/migrate/20260927101031_add_created_by_id_to_hr_lite_leave_requests.rb
|
|
376
|
+
- db/migrate/20260929081109_add_paid_days_to_hr_lite_leave_requests.rb
|
|
340
377
|
- lib/generators/hr_lite/install/install_generator.rb
|
|
341
378
|
- lib/generators/hr_lite/install/templates/AFTER_INSTALL
|
|
342
379
|
- lib/generators/hr_lite/install/templates/initializer.rb
|