{% extends "ui/templates/base/layout.html" %} {% block content %}
{{ service.service_code }} · {{ service.service_name }} {% if selection and selection.default_branch_id %} · Default Branch ID {{ selection.default_branch_id }}{% endif %}
Use the exported workbook for this service. Re-import updates by service code + sequence number and preserves all other ERP features.
Firm-level service selection controls whether these task templates are used.
Tasks customised for the active firm.
Inherited defaults stay synchronized automatically; customized tasks require Firm Admin approval before a later system update is applied.
Create a task template for this firm and service.
Adds missing active tasks and refreshes pending/not-started role and assignee. Completed tasks, evidence, comments, review history and locked engagements are preserved.
These tasks will be used when work is generated for this firm.
| Seq | Task | Role | Flags | Document Requirements | Template Uploads | |
|---|---|---|---|---|---|---|
|
{{ task.sequence_no }}
{% if can_manage_tasks %}
|
{{ task.task_name }}
{% if task.source_system_task_id %}
{% if task.is_customized %}Customized{% else %}System inherited{% endif %}
{% else %}
Firm-only
{% endif %}
{% if task.system_update_available %}System update available{% endif %}
{% if task.system_update_available %}
{% set changes = system_update_diff_map.get(task.id, []) if system_update_diff_map else [] %}
A newer system default is available. Your firm customization has not been overwritten.
{% if changes %}
{% for change in changes[:5] %}
{% endif %}
{% if can_manage_tasks %}
{{ change.label }}: {{ change.firm if change.firm is not none else '-' }} → {{ change.system if change.system is not none else '-' }}
{% endfor %}
{% if changes|length > 5 %}+ {{ changes|length - 5 }} more change(s) {% endif %}
Category: {{ task.task_category }} {% endif %}
{% if task.description %}{{ task.description }} {% endif %}
|
{{ task.default_role_name or '-' }} Eligible: {{ task.eligible_role_names or task.default_role_name or '-' }} |
{% if task.task_category %}{{ task.task_category }}{% endif %}{% if task.task_tool_code and task.task_tool_code != "NONE" %}Tool: {{ task.task_tool_code|replace("_"," ")|title }}{% endif %}
{% if task.is_mandatory %}Mandatory{% endif %}
{% if task.requires_review %}Review: {{ (task.normal_review_role or "manager").replace("_"," ").title() }}{% endif %}
{% if task.is_aqmm_task %}AQMM{% endif %}
{% if task.aqmm_mandatory %}AQMM Mandatory{% endif %}
{% if task.aqmm_evidence_required %}Evidence{% endif %}
{% if task.aqmm_blocks_final_release %}Final Gate{% endif %}
{{ 'Active' if task.is_active else 'Inactive' }}
|
{% set reqs = task_requirement_map.get(task.id, []) if task_requirement_map else [] %}
{% for req in reqs %}
{% if can_manage_tasks %}
{% endif %}
{{ req.document_name }}
{{ req.document_type.replace('_',' ').title() }} · {{ 'Mandatory' if req.is_mandatory else 'Optional' }} · {{ 'Active' if req.is_active else 'Inactive' }}
{% if can_manage_tasks %}
{% endif %}
|
{% set files = task_template_file_map.get(task.id, []) if task_template_file_map else [] %}
{% for tpl in files %}
{% if can_manage_tasks %}
{% endif %}
{{ tpl.template_name }}
{% else %}No template files{% endfor %}
{{ tpl.template_category or 'Template' }} · {{ tpl.original_filename }} |
{% if can_manage_tasks %} {% endif %} |
| No firm task templates yet. Copy defaults or add tasks manually. | ||||||