Add performing partner to clients and engagements

This commit is contained in:
A R R R Associates
2026-08-05 10:52:36 +05:30
parent 9bfc666dad
commit 5a135a65a8
16 changed files with 122 additions and 21 deletions
+19
View File
@@ -223,6 +223,7 @@ def subscription_create_page(request: Request, client_id: int | None = None):
)
enabled_services = list_enabled_services_for_assignment(db, tenant_id=tenant_id)
assignable_users = list_assignable_users(db, tenant_id=tenant_id, branch_id=branch_id)
performing_partners = list_assignable_users(db, tenant_id=tenant_id, branch_id=branch_id, role_names=("Partner",))
review_partners = list_review_partners(db, tenant_id=tenant_id, branch_id=branch_id)
return _render(
@@ -236,6 +237,7 @@ def subscription_create_page(request: Request, client_id: int | None = None):
clients=clients,
enabled_services=enabled_services,
assignable_users=assignable_users,
performing_partners=performing_partners,
review_partners=review_partners,
selected_client_id=client_id,
financial_year=_active_financial_year(request),
@@ -252,6 +254,7 @@ def subscription_create_submit(
assigned_partner_user_id: str = Form(""),
assigned_manager_user_id: str = Form(""),
assigned_staff_user_id: str = Form(""),
performing_partner_user_id: str = Form(""),
review_partner_user_id: str = Form(""),
financial_year: str = Form(""),
start_date: str = Form(""),
@@ -317,6 +320,8 @@ def subscription_create_submit(
row.branch_id = firm_selection.default_branch_id or getattr(user, "branch_id", None)
row.firm_service_selection_id = firm_selection.id
row.assigned_partner_user_id = int(assigned_partner_user_id) if assigned_partner_user_id.strip() else None
requested_performing_partner_id = int(performing_partner_user_id) if performing_partner_user_id.strip() else None
row.performing_partner_user_id = requested_performing_partner_id or getattr(client, "default_performing_partner_user_id", None) or row.assigned_partner_user_id
row.assigned_manager_user_id = int(assigned_manager_user_id) if assigned_manager_user_id.strip() else None
row.assigned_staff_user_id = int(assigned_staff_user_id) if assigned_staff_user_id.strip() else None
if review_partner_required_for_engagement(db, tenant_id=tenant_id, engagement_type=row.engagement_type):
@@ -364,6 +369,7 @@ def subscription_bulk_create_page(request: Request, error: str = ""):
)
enabled_services = list_enabled_services_for_assignment(db, tenant_id=tenant_id)
partners = list_assignable_users(db, tenant_id=tenant_id, role_names=("Partner",))
performing_partners = partners
managers = list_assignable_users(db, tenant_id=tenant_id, role_names=("Branch Manager",))
staff_users = list_assignable_users(db, tenant_id=tenant_id, role_names=("Staff",))
review_partners = list_review_partners(db, tenant_id=tenant_id)
@@ -377,6 +383,7 @@ def subscription_bulk_create_page(request: Request, error: str = ""):
clients=clients,
enabled_services=enabled_services,
partners=partners,
performing_partners=performing_partners,
client_partner_names={row.id: (row.full_name or row.email) for row in partners},
managers=managers,
staff_users=staff_users,
@@ -385,6 +392,7 @@ def subscription_bulk_create_page(request: Request, error: str = ""):
error_message={
"service": "Select a valid enabled firm service.",
"partner": "Select a valid active Partner.",
"performing_partner": "The selected Performing Partner is not available for this firm.",
"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.",
@@ -404,6 +412,7 @@ def subscription_bulk_create_submit(
assigned_partner_user_id: int = Form(...),
assigned_manager_user_id: str = Form(""),
assigned_staff_user_id: str = Form(""),
performing_partner_user_id: str = Form(""),
review_partner_user_id: str = Form(""),
financial_year: str = Form(""),
remarks: str = Form(""),
@@ -448,6 +457,7 @@ def subscription_bulk_create_submit(
review_partners = list_review_partners(db, tenant_id=tenant_id)
partner_ids = {row.id for row in partners}
performing_partner_ids = partner_ids
manager_ids = {row.id for row in managers}
staff_ids = {row.id for row in staff_users}
review_partner_ids = {row.id for row in review_partners}
@@ -455,9 +465,12 @@ def subscription_bulk_create_submit(
if assigned_partner_user_id not in partner_ids:
return RedirectResponse(url="/services/engagements/bulk-new?error=partner", status_code=303)
performing_partner_id = int(performing_partner_user_id) if performing_partner_user_id.strip() else assigned_partner_user_id
manager_id = int(assigned_manager_user_id) if assigned_manager_user_id.strip() else None
staff_id = int(assigned_staff_user_id) if assigned_staff_user_id.strip() else None
review_partner_id = int(review_partner_user_id) if review_partner_user_id.strip() else None
if performing_partner_id not in performing_partner_ids:
return RedirectResponse(url="/services/engagements/bulk-new?error=performing_partner", status_code=303)
if manager_id is not None and manager_id not in manager_ids:
return RedirectResponse(url="/services/engagements/bulk-new?error=manager", status_code=303)
if staff_id is not None and staff_id not in staff_ids:
@@ -531,6 +544,7 @@ def subscription_bulk_create_submit(
service_catalogue_id=service_catalogue_id,
firm_service_selection_id=firm_selection.id,
assigned_partner_user_id=assigned_partner_user_id,
performing_partner_user_id=performing_partner_id or getattr(client, "default_performing_partner_user_id", None) or assigned_partner_user_id,
assigned_manager_user_id=manager_id,
assigned_staff_user_id=staff_id,
review_partner_user_id=(
@@ -980,6 +994,7 @@ def subscription_edit_page(request: Request, subscription_id: int):
)
enabled_services = list_enabled_services_for_assignment(db, tenant_id=tenant_id)
assignable_users = list_assignable_users(db, tenant_id=tenant_id, branch_id=branch_id)
performing_partners = list_assignable_users(db, tenant_id=tenant_id, branch_id=branch_id, role_names=("Partner",))
review_partners = list_review_partners(db, tenant_id=tenant_id, branch_id=branch_id)
return _render(
request,
@@ -992,6 +1007,7 @@ def subscription_edit_page(request: Request, subscription_id: int):
clients=clients,
enabled_services=enabled_services,
assignable_users=assignable_users,
performing_partners=performing_partners,
review_partners=review_partners,
selected_client_id=row.client_id,
financial_year=row.financial_year,
@@ -1007,6 +1023,7 @@ def subscription_edit_submit(
assigned_partner_user_id: str = Form(""),
assigned_manager_user_id: str = Form(""),
assigned_staff_user_id: str = Form(""),
performing_partner_user_id: str = Form(""),
review_partner_user_id: str = Form(""),
start_date: str = Form(""),
end_date: str = Form(""),
@@ -1038,6 +1055,8 @@ def subscription_edit_submit(
return RedirectResponse(url=f"/services/engagements/{row.id}?year_locked=1", status_code=303)
row.assigned_partner_user_id = int(assigned_partner_user_id) if assigned_partner_user_id.strip() else None
requested_performing_partner_id = int(performing_partner_user_id) if performing_partner_user_id.strip() else None
row.performing_partner_user_id = requested_performing_partner_id or getattr(row.client, "default_performing_partner_user_id", None) or row.assigned_partner_user_id
row.assigned_manager_user_id = int(assigned_manager_user_id) if assigned_manager_user_id.strip() else None
row.assigned_staff_user_id = int(assigned_staff_user_id) if assigned_staff_user_id.strip() else None
if review_partner_required_for_engagement(db, tenant_id=tenant_id, engagement_type=row.engagement_type):