{% extends "ui/templates/base/layout.html" %} {% block content %}

Task Categories

{{ service.service_code }} · {{ service.service_name }} · {{ 'System defaults' if system_scope else 'Current firm' }}

{% if request.query_params.get('created') %}
Task category created.
{% endif %} {% if request.query_params.get('updated') %}
Task category updated. Linked task templates keep the same grouping name.
{% endif %} {% if request.query_params.get('imported') %}
Task Category Excel imported successfully. Created {{ request.query_params.get('created', '0') }} and updated {{ request.query_params.get('updated', '0') }} categories.
{% endif %} {% if request.query_params.get('import_error') %}
Task Category import was not applied because {{ request.query_params.get('import_error') }} row(s) failed validation. Correct the workbook and import it again; no partial category changes were committed.
{% endif %} {% if request.query_params.get('error') %}
Unable to save this category. Check the code/name and try again.
{% endif %} {% if can_manage %}

Excel Import / Export

Export the current category master, edit it in Excel and import it back. Categories are matched by service_code + category_code; the stable category code can then be used in Task Excel through task_category_code. Existing name-only task imports remain supported.

Excel columns: service_code, category_code, category_name, sort_order, is_active. Import never deletes categories omitted from the workbook.

Add Task Category

{% endif %}
{% for row in rows %} {% if can_manage %} {% else %} {% endif %} {% else %} {% endfor %}
Order Code Category Status
{{ row.sort_order }} {{ row.code }} {{ row.name }} {{ 'Active' if row.is_active else 'Inactive' }}
No task categories yet. Export Excel to get the correct column format, fill the categories and import it here, or add them manually above.
{% endblock %}