{% extends "base.html" %} {% block content %}

Biometric Sync Detail – {{ run.sync_date }}

Status: {% if run.status == 'success' %} SUCCESS {% elif run.status == 'error' %} ERROR {% elif run.status == 'skipped' %} SKIPPED {% else %} {{ run.status|upper }} {% endif %}  |  {{ run.punches_saved }} punches
Back to list
Source: {{ run.source_type }} / {{ run.source_name }}
Started: {{ run.started_at }}
Ended: {{ run.ended_at }}
{% if run.message %}
Message: {{ run.message }}
{% endif %}
Punches by employee (IN/OUT ordered by time)
{% if grouped %} {% for key, data in grouped.items() %}
{% if data.employee %} {{ data.employee.employee_code }} - {{ data.employee.full_name }} {% else %} {{ data.external_code }} Not mapped {% endif %}
{{ data.punches|length }} punch(es)
{% for p in data.punches %} {% endfor %}
# Punch time Direction Device
{{ loop.index }} {{ p.punch_time }} {{ p.direction or '-' }} {{ p.device_code or '-' }}
{% endfor %} {% else %}
No punches stored for this sync run.
{% endif %}
{% endblock %}