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