{% extends "base_authenticated.html" %} {% block title %}Payroll Dashboard - Working Hours{% endblock %} {% block extra_head %} {% endblock %} {% block content %}
Back to Dashboard

Payroll Dashboard

Calculate employee working hours and generate payroll reports

Calculation Parameters

{% if working_hours_data %}

Working Hours Summary

{{ working_hours_data.employee_count }}

Total Employees

{{ "%.1f"|format(working_hours_data.employees.values() | map(attribute='grand_totals.total_hours') | sum) }}

Total Hours

{{ "%.1f"|format(working_hours_data.employees.values() | map(attribute='grand_totals.regular_hours') | sum) }}

Regular Hours

{{ "%.1f"|format(working_hours_data.employees.values() | map(attribute='grand_totals.overtime_hours') | sum) }}

Overtime Hours

{% for employee_id, emp_data in working_hours_data.employees.items() %} {% endfor %}
Employee ID Employee Name Total Hours Regular Hours Overtime Hours Working Days Status
{{ employee_id }} {{ employee_names.get(employee_id, 'Employee ' + employee_id) }} {{ "%.2f"|format(emp_data.grand_totals.total_hours) }} hrs {{ "%.2f"|format(emp_data.grand_totals.regular_hours) }} hrs {% if emp_data.grand_totals.overtime_hours > 0 %} {{ "%.2f"|format(emp_data.grand_totals.overtime_hours) }} hrs {% else %} 0.00 hrs {% endif %} {% set working_days = emp_data.daily_hours.values() | selectattr('total_hours', '>', 0) | list | length %} {{ working_days }} days {% set miss_punches = emp_data.daily_hours.values() | selectattr('is_miss_punch', 'equalto', true) | list | length %} {% if miss_punches > 0 %} {{ miss_punches }} miss punch(es) {% else %} Complete {% endif %}
Report Details:
Period: {{ working_hours_data.period_start }} to {{ working_hours_data.period_end }}
Generated: {{ working_hours_data.calculation_date }}
{% else %}

{% if date_from and date_to %} No attendance records found for the selected date range.
Please try a different date range or check if attendance data has been recorded. {% else %} Please select a date range to calculate working hours. {% endif %}
{% endif %}
{% endblock %}