费用管理内容优化-初步

This commit is contained in:
Cheng Zhou
2026-01-13 16:49:55 +08:00
parent 0c7c03069a
commit 1db36f40b0
43 changed files with 5229 additions and 26 deletions
+57
View File
@@ -0,0 +1,57 @@
import uuid
from datetime import date, datetime
from decimal import Decimal
from typing import Optional
from pydantic import BaseModel, ConfigDict, Field
from app.schemas.contract_fee_payment import ContractFeePaymentRead
from app.schemas.fee_attachment import FeeAttachmentRead
class ContractFeeCreate(BaseModel):
project_id: uuid.UUID
center_id: uuid.UUID
contract_amount: Decimal = Field(ge=0)
contract_cases: int = Field(ge=0)
actual_cases: Optional[int] = Field(default=None, ge=0)
settlement_amount: Optional[Decimal] = Field(default=None, ge=0)
final_payment_amount: Optional[Decimal] = Field(default=None, ge=0)
class ContractFeeUpdate(BaseModel):
contract_amount: Optional[Decimal] = Field(default=None, ge=0)
contract_cases: Optional[int] = Field(default=None, ge=0)
actual_cases: Optional[int] = Field(default=None, ge=0)
settlement_amount: Optional[Decimal] = Field(default=None, ge=0)
final_payment_amount: Optional[Decimal] = Field(default=None, ge=0)
class ContractFeeRead(BaseModel):
id: uuid.UUID
project_id: uuid.UUID
center_id: uuid.UUID
contract_amount: Decimal
contract_cases: int
actual_cases: Optional[int]
settlement_amount: Optional[Decimal]
final_payment_amount: Optional[Decimal]
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)
class ContractFeeListItem(ContractFeeRead):
center_name: str
paid_total: Decimal
verified_total: Decimal
unpaid_balance: Decimal
unverified_balance: Decimal
last_paid_date: Optional[date]
last_verified_date: Optional[date]
class ContractFeeDetail(ContractFeeRead):
payments: list[ContractFeePaymentRead]
attachments: dict[str, list[FeeAttachmentRead]]