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, )