Files
ctms/backend/app/api/v1/finance_dashboard.py
2026-05-29 10:20:42 +08:00

34 lines
1.1 KiB
Python

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_api_permission
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)
async def finance_summary(
study_id: uuid.UUID,
date_from: date | None = None,
date_to: date | None = None,
_=Depends(require_api_permission("fees_contracts:read")),
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,
)