xxx
This commit is contained in:
@@ -56,6 +56,11 @@ from .material_schemas import (
|
||||
MaterialSupplierResponse,
|
||||
MaterialPriceTrendResponse
|
||||
)
|
||||
from .purchase_demand_schemas import (
|
||||
PurchaseDemandCalculateRequest,
|
||||
PurchaseDemandItemResponse,
|
||||
PurchaseDemandResponse
|
||||
)
|
||||
|
||||
from .common_schemas import PaginatedResponse
|
||||
|
||||
@@ -81,4 +86,5 @@ __all__ = [
|
||||
"PartnerProductStatementItemResponse", "FinancePartnerProductStatementResponse",
|
||||
"MaterialPriceHistoryCreate", "MaterialPriceHistoryResponse",
|
||||
"MaterialSupplierCreate", "MaterialSupplierResponse", "MaterialPriceTrendResponse",
|
||||
"PurchaseDemandCalculateRequest", "PurchaseDemandItemResponse", "PurchaseDemandResponse",
|
||||
]
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
"""采购需求推导相关数据模型
|
||||
|
||||
销售订单 → BOM 展开 → 物料需求 → 对比库存 → 生成采购建议
|
||||
"""
|
||||
from pydantic import BaseModel, Field
|
||||
from decimal import Decimal
|
||||
from typing import Optional, List
|
||||
|
||||
|
||||
class PurchaseDemandCalculateRequest(BaseModel):
|
||||
"""计算采购需求的请求体"""
|
||||
sales_order_ids: List[int] = Field(..., min_length=1, description="销售订单ID列表")
|
||||
|
||||
|
||||
class PurchaseDemandItemResponse(BaseModel):
|
||||
"""单个物料的采购建议"""
|
||||
material_id: int
|
||||
material_sku: str
|
||||
material_name: str
|
||||
required_quantity: Decimal = Field(..., description="BOM 需求量")
|
||||
available_quantity: Decimal = Field(..., description="当前库存量")
|
||||
shortage_quantity: Decimal = Field(..., description="缺口数量 = required - available")
|
||||
unit_cost: Decimal = Field(..., description="物料单价")
|
||||
estimated_cost: Decimal = Field(..., description="预计采购金额 = shortage × unit_cost")
|
||||
suggested_supplier_id: Optional[int] = Field(None, description="建议供应商ID")
|
||||
suggested_supplier_name: Optional[str] = Field(None, description="建议供应商名称")
|
||||
supplier_lead_time: Optional[int] = Field(None, description="供应商交货周期(天)")
|
||||
|
||||
|
||||
class PurchaseDemandResponse(BaseModel):
|
||||
"""采购需求计算结果"""
|
||||
items: List[PurchaseDemandItemResponse] = Field(default_factory=list)
|
||||
total_estimated_cost: Decimal = Field(default=Decimal("0"), description="预计采购总金额")
|
||||
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="来源销售订单编号")
|
||||
Reference in New Issue
Block a user