feat: [payroll] 급여명세서 이메일 발송 기능 추가
- PayslipMail Mailable 클래스 생성 (admin@codebridge-x.com 발송) - 급여명세서 이메일 템플릿 (전통 한국식 양식) - 이메일 발송 API 엔드포인트 추가 (POST /payrolls/{id}/send-payslip) - 목록 테이블에 이메일 발송 아이콘 버튼 추가 - 급여명세서 미리보기 모달 + 인쇄 기능
This commit is contained in:
@@ -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)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user