{% extends "base.html" %} {% block title %}Staff Allocation - Architecture PM System{% endblock %} {% block content %}

Staff Allocation

Total Allocations

{{ allocations|length }}

Total Hours Allocated

{{ "{:,.0f}".format(allocations|sum(attribute='hours_allocated')|default(0)) }}

Total Hours Worked

{{ "{:,.0f}".format(allocations|sum(attribute='hours_worked')|default(0)) }}

Avg Utilization
{% set total_allocated = allocations|sum(attribute='hours_allocated')|default(1) %} {% set total_worked = allocations|sum(attribute='hours_worked')|default(0) %}

{{ "{:.1f}".format((total_worked / total_allocated * 100) if total_allocated > 0 else 0) }}%

{% for alloc in allocations %} {% endfor %}
ID Project Milestone Employee Role Category Hours Allocated Hours Worked Utilization % Rate (AED/hr) Cost (AED) Skill Match Availability Performance Start Date End Date Actions
{{ alloc.allocation_id }} {{ alloc.project_id }} {{ alloc.milestone_name or '-' }} {{ alloc.employee_name }}
{{ alloc.employee_id }}
{{ alloc.role }} {{ alloc.category or '-' }} {{ alloc.hours_allocated }} {{ alloc.hours_worked }} {% set utilization = (alloc.hours_worked / alloc.hours_allocated * 100) if alloc.hours_allocated > 0 else 0 %}
{{ "{:.0f}".format(utilization) }}%
{{ alloc.hourly_rate_aed }} {{ "{:,.2f}".format(alloc.hours_worked * alloc.hourly_rate_aed) }} {% if alloc.skill_match_score %} {{ alloc.skill_match_score }} {% else %} - {% endif %} {% if alloc.availability_status == 'AVAILABLE' %} Available {% elif alloc.availability_status == 'BUSY' %} Busy {% elif alloc.availability_status == 'PARTIALLY_AVAILABLE' %} Partial {% elif alloc.availability_status == 'ON_LEAVE' %} On Leave {% else %} {{ alloc.availability_status or '-' }} {% endif %} {% if alloc.performance_rating == 'EXCELLENT' %} ⭐⭐⭐⭐⭐ {% elif alloc.performance_rating == 'GOOD' %} ⭐⭐⭐⭐ {% elif alloc.performance_rating == 'AVERAGE' %} ⭐⭐⭐ {% elif alloc.performance_rating == 'NEEDS_IMPROVEMENT' %} ⭐⭐ {% elif alloc.performance_rating == 'POOR' %} {% else %} - {% endif %} {{ alloc.start_date }} {{ alloc.end_date or '-' }}
{% endblock %}