Files
sam-api/app/Http/Controllers/Api/V1/WelfareController.php
권혁성 c46b950fde feat: 회계 시스템 확장 — 계정과목·전표·세금계산서·카드·바로빌
- 계정과목 확장 및 더존 Smart A 표준 시딩 (전 테넌트)
- 전표 연동 시스템 구현 (JournalSyncService, SyncsExpenseAccounts)
- 세금계산서 매입/매출 필수값 조건 분리 + null 방어
- 카드거래 대시보드 리다이렉트 + 악성채권 집계 수정
- 바로빌 연동 API 엔드포인트 추가
- 복리후생 날짜 필터 + 바로빌 조인 컬럼 수정
- codebridge DB 커넥션 설정 추가
2026-03-10 11:29:39 +09:00

80 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers\Api\V1;
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Services\WelfareService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
/**
* 복리후생비 현황 컨트롤러
*
* CEO 대시보드용 복리후생비 현황 데이터를 제공합니다.
*/
class WelfareController extends Controller
{
public function __construct(
private readonly WelfareService $welfareService
) {}
/**
* 복리후생비 현황 요약 조회
*/
public function summary(Request $request): JsonResponse
{
$limitType = $request->query('limit_type', 'quarterly');
$calculationType = $request->query('calculation_type', 'fixed');
$fixedAmountPerMonth = $request->query('fixed_amount_per_month')
? (int) $request->query('fixed_amount_per_month')
: 200000;
$ratio = $request->query('ratio')
? (float) $request->query('ratio')
: 0.05;
$year = $request->query('year') ? (int) $request->query('year') : null;
$quarter = $request->query('quarter') ? (int) $request->query('quarter') : null;
return ApiResponse::handle(function () use ($limitType, $calculationType, $fixedAmountPerMonth, $ratio, $year, $quarter) {
return $this->welfareService->getSummary(
$limitType,
$calculationType,
$fixedAmountPerMonth,
$ratio,
$year,
$quarter
);
}, __('message.fetched'));
}
/**
* 복리후생비 상세 조회 (모달용)
*/
public function detail(Request $request): JsonResponse
{
$calculationType = $request->query('calculation_type', 'fixed');
$fixedAmountPerMonth = $request->query('fixed_amount_per_month')
? (int) $request->query('fixed_amount_per_month')
: 200000;
$ratio = $request->query('ratio')
? (float) $request->query('ratio')
: 0.05;
$year = $request->query('year') ? (int) $request->query('year') : null;
$quarter = $request->query('quarter') ? (int) $request->query('quarter') : null;
$startDate = $request->query('start_date');
$endDate = $request->query('end_date');
return ApiResponse::handle(function () use ($calculationType, $fixedAmountPerMonth, $ratio, $year, $quarter, $startDate, $endDate) {
return $this->welfareService->getDetail(
$calculationType,
$fixedAmountPerMonth,
$ratio,
$year,
$quarter,
$startDate,
$endDate
);
}, __('message.fetched'));
}
}