init
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
from .product_schemas import ProductCreate, ProductResponse
|
||||
from .supplier_schemas import SupplierCreate, SupplierResponse
|
||||
from .customer_schemas import CustomerCreate, CustomerResponse
|
||||
from .warehouse_schemas import WarehouseCreate, WarehouseResponse
|
||||
from .inventory_schemas import InventoryResponse
|
||||
from .stock_movement_schemas import StockMovementCreate, StockMovementResponse
|
||||
from .purchase_order_schemas import (
|
||||
PurchaseOrderCreate,
|
||||
PurchaseOrderResponse,
|
||||
PurchaseOrderItemCreate
|
||||
)
|
||||
from .sales_order_schemas import (
|
||||
SalesOrderCreate,
|
||||
SalesOrderResponse,
|
||||
SalesOrderItemCreate
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"ProductCreate", "ProductResponse",
|
||||
"SupplierCreate", "SupplierResponse",
|
||||
"CustomerCreate", "CustomerResponse",
|
||||
"WarehouseCreate", "WarehouseResponse",
|
||||
"InventoryResponse",
|
||||
"StockMovementCreate", "StockMovementResponse",
|
||||
"PurchaseOrderCreate", "PurchaseOrderResponse", "PurchaseOrderItemCreate",
|
||||
"SalesOrderCreate", "SalesOrderResponse", "SalesOrderItemCreate",
|
||||
]
|
||||
@@ -0,0 +1,24 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class CustomerCreate(BaseModel):
|
||||
code: Optional[str] = None
|
||||
name: str
|
||||
contact_person: Optional[str] = None
|
||||
phone: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
address: Optional[str] = None
|
||||
|
||||
|
||||
class CustomerResponse(BaseModel):
|
||||
id: int
|
||||
code: Optional[str]
|
||||
name: str
|
||||
contact_person: Optional[str]
|
||||
phone: Optional[str]
|
||||
email: Optional[str]
|
||||
is_active: bool
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,16 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class InventoryResponse(BaseModel):
|
||||
id: int
|
||||
product_id: int
|
||||
product_name: str
|
||||
product_sku: str
|
||||
warehouse_id: int
|
||||
warehouse_name: str
|
||||
quantity: int
|
||||
locked_quantity: int
|
||||
available_quantity: int
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,33 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class ProductCreate(BaseModel):
|
||||
sku: str
|
||||
name: str
|
||||
description: Optional[str] = None
|
||||
category: Optional[str] = None
|
||||
unit: str = "件"
|
||||
cost_price: float = 0
|
||||
sale_price: float = 0
|
||||
min_stock: int = 0
|
||||
max_stock: int = 1000
|
||||
|
||||
|
||||
class ProductResponse(BaseModel):
|
||||
id: int
|
||||
sku: str
|
||||
name: str
|
||||
description: Optional[str]
|
||||
category: Optional[str]
|
||||
unit: str
|
||||
cost_price: float
|
||||
sale_price: float
|
||||
min_stock: int
|
||||
max_stock: int
|
||||
is_active: bool
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,33 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class PurchaseOrderItemCreate(BaseModel):
|
||||
product_id: int
|
||||
quantity: int
|
||||
unit_price: float
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class PurchaseOrderCreate(BaseModel):
|
||||
supplier_id: int
|
||||
expected_date: Optional[datetime] = None
|
||||
remark: Optional[str] = None
|
||||
items: List[PurchaseOrderItemCreate]
|
||||
|
||||
|
||||
class PurchaseOrderResponse(BaseModel):
|
||||
id: int
|
||||
order_no: str
|
||||
supplier_name: str
|
||||
order_date: datetime
|
||||
expected_date: Optional[datetime]
|
||||
status: str
|
||||
total_amount: float
|
||||
paid_amount: float
|
||||
remark: Optional[str]
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,33 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class SalesOrderItemCreate(BaseModel):
|
||||
product_id: int
|
||||
quantity: int
|
||||
unit_price: float
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class SalesOrderCreate(BaseModel):
|
||||
customer_id: int
|
||||
delivery_date: Optional[datetime] = None
|
||||
remark: Optional[str] = None
|
||||
items: List[SalesOrderItemCreate]
|
||||
|
||||
|
||||
class SalesOrderResponse(BaseModel):
|
||||
id: int
|
||||
order_no: str
|
||||
customer_name: str
|
||||
order_date: datetime
|
||||
delivery_date: Optional[datetime]
|
||||
status: str
|
||||
total_amount: float
|
||||
received_amount: float
|
||||
remark: Optional[str]
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,27 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class StockMovementCreate(BaseModel):
|
||||
product_id: int
|
||||
warehouse_id: int
|
||||
movement_type: str
|
||||
quantity: int
|
||||
unit_price: Optional[float] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class StockMovementResponse(BaseModel):
|
||||
id: int
|
||||
product_name: str
|
||||
movement_type: str
|
||||
quantity: int
|
||||
before_quantity: int
|
||||
after_quantity: int
|
||||
reference_no: Optional[str]
|
||||
remark: Optional[str]
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,24 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class SupplierCreate(BaseModel):
|
||||
code: Optional[str] = None
|
||||
name: str
|
||||
contact_person: Optional[str] = None
|
||||
phone: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
address: Optional[str] = None
|
||||
|
||||
|
||||
class SupplierResponse(BaseModel):
|
||||
id: int
|
||||
code: Optional[str]
|
||||
name: str
|
||||
contact_person: Optional[str]
|
||||
phone: Optional[str]
|
||||
email: Optional[str]
|
||||
is_active: bool
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,23 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class WarehouseCreate(BaseModel):
|
||||
code: Optional[str] = None
|
||||
name: str
|
||||
address: Optional[str] = None
|
||||
manager: Optional[str] = None
|
||||
phone: Optional[str] = None
|
||||
|
||||
|
||||
class WarehouseResponse(BaseModel):
|
||||
id: int
|
||||
code: Optional[str]
|
||||
name: str
|
||||
address: Optional[str]
|
||||
manager: Optional[str]
|
||||
is_active: bool
|
||||
is_default: bool
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
Reference in New Issue
Block a user