Employee opens portal attendance, selects the affected date, requests the correct status or times, and explains why the existing record is wrong.
source: employee_disputeAttendance Issue Flow
Deep workflow guide for employee-raised attendance issues such as present-but-marked-absent, with HR triage, manager routing, tenant-admin final approval, and local Mailpit verification.
Users with triage attendance issues validate logs, roster, manager context, or branch evidence before the normal approval path starts.
Manager review happens only after HR accepts triage and only when the employee has an approval manager in the configured workflow.
stage: pending_managerTenant admin approval is the mutation point. The attendance record remains unchanged until this final decision is approved.
status: approvedEmployee Was Present But Marked Absent
This is the HR-first issue path for a real attendance dispute, not a routine missing checkout correction.
What the employee submits
The request is saved as employee_dispute, moves to pending_hr, and creates an hr_review approval step.
What HR sees first
Rejecting HR triage routes the issue to the configured final authority and leaves attendance untouched. Accepting triage sends it into the configured manager or tenant-admin approval path.
States And Mutation Rules
These values are the operational contract for filters, labels, approvals, notifications, and tests.
employee_disputeEmployee-raised issue against an already marked attendance record.
pending_hrThe request waits for HR/attendance triage before normal approval.
hr_reviewThe approval-step row that records HR accept or reject triage.
pending_managerUsed after HR accepts triage when manager approval is part of the route.
pending_tenant_adminFinal approval queue before any attendance record mutation.
approved / rejectedApproved changes attendance; rejected keeps the original attendance record.
Who Can Do What
The flow is permission based. It does not require a hard-coded HR role name.
Submit issue
Can submit date, requested status, requested times, and reason from employee portal attendance.
Triage first
Needs triage attendance issues. Accepts triage into approval or rejects it with no record change.
Review after HR
Cannot bypass pending_hr unless also granted the triage permission.
Final authority
Admin has triage permission by default and remains the final approval before attendance changes.
Review Guardrails
- HR reject records a triage recommendation and routes the issue to the configured final authority.
- HR accept only advances the issue; it does not mutate attendance.
- The HR setting
attendance_issue_final_authoritychooses employee manager or tenant admin final review. - The configured final authority updates or rejects the issue; attendance changes only on final approval.
- Payroll locks and sensitive duplicate rules still apply to the final attendance mutation.
Mailpit Verification
Use Mailpit locally so triage, approval, and rejection notifications can be checked without sending real mail.
Start Mailpit with SMTP on 127.0.0.1:1025 and UI on http://127.0.0.1:8025.
Use the local host and port in settings or env values. See SMTP Setup.
Create a present-but-marked-absent issue, accept/reject triage, and confirm the captured emails in Mailpit.
Where This Connects
Use the main Attendance page for day view, row save, staged bulk save, Swal/toastr behavior, manual records, and analytics. Use this page when the question is about employee-raised attendance issues and approval routing.
Main docs show essential fields only. Open Documentation Coverage for every detected source field, action, column, route hint, controller hint, and test hint.