76 lines
3.6 KiB
Python
76 lines
3.6 KiB
Python
"""
|
|
contract_change相关schemea
|
|
"""
|
|
from ..common.validators import DateStr
|
|
from pydantic import BaseModel, Field
|
|
from typing import Optional
|
|
from ..common.base import BaseResponseWithID
|
|
from pydantic import field_validator
|
|
from fastapi import HTTPException
|
|
|
|
class ContractChangeResponse(BaseResponseWithID):
|
|
"""
|
|
合同变更模型
|
|
"""
|
|
id: Optional[str] = Field(default=None, description="合同变更ID")
|
|
project_id : Optional[str] = Field(None, description="所属项目ID")
|
|
contract_id: Optional[str] = Field(None, description="关联合同ID")
|
|
name: Optional[str] = Field(None, description="合同名称")
|
|
sub_name: Optional[str] = Field(None, description="合同子标题(epc合同和pc合同会有子标题)")
|
|
sign_company:Optional[str] = Field(None, description="签约公司")
|
|
title: Optional[str] = Field(None, description="变更事项")
|
|
reason: Optional[str] = Field(None, description="变更理由")
|
|
before_amount: Optional[float] = Field(None, description="变更前金额")
|
|
after_amount: Optional[float] = Field(None, description="变更后金额")
|
|
change_count: Optional[float] = Field(None, description="变更金额")
|
|
change_rate: Optional[str] = Field(None, description="变更比例")
|
|
change_time: Optional[str] = Field(None, description="变更时间(格式:YYYY-MM-DD)")
|
|
attachment_ids:Optional[list] = Field(None, description="附件ID列表")
|
|
attachment_names:Optional[list] = Field(None, description="附件名称列表")
|
|
created_at:Optional[str]=Field(None, description="创建时间")
|
|
created_by_name: Optional[str] = Field(None, description="创建人名称")
|
|
|
|
class PostContractChange(BaseModel):
|
|
"""
|
|
合同变更请求(水火抽蓄气电)
|
|
PROJECT_CONTRACT_CHANGE = "project.contract-change"
|
|
"""
|
|
|
|
|
|
id: str = Field(..., description="合同变更ID,更新时传入,创建时不传")
|
|
project_id: str = Field(..., description="所属项目ID")
|
|
contract_id: str = Field(..., description="合同ID")
|
|
title: str = Field(..., description="变更事项")
|
|
reason: str = Field(..., description="变更理由")
|
|
before_amount: float = Field(..., description="变更前金额")
|
|
after_amount: float = Field(..., description="变更后金额")
|
|
change_time: DateStr = Field(..., description="变更时间(格式:YYYY-MM-DD)")
|
|
attachment_ids: list = Field(..., description="附件ID列表")
|
|
|
|
@field_validator("after_amount")
|
|
def validate_after_amount(cls, v: float) -> float:
|
|
if v < 0:
|
|
raise HTTPException(status_code=400, detail="变更后金额必须小于等于0")
|
|
return v
|
|
|
|
class CreateContractChange(BaseModel):
|
|
"""
|
|
创建合同变更请求(水火抽蓄气电)
|
|
PROJECT_CONTRACT_CHANGE = "project.contract-change"
|
|
"""
|
|
|
|
project_id: str = Field(..., description="所属项目ID")
|
|
contract_id: str = Field(..., description="合同ID")
|
|
title: str = Field(..., description="变更事项")
|
|
reason: str = Field(..., description="变更理由")
|
|
before_amount: float = Field(..., description="变更前金额")
|
|
after_amount: float = Field(..., description="变更后金额")
|
|
change_time: DateStr = Field(..., description="变更时间(格式:YYYY-MM-DD)")
|
|
attachment_ids: list = Field(..., description="附件ID列表")
|
|
|
|
@field_validator("after_amount")
|
|
def validate_after_amount(cls, v: float) -> float:
|
|
if v < 0:
|
|
raise HTTPException(status_code=400, detail="变更后金额不能小于0")
|
|
return v
|