diff --git a/app/modules/services/engagements_ui.py b/app/modules/services/engagements_ui.py index bca543b..06cc8d0 100644 --- a/app/modules/services/engagements_ui.py +++ b/app/modules/services/engagements_ui.py @@ -388,6 +388,7 @@ def subscription_bulk_create_page(request: Request, error: str = ""): "manager": "The selected Manager is not available for this firm.", "staff": "The selected Staff member is not available for this firm.", "review_partner": "The selected Review Partner is not available for this firm.", + "review_partner_required": "Review Partner is mandatory for an assurance engagement.", "clients": "Select at least one permitted client.", }.get(error), ) @@ -492,11 +493,19 @@ def subscription_bulk_create_submit( return RedirectResponse(url="/services/engagements/bulk-new?error=clients", status_code=303) engagement_type = getattr(firm_selection.catalogue, "engagement_type", "non_assurance") or "non_assurance" - requires_review_partner = review_partner_required_for_engagement( + normalized_engagement_type = str(engagement_type).strip().lower().replace("-", "_").replace(" ", "_") + assurance_review_partner_required = normalized_engagement_type == "assurance" + workflow_review_partner_required = review_partner_required_for_engagement( db, tenant_id=tenant_id, engagement_type=engagement_type, ) + requires_review_partner = assurance_review_partner_required or workflow_review_partner_required + if assurance_review_partner_required and review_partner_id is None: + return RedirectResponse( + url="/services/engagements/bulk-new?error=review_partner_required", + status_code=303, + ) for client_id in selected_client_ids: existing = get_existing_subscription( @@ -525,9 +534,13 @@ def subscription_bulk_create_submit( assigned_manager_user_id=manager_id, assigned_staff_user_id=staff_id, review_partner_user_id=( - review_partner_id or getattr(client, "default_review_partner_user_id", None) - if requires_review_partner - else None + review_partner_id + if review_partner_id is not None + else ( + getattr(client, "default_review_partner_user_id", None) + if requires_review_partner + else None + ) ), financial_year=selected_financial_year, assessment_year=assessment_year_from_financial_year(selected_financial_year), diff --git a/app/modules/services/templates/services/engagements/bulk_form.html b/app/modules/services/templates/services/engagements/bulk_form.html index 9c044e1..7f5c858 100644 --- a/app/modules/services/templates/services/engagements/bulk_form.html +++ b/app/modules/services/templates/services/engagements/bulk_form.html @@ -60,13 +60,16 @@ -
Used only when the selected service is an assurance engagement and the firm setup requires a review partner.
+Optional for non-assurance engagements. A selected Review Partner is saved for every engagement created in this batch.