|
@@ -467,6 +467,18 @@ def _normalize_contract_links(links: Optional[list[PlanContractLink]]) -> list[P
|
|
|
return out
|
|
return out
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+def assert_at_most_one_contract(
|
|
|
|
|
+ links: list[PlanContractLink],
|
|
|
|
|
+ side_label: str,
|
|
|
|
|
+) -> list[PlanContractLink]:
|
|
|
|
|
+ if len(links) > 1:
|
|
|
|
|
+ raise HTTPException(
|
|
|
|
|
+ status_code=422,
|
|
|
|
|
+ detail=f"{side_label}只能选择 1 份",
|
|
|
|
|
+ )
|
|
|
|
|
+ return links
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def _resolve_stop_contracts(
|
|
def _resolve_stop_contracts(
|
|
|
db: Session,
|
|
db: Session,
|
|
|
tenant_no: str,
|
|
tenant_no: str,
|
|
@@ -478,6 +490,7 @@ def _resolve_stop_contracts(
|
|
|
if is_internal_customer_name(customer_name):
|
|
if is_internal_customer_name(customer_name):
|
|
|
return []
|
|
return []
|
|
|
links = _normalize_contract_links(contracts)
|
|
links = _normalize_contract_links(contracts)
|
|
|
|
|
+ links = assert_at_most_one_contract(links, side_label)
|
|
|
if not links:
|
|
if not links:
|
|
|
return []
|
|
return []
|
|
|
resolved: list[PlanContractLink] = []
|
|
resolved: list[PlanContractLink] = []
|