feat: [payroll] 급여명세서 이메일 발송 기능 추가

- PayslipMail Mailable 클래스 생성 (admin@codebridge-x.com 발송)
- 급여명세서 이메일 템플릿 (전통 한국식 양식)
- 이메일 발송 API 엔드포인트 추가 (POST /payrolls/{id}/send-payslip)
- 목록 테이블에 이메일 발송 아이콘 버튼 추가
- 급여명세서 미리보기 모달 + 인쇄 기능
This commit is contained in:
김보곤
2026-03-10 01:06:21 +09:00
parent 2fc4754dd6
commit 5ac4495d6b
7 changed files with 495 additions and 0 deletions

View File

@@ -980,6 +980,46 @@ public function generateJournalEntry(Request $request): JsonResponse
}
}
/**
* 급여명세서 이메일 발송
*/
public function sendPayslip(Request $request, int $id): JsonResponse
{
if ($denied = $this->checkPayrollAccess()) {
return $denied;
}
try {
$result = $this->payrollService->sendPayslip($id);
if (! $result) {
return response()->json([
'success' => false,
'message' => '급여 정보를 찾을 수 없습니다.',
], 404);
}
return response()->json([
'success' => true,
'message' => $result['message'],
'data' => ['email' => $result['email']],
]);
} catch (\RuntimeException $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage(),
], 422);
} catch (\Throwable $e) {
report($e);
return response()->json([
'success' => false,
'message' => '이메일 발송 중 오류가 발생했습니다.',
'error' => config('app.debug') ? $e->getMessage() : null,
], 500);
}
}
/**
* 급여 계산 미리보기 (AJAX)
*/