Files
njts-accounting-core/backend/app/payroll/vouchers/router.py
2026-02-01 20:13:52 +09:00

93 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from fastapi import APIRouter, HTTPException, Query
from typing import List
from .schemas import VoucherExportRequest, VoucherExportResponse, VoucherDataSummary
from .service import export_vouchers, get_employees_list
import logging
logger = logging.getLogger(__name__)
router = APIRouter(prefix="/payroll/vouchers", tags=["vouchers"])
@router.get("/employees")
def get_employees():
"""従業員リストを取得"""
try:
employees = get_employees_list()
return {
"total": len(employees),
"employees": employees,
"status": "success"
}
except Exception as e:
logger.error(f"従業員リスト取得エラー: {str(e)}")
raise HTTPException(status_code=500, detail=str(e))
@router.post("/export")
def export_vouchers_data(request: VoucherExportRequest) -> VoucherExportResponse:
"""账票エクスポートプレビュー、CSV、PDF"""
try:
result = export_vouchers(request)
return result
except ValueError as e:
logger.error(f"バリデーションエラー: {str(e)}")
raise HTTPException(status_code=400, detail=str(e))
except Exception as e:
logger.error(f"エクスポートエラー: {str(e)}")
raise HTTPException(status_code=500, detail=str(e))
@router.get("/data/salary")
def get_salary_data(
employee_id: int = Query(...),
start_year: int = Query(...),
start_month: int = Query(...),
end_year: int = Query(...),
end_month: int = Query(...)
):
"""単一従業員の給与データ取得"""
try:
from .service import get_salary_data_for_period
data = get_salary_data_for_period(
employee_id,
start_year,
start_month,
end_year,
end_month
)
return {
"status": "success",
"data": data
}
except Exception as e:
logger.error(f"給与データ取得エラー: {str(e)}")
raise HTTPException(status_code=500, detail=str(e))
@router.get("/data/bonus")
def get_bonus_data(
employee_id: int = Query(...),
start_year: int = Query(...),
start_month: int = Query(...),
end_year: int = Query(...),
end_month: int = Query(...)
):
"""単一従業員の賞与データ取得"""
try:
from .service import get_bonus_data_for_period
data = get_bonus_data_for_period(
employee_id,
start_year,
start_month,
end_year,
end_month
)
return {
"status": "success",
"data": data
}
except Exception as e:
logger.error(f"賞与データ取得エラー: {str(e)}")
raise HTTPException(status_code=500, detail=str(e))