My Attendance

Punch in/out and view your recent attendance records.

Open Full Attendance Page
{% if not employee %}
Your login is not linked to an employee profile yet. Please request employee linkage first.
{% else %}
Today
{{ today_attendance.attendance_date if today_attendance else 'Not marked' }}
Punch In
{{ today_attendance.punch_in_local_at.strftime('%H:%M') if today_attendance and today_attendance.punch_in_local_at else (today_attendance.punch_in_utc.strftime('%H:%M UTC') if today_attendance and today_attendance.punch_in_utc else '-') }}
Punch Out
{{ today_attendance.punch_out_local_at.strftime('%H:%M') if today_attendance and today_attendance.punch_out_local_at else (today_attendance.punch_out_utc.strftime('%H:%M UTC') if today_attendance and today_attendance.punch_out_utc else '-') }}
{% include "modules/employees/templates/employees/portal_partials/attendance_punch_card.html" %}
{% for row in attendance_rows %} {% else %} {% endfor %}
DatePunch InPunch OutDurationStatusApprovalGeo/IP
{{ row.attendance_date }} {{ 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 '-') }} {{ 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.work_duration_minutes ~ ' min') if row.work_duration_minutes else '-' }} {{ row.status.replace('_',' ').title() }} {{ row.approval_status.replace('_',' ').title() }}
Geo: {{ (row.punch_in_geo_status or '-').replace('_',' ').title() }}
IP: {{ (row.punch_in_ip_status or '-').replace('_',' ').title() }}
No attendance records available yet.
{% endif %}