进销存系统重构

This commit is contained in:
2026-03-17 22:20:56 +08:00
parent abecbc827d
commit 95e7404902
8 changed files with 1258 additions and 178 deletions
+11 -4
View File
@@ -9,17 +9,23 @@ from .product_schemas import (
from .supplier_schemas import SupplierCreate, SupplierResponse
from .customer_schemas import CustomerCreate, CustomerResponse
from .warehouse_schemas import WarehouseCreate, WarehouseResponse
from .inventory_schemas import InventoryResponse
from .inventory_schemas import InventoryResponse, InventoryCreate, InventoryUpdate
from .stock_movement_schemas import StockMovementCreate, StockMovementResponse
from .purchase_order_schemas import (
PurchaseOrderCreate,
PurchaseOrderResponse,
PurchaseOrderItemCreate
PurchaseOrderItemCreate,
PurchaseOrderItemResponse,
PurchaseOrderDetailResponse,
PurchaseOrderReceiveItem,
PurchaseOrderReceiveRequest
)
from .sales_order_schemas import (
SalesOrderCreate,
SalesOrderResponse,
SalesOrderItemCreate,
SalesOrderItemResponse,
SalesOrderDetailResponse,
ProductionMaterialPlanItemResponse,
SalesOrderProductionPlanResponse,
SalesOrderIssueRequest,
@@ -47,10 +53,11 @@ __all__ = [
"SupplierCreate", "SupplierResponse",
"CustomerCreate", "CustomerResponse",
"WarehouseCreate", "WarehouseResponse",
"InventoryResponse",
"InventoryResponse", "InventoryCreate", "InventoryUpdate",
"StockMovementCreate", "StockMovementResponse",
"PurchaseOrderCreate", "PurchaseOrderResponse", "PurchaseOrderItemCreate",
"SalesOrderCreate", "SalesOrderResponse", "SalesOrderItemCreate",
"PurchaseOrderItemResponse", "PurchaseOrderDetailResponse", "PurchaseOrderReceiveItem", "PurchaseOrderReceiveRequest",
"SalesOrderCreate", "SalesOrderResponse", "SalesOrderItemCreate", "SalesOrderItemResponse", "SalesOrderDetailResponse",
"ProductionMaterialPlanItemResponse", "SalesOrderProductionPlanResponse",
"SalesOrderIssueRequest", "SalesOrderIssueResponse",
"FinanceAllocationCreate", "FinanceTransactionCreate",
@@ -1,4 +1,5 @@
from pydantic import BaseModel
from typing import Optional
class InventoryResponse(BaseModel):
@@ -14,3 +15,19 @@ class InventoryResponse(BaseModel):
class Config:
from_attributes = True
class InventoryCreate(BaseModel):
product_id: int
warehouse_id: int
quantity: int = 0
locked_quantity: int = 0
batch_number: Optional[str] = None
location: Optional[str] = None
class InventoryUpdate(BaseModel):
quantity: Optional[int] = None
locked_quantity: Optional[int] = None
batch_number: Optional[str] = None
location: Optional[str] = None
@@ -31,3 +31,31 @@ class PurchaseOrderResponse(BaseModel):
class Config:
from_attributes = True
class PurchaseOrderItemResponse(BaseModel):
id: int
product_id: int
product_sku: str
product_name: str
quantity: int
received_quantity: int
unit_price: float
amount: float
remark: Optional[str] = None
class PurchaseOrderDetailResponse(PurchaseOrderResponse):
supplier_id: int
items: List[PurchaseOrderItemResponse]
class PurchaseOrderReceiveItem(BaseModel):
item_id: int
receive_quantity: int
class PurchaseOrderReceiveRequest(BaseModel):
warehouse_id: Optional[int] = None
items: List[PurchaseOrderReceiveItem]
remark: Optional[str] = None
@@ -37,6 +37,21 @@ class SalesOrderResponse(BaseModel):
from_attributes = True
class SalesOrderItemResponse(BaseModel):
id: int
product_id: int
quantity: int
delivered_quantity: int
unit_price: float
amount: float
remark: Optional[str] = None
class SalesOrderDetailResponse(SalesOrderResponse):
customer_id: int
items: List[SalesOrderItemResponse]
class ProductionMaterialPlanItemResponse(BaseModel):
material_id: int
material_sku: str