Integrate audit checklist responses into service tasks

This commit is contained in:
A R R R Associates
2026-07-19 21:59:24 +05:30
parent 05b736b6c9
commit df52845194
10 changed files with 383 additions and 10 deletions
@@ -0,0 +1,47 @@
"""add structured checklist fields to service tasks
Revision ID: 20260719_task_checklist_fields
Revises: 20260713_bank_stmt_queue
"""
from alembic import op
import sqlalchemy as sa
revision = "20260719_task_checklist_fields"
down_revision = "20260713_bank_stmt_queue"
branch_labels = None
depends_on = None
_TEMPLATE_TABLES = ("service_default_task_templates", "firm_service_task_templates")
def upgrade():
for table in _TEMPLATE_TABLES:
op.add_column(table, sa.Column("task_category", sa.String(length=100), nullable=True))
op.add_column(table, sa.Column("response_required", sa.Boolean(), nullable=False, server_default=sa.false()))
op.add_column(table, sa.Column("response_type", sa.String(length=20), nullable=False, server_default="NONE"))
op.add_column(table, sa.Column("evidence_required", sa.Boolean(), nullable=False, server_default=sa.false()))
op.add_column(table, sa.Column("remarks_required_if_no", sa.Boolean(), nullable=False, server_default=sa.false()))
op.create_index(f"ix_{table}_task_category", table, ["task_category"], unique=False)
table = "client_service_task_instances"
op.add_column(table, sa.Column("task_category", sa.String(length=100), nullable=True))
op.add_column(table, sa.Column("response_required", sa.Boolean(), nullable=False, server_default=sa.false()))
op.add_column(table, sa.Column("response_type", sa.String(length=20), nullable=False, server_default="NONE"))
op.add_column(table, sa.Column("evidence_required", sa.Boolean(), nullable=False, server_default=sa.false()))
op.add_column(table, sa.Column("remarks_required_if_no", sa.Boolean(), nullable=False, server_default=sa.false()))
op.add_column(table, sa.Column("checklist_response", sa.String(length=10), nullable=True))
op.add_column(table, sa.Column("checklist_text_response", sa.Text(), nullable=True))
op.add_column(table, sa.Column("checklist_number_response", sa.Numeric(18, 2), nullable=True))
op.add_column(table, sa.Column("checklist_date_response", sa.Date(), nullable=True))
op.add_column(table, sa.Column("checklist_remarks", sa.Text(), nullable=True))
op.create_index("ix_client_service_task_instances_task_category", table, ["task_category"], unique=False)
def downgrade():
table = "client_service_task_instances"
op.drop_index("ix_client_service_task_instances_task_category", table_name=table)
for column in ("checklist_remarks", "checklist_date_response", "checklist_number_response", "checklist_text_response", "checklist_response", "remarks_required_if_no", "evidence_required", "response_type", "response_required", "task_category"):
op.drop_column(table, column)
for table in reversed(_TEMPLATE_TABLES):
op.drop_index(f"ix_{table}_task_category", table_name=table)
for column in ("remarks_required_if_no", "evidence_required", "response_type", "response_required", "task_category"):
op.drop_column(table, column)