{% extends "ui/templates/base/layout.html" %} {% block content %}
{# UI/UX V2 Phase 1D.2 — preserve shared module behaviour; add Partner navigation only for Partner-role access. #} {% set _uiux_partner_role_text = (current_user_roles or [])|join('|')|lower %} {% if 'partner' in _uiux_partner_role_text %} {% include "ui/templates/components/partner_navigation_v2.html" %} {% endif %}

Engagements

Year-wise client service engagements with locking for completed years.

{% if can_manage %} {% endif %}
{% if bulk_created_count or bulk_existing_count or bulk_skipped_count %}
{% if bulk_created_count %}{{ bulk_created_count }} engagement{{ 's' if bulk_created_count != 1 else '' }} created.{% endif %} {% if bulk_existing_count %}{{ bulk_existing_count }} already existed and were preserved.{% endif %} {% if bulk_skipped_count %}{{ bulk_skipped_count }} skipped because they were unavailable or not permitted.{% endif %}
{% endif %} {% if locked_count or skipped_count %}
{% if locked_count %}{{ locked_count }} engagement{{ 's' if locked_count != 1 else '' }} locked.{% endif %} {% if skipped_count %}{{ skipped_count }} skipped because already locked or not permitted.{% endif %}
{% endif %}
{% if include_inactive %}{% endif %} {% if can_lock_engagements %}

Select completed engagements and lock them in bulk. Locked engagements become read-only history.

{% endif %}
{% if can_lock_engagements %}{% endif %} {% for row in rows %} {% if can_lock_engagements %}{% endif %} {% else %} {% endfor %}
Client Service FY / AY Due Date Type Assigned Users Status Action
{% if not row.is_locked %}{% endif %}
{{ row.client.client_name if row.client else '-' }}
{{ row.client.client_code if row.client else '' }}
{{ row.catalogue.service_name if row.catalogue else '-' }}
{{ row.catalogue.service_code if row.catalogue else '' }}
FY: {{ row.financial_year or '-' }}
AY: {{ row.assessment_year or '-' }}
Period: {{ row.period_label or '-' }}
Current: {{ row.current_due_date or '-' }}
Original: {{ row.original_due_date or '-' }}
{% if row.expiry_date %}
Expiry: {{ row.expiry_date }}
{% endif %}{% if row.due_date_source %}
{{ row.due_date_source|replace('_',' ')|title }}
{% endif %}
{{ 'Assurance' if row.engagement_type == 'assurance' else 'Non-Assurance' }}
Partner: {{ row.assigned_partner.full_name if row.assigned_partner and row.assigned_partner.full_name else (row.assigned_partner.email if row.assigned_partner else '-') }}
Performing: {{ row.performing_partner.full_name if row.performing_partner and row.performing_partner.full_name else (row.performing_partner.email if row.performing_partner else (row.assigned_partner.full_name if row.assigned_partner and row.assigned_partner.full_name else (row.assigned_partner.email if row.assigned_partner else '-'))) }}
Manager: {{ row.assigned_manager.full_name if row.assigned_manager and row.assigned_manager.full_name else (row.assigned_manager.email if row.assigned_manager else '-') }}
Staff: {{ row.assigned_staff.full_name if row.assigned_staff and row.assigned_staff.full_name else (row.assigned_staff.email if row.assigned_staff else '-') }}
Review: {{ row.review_partner.full_name if row.review_partner and row.review_partner.full_name else (row.review_partner.email if row.review_partner else '-') }}
{{ 'Locked' if row.is_locked else row.status|replace('_',' ')|title }}{% if not row.is_active %} / Inactive{% endif %} View{% if can_manage and not row.is_locked %}Edit{% endif %}
No engagements found for this financial year.
{% endblock %}