Step 10:费用管理
This commit is contained in:
@@ -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,
|
||||
)
|
||||
Reference in New Issue
Block a user