79 lines
2.9 KiB
Python
79 lines
2.9 KiB
Python
"""
|
||
成本费用凭证相关Pydantic模型
|
||
"""
|
||
from datetime import date
|
||
from typing import Optional, List
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class ExpenseBase(BaseModel):
|
||
"""成本费用凭证基础模型"""
|
||
voucher_no: str = Field(..., description="凭证号")
|
||
expense_type: str = Field(..., description="费用类型")
|
||
expense_category: str = Field(..., description="费用类别")
|
||
payer_name: str = Field(..., description="付款方名称")
|
||
payer_account_no: str = Field(..., description="付款方账号")
|
||
payee_name: str = Field(..., description="收款方名称")
|
||
payee_account_no: str = Field(..., description="收款方账号")
|
||
payee_bank_name: Optional[str] = Field(None, description="收款方开户行")
|
||
expense_date: date = Field(..., description="费用发生日期")
|
||
expense_amount: float = Field(..., description="费用金额")
|
||
tax_amount: float = Field(..., description="税额")
|
||
tax_rate: float = Field(..., description="税率")
|
||
payment_method: str = Field(..., description="支付方式")
|
||
payment_status: str = Field(..., description="支付状态")
|
||
accounting_status: str = Field(..., description="入账状态")
|
||
fiscal_year: int = Field(..., description="会计年度")
|
||
fiscal_period: int = Field(..., description="会计期间")
|
||
is_large_amount: bool = Field(..., description="是否大额费用(>5万)")
|
||
is_cross_border: bool = Field(..., description="是否跨境支付")
|
||
expense_description: Optional[str] = Field(None, description="费用说明")
|
||
related_contract_id: Optional[str] = Field(None, description="关联协议ID")
|
||
|
||
|
||
class ExpenseCreate(ExpenseBase):
|
||
"""创建成本费用凭证"""
|
||
pass
|
||
|
||
|
||
class ExpenseUpdate(BaseModel):
|
||
"""更新成本费用凭证"""
|
||
voucher_no: Optional[str] = None
|
||
expense_type: Optional[str] = None
|
||
expense_category: Optional[str] = None
|
||
payer_name: Optional[str] = None
|
||
payer_account_no: Optional[str] = None
|
||
payee_name: Optional[str] = None
|
||
payee_account_no: Optional[str] = None
|
||
payee_bank_name: Optional[str] = None
|
||
expense_date: Optional[date] = None
|
||
expense_amount: Optional[float] = None
|
||
tax_amount: Optional[float] = None
|
||
tax_rate: Optional[float] = None
|
||
payment_method: Optional[str] = None
|
||
payment_status: Optional[str] = None
|
||
accounting_status: Optional[str] = None
|
||
fiscal_year: Optional[int] = None
|
||
fiscal_period: Optional[int] = None
|
||
is_large_amount: Optional[bool] = None
|
||
is_cross_border: Optional[bool] = None
|
||
expense_description: Optional[str] = None
|
||
related_contract_id: Optional[str] = None
|
||
|
||
|
||
class ExpenseResponse(ExpenseBase):
|
||
"""成本费用凭证响应模型"""
|
||
id: int
|
||
expense_id: str
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|
||
|
||
class ExpenseListResponse(BaseModel):
|
||
"""成本费用凭证列表响应模型"""
|
||
records: List[ExpenseResponse]
|
||
total: int
|
||
page: int
|
||
size: int
|