Add client groups and family tracking
This commit is contained in:
@@ -55,6 +55,7 @@ from app.modules.core.rbac.deps import get_user_permissions, get_user_roles
|
||||
from app.modules.core.rbac.permission_guard import require_permission
|
||||
from app.modules.services.execution import list_client_visible_task_comments
|
||||
from app.modules.clients.auditor_service import build_client_auditor_card
|
||||
from app.modules.client_groups.service import get_group, list_groups
|
||||
from app.modules.clients.portal_service import (
|
||||
build_client_portal_summary,
|
||||
create_client_reply,
|
||||
@@ -173,6 +174,9 @@ def _build_form_payload(request: Request, user, scope, *, include_client_code: b
|
||||
"tenant_id": tenant_id,
|
||||
"branch_id": branch_id,
|
||||
"partner_id": partner_id,
|
||||
"client_group_id": int(form.get("client_group_id")) if form.get("client_group_id") not in (None, "", "None") else None,
|
||||
"group_relationship": form.get("group_relationship"),
|
||||
"is_group_head": _form_bool(form.get("is_group_head")),
|
||||
"default_review_partner_user_id": int(form.get("default_review_partner_user_id")) if form.get("default_review_partner_user_id") not in (None, "", "None") else None,
|
||||
"referred_by_consultant_id": int(form.get("referred_by_consultant_id")) if form.get("referred_by_consultant_id") not in (None, "", "None") else None,
|
||||
"primary_consultant_id": int(form.get("primary_consultant_id")) if form.get("primary_consultant_id") not in (None, "", "None") else None,
|
||||
@@ -260,6 +264,7 @@ def _form_options(db, scope, form_mode: str):
|
||||
"active_tenant_id": tenant_id,
|
||||
"active_branch_id": branch_id,
|
||||
"consultants": list_consultants(db, tenant_id=tenant_id, include_inactive=False) if tenant_id else [],
|
||||
"client_groups": [item["group"] for item in list_groups(db, tenant_id=tenant_id)] if tenant_id else [],
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -271,6 +276,7 @@ def _form_options(db, scope, form_mode: str):
|
||||
branch_id=None if scope.allow_cross_branch else branch_id,
|
||||
),
|
||||
"consultants": list_consultants(db, tenant_id=tenant_id, branch_id=branch_id, include_inactive=False),
|
||||
"client_groups": [item["group"] for item in list_groups(db, tenant_id=tenant_id)],
|
||||
"review_partners": repository.list_partners_for_scope(
|
||||
db,
|
||||
tenant_id=tenant_id,
|
||||
@@ -287,6 +293,7 @@ def clients_list(
|
||||
q: str = "",
|
||||
status: str = "",
|
||||
client_type: str = "",
|
||||
client_group_id: int | None = None,
|
||||
partner_id: int | None = None,
|
||||
include_archived: bool = False,
|
||||
page: int = 1,
|
||||
@@ -313,6 +320,7 @@ def clients_list(
|
||||
status=status,
|
||||
client_type=client_type,
|
||||
partner_id=partner_id,
|
||||
client_group_id=client_group_id,
|
||||
include_archived=include_archived,
|
||||
page=page,
|
||||
per_page=per_page,
|
||||
@@ -332,6 +340,7 @@ def clients_list(
|
||||
q=filters.q,
|
||||
status=filters.status,
|
||||
client_type=filters.client_type,
|
||||
client_group_id=filters.client_group_id,
|
||||
include_archived=filters.include_archived,
|
||||
page=filters.page,
|
||||
per_page=filters.per_page,
|
||||
@@ -354,6 +363,7 @@ def clients_list(
|
||||
status=filters.status,
|
||||
client_type=filters.client_type,
|
||||
partner_id=filters.partner_id,
|
||||
client_group_id=filters.client_group_id,
|
||||
include_archived=filters.include_archived,
|
||||
page=filters.page,
|
||||
per_page=filters.per_page,
|
||||
@@ -697,6 +707,7 @@ def client_detail(request: Request, client_id: int):
|
||||
can_archive=has("clients.archive"),
|
||||
can_restore=has("clients.restore"),
|
||||
consultant_summary=get_client_consultant_summary(db, tenant_id=int(row["tenant_id"]), client_id=client_id),
|
||||
client_group=get_group(db, tenant_id=int(row["tenant_id"]), group_id=int(row["client_group_id"])) if row.get("client_group_id") else None,
|
||||
can_manage_acceptance=has("clients.acceptance.manage"),
|
||||
can_approve_acceptance=has("clients.acceptance.approve"),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user