Step 10:费用管理

This commit is contained in:
Cheng Zhou
2025-12-16 19:35:26 +08:00
parent 882fcb0963
commit 156e02ff3a
97 changed files with 509 additions and 1 deletions
+32
View File
@@ -0,0 +1,32 @@
import uuid
from datetime import date
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.deps import get_db_session, require_study_member
from app.crud import finance as finance_crud
from app.crud import study as study_crud
from app.schemas.finance import FinanceSummaryRead
router = APIRouter()
@router.get("/summary", response_model=FinanceSummaryRead, dependencies=[Depends(require_study_member())])
async def finance_summary(
study_id: uuid.UUID,
date_from: date | None = None,
date_to: date | None = None,
db: AsyncSession = Depends(get_db_session),
) -> FinanceSummaryRead:
# ensure study exists
await study_crud.get(db, study_id)
row = await finance_crud.summary(db, study_id, date_from=date_from, date_to=date_to)
return FinanceSummaryRead(
total_amount=row.total_amount,
paid_amount=row.paid_amount,
approved_amount=row.approved_amount,
submitted_amount=row.submitted_amount,
count_total=row.count_total,
count_paid=row.count_paid,
)