{% extends "ui/templates/base/layout.html" %} {% block content %} {% include "modules/managers/templates/managers/_manager_tabs.html" %}
Review employee attendance, filter records, and manually mark attendance where required.
| Date | Employee | Punch | Status | Approval | Timing | Geo/IP Evidence | Remarks | Action |
|---|---|---|---|---|---|---|---|---|
| {{ row.attendance_date }} | {{ row.employee.full_name if row.employee else ('Employee #' ~ row.employee_id) }} {{ row.employee.employee_code if row.employee else '' }} |
In: {{ row.punch_in_local_at.strftime('%H:%M') if row.punch_in_local_at else (row.punch_in_utc.strftime('%H:%M UTC') if row.punch_in_utc else '-') }} Out: {{ row.punch_out_local_at.strftime('%H:%M') if row.punch_out_local_at else (row.punch_out_utc.strftime('%H:%M UTC') if row.punch_out_utc else '-') }} |
{{ row.status.replace('_',' ').title() }} | {{ row.approval_status.title() }} |
TZ: {{ row.branch_timezone or 'Asia/Kolkata' }}
Rule: {{ (row.attendance_rule_status or '-').replace('_',' ').title() }}
Late: {{ (row.late_by_minutes ~ ' min') if row.late_by_minutes else '-' }}
Weekly Off: {{ 'Yes' if row.is_weekly_off else 'No' }}
|
Source: {{ (row.source or '-').replace('_',' ').title() }}
Geo: {{ (row.punch_in_geo_status or '-').replace('_',' ').title() }}
Distance: {{ (row.punch_in_distance_meters ~ ' m') if row.punch_in_distance_meters is not none else '-' }}
IP: {{ (row.punch_in_ip_status or '-').replace('_',' ').title() }}
|
{{ row.remarks or row.review_notes or '-' }} | {% if can_approve_employee_attendance(current_user, current_user_permissions, current_user_roles) %} {% else %}-{% endif %} |
| No attendance records found. | ||||||||