فهرست منبع

feat(pl): persist create_date on plan create APIs

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 3 ماه پیش
والد
کامیت
349e031790
2فایلهای تغییر یافته به همراه21 افزوده شده و 2 حذف شده
  1. 10 2
      backend/app/api/pl/plan.py
  2. 11 0
      backend/tests/test_pl_plan_create_date.py

+ 10 - 2
backend/app/api/pl/plan.py

@@ -87,6 +87,10 @@ router = APIRouter(prefix="/plan", tags=["运输计划-计划管理"])
 _PLAN_NO_SEQ_WIDTH = 3
 
 
+def _resolve_create_date(value: Optional[date]) -> date:
+    return value or date.today()
+
+
 def _generate_plan_no(db: Session) -> str:
     """生成计划编号 POYYYYMMDD###(当日 3 位序号,每日重置)"""
     today = date.today()
@@ -397,6 +401,7 @@ def create_plan(
         id=generate_uuid(),
         tenant_no=tenant_no,
         plan_no=plan_no,
+        create_date=_resolve_create_date(payload.create_date),
         plan_date=payload.plan_date,
         belongs_company=payload.belongs_company,
         plan_type=plan_type,
@@ -479,6 +484,7 @@ def create_plan_full(
         id=generate_uuid(),
         tenant_no=tenant_no,
         plan_no=plan_no,
+        create_date=_resolve_create_date(payload.create_date),
         plan_date=payload.plan_date,
         belongs_company=payload.belongs_company,
         plan_type=plan_type,
@@ -599,6 +605,7 @@ def create_from_contract(
         id=generate_uuid(),
         tenant_no=tenant_no,
         plan_no=plan_no,
+        create_date=_resolve_create_date(payload.create_date),
         plan_date=payload.plan_date,
         belongs_company=contract.belongs_company or "shanxia",
         plan_type=plan_type,
@@ -611,9 +618,10 @@ def create_from_contract(
         supplier_id=contract.supplier_id,
         supplier_name=(contract.party_a or contract.supplier_name or "").strip() or None,
         destination_id=contract.customer_id,
-        destination_name=(contract.party_b or contract.customer_name or "").strip() or None,
+        # 客户名称严格跟合同「客户名称」;目的地名称与客户保持一致(不再取需方可章名 party_b)
+        destination_name=(contract.customer_name or "").strip() or None,
         customer_id=contract.customer_id,
-        customer_name=(contract.party_b or contract.customer_name or "").strip() or None,
+        customer_name=(contract.customer_name or "").strip() or None,
         contact_name=contract.contact_name,
         contact_phone=contract.contact_phone,
         party_a=contract.party_a,

+ 11 - 0
backend/tests/test_pl_plan_create_date.py

@@ -0,0 +1,11 @@
+from datetime import date
+
+from app.api.pl.plan import _resolve_create_date
+
+
+def test_resolve_create_date_uses_explicit():
+    assert _resolve_create_date(date(2026, 1, 15)) == date(2026, 1, 15)
+
+
+def test_resolve_create_date_defaults_today():
+    assert _resolve_create_date(None) == date.today()