This commit is contained in:
2026-06-02 09:55:06 +08:00
parent ecc6b8ab8a
commit 8cca6f9d32
28 changed files with 1951 additions and 2658 deletions
+6 -3
View File
@@ -152,10 +152,13 @@ async def _apply_order_items(
if product.item_type != "material":
raise HTTPException(status_code=400, detail=f"采购单仅允许物料: {product.name}")
# 使用物料的成本价格作为单价,忽略前端提交的单价
unit_price = product.cost_price or 0
# 优先使用前端传入的单价,否则使用物料成本价
if item_data.unit_price and item_data.unit_price > 0:
unit_price = float(item_data.unit_price)
else:
unit_price = product.cost_price or 0
if unit_price <= 0:
raise HTTPException(status_code=400, detail=f"物料 {product.name} 未设置成本价格,请在物料管理界面设置")
raise HTTPException(status_code=400, detail=f"物料 {product.name} 未设置价格,请在物料管理界面设置成本价或在采购明细中填写单价")
try:
item = PurchaseOrderItem(
@@ -7,7 +7,7 @@ from decimal import Decimal
class PurchaseOrderItemCreate(BaseModel):
product_id: int
quantity: int = Field(..., gt=0, description="采购数量")
unit_price: Optional[Decimal] = Field(None, description="单价(可选,后端自动使用物料成本价格)")
unit_price: Optional[Decimal] = Field(None, description="单价(可选,不填则使用物料成本价格)")
remark: Optional[str] = None