This commit is contained in:
2026-07-30 11:01:00 +08:00
parent 853c478657
commit a330757946
4 changed files with 141 additions and 1 deletions
+5 -1
View File
@@ -59,7 +59,11 @@ from .material_schemas import (
from .purchase_demand_schemas import (
PurchaseDemandCalculateRequest,
PurchaseDemandItemResponse,
PurchaseDemandResponse
PurchaseDemandResponse,
PurchaseDemandConvertItem,
PurchaseDemandConvertRequest,
PurchaseOrderCreatedResponse,
PurchaseDemandConvertResponse
)
from .common_schemas import PaginatedResponse
@@ -5,6 +5,7 @@
from pydantic import BaseModel, Field
from decimal import Decimal
from typing import Optional, List
from datetime import date
class PurchaseDemandCalculateRequest(BaseModel):
@@ -34,3 +35,34 @@ class PurchaseDemandResponse(BaseModel):
shortage_count: int = Field(default=0, description="缺货物料种类数")
source_order_ids: List[int] = Field(default_factory=list, description="来源销售订单ID")
source_order_nos: List[str] = Field(default_factory=list, description="来源销售订单编号")
class PurchaseDemandConvertItem(BaseModel):
"""待转采购单的单条需求"""
material_id: int
quantity: Decimal = Field(..., gt=0, description="采购数量(通常取缺口量)")
unit_cost: Decimal = Field(..., ge=0, description="单价")
supplier_id: int
class PurchaseDemandConvertRequest(BaseModel):
"""一键生成采购单请求(按 supplier_id 分组,每组生成一张草稿采购单)"""
items: List[PurchaseDemandConvertItem] = Field(..., min_length=1)
expected_date: Optional[date] = None
remark: Optional[str] = None
class PurchaseOrderCreatedResponse(BaseModel):
"""已创建的采购单摘要"""
purchase_order_id: int
order_no: str
supplier_id: int
supplier_name: str
item_count: int
total_amount: Decimal
class PurchaseDemandConvertResponse(BaseModel):
"""一键生成采购单结果"""
created_orders: List[PurchaseOrderCreatedResponse] = Field(default_factory=list)
skipped: int = Field(default=0, description="因数量<=0被跳过的条目数")