김보곤
7165896fba
feat: [employee] 개인정보(주민번호, 급여이체, 부양가족)를 연봉정보 섹션으로 이동
...
- 주민등록번호, 급여이체정보, 부양가족을 특수 관리자 전용 섹션으로 이동
- 연봉 정보 → 개인정보 및 연봉정보로 문구 변경
- form="employeeForm" 속성으로 폼 외부 입력필드 연동
2026-03-16 21:53:30 +09:00
김보곤
4dc425d365
fix: [payroll] 일할계산 카드 토글 접기/펼치기 적용
...
- 접힌 상태로 기본 표시, 클릭 시 상세 테이블 펼침
- 모달 열기/사원 변경 시 접힌 상태로 초기화
2026-03-12 16:23:21 +09:00
김보곤
b7a7dfd04f
feat: [payroll] 입사월 급여 등록 시 일할계산 자동 적용
...
- 사원 선택 시 입사일이 해당 급여월이면 일할계산 자동 적용
- 산식: 월액 / 해당월총일수 × 근무일수 (입사일 포함)
- 기본급, 고정연장근로수당, 식대 모두 일할계산
- 일할계산 내역 안내 배너 표시 (산식, 금액 상세)
- 자동 적용 후 수동 수정 가능
2026-03-12 15:34:12 +09:00
김보곤
d74363cd6c
feat: [payroll] 급여 등록 시 사원 선택하면 급여 산정값 자동 적용
...
- 사원의 salary_info에서 기본급, 고정연장근로수당, 식대 자동 로드
- 산정 데이터 없는 사원은 기존 연봉/12 fallback 유지
- 자동 입력 후 수동 수정 가능 (중도입사자 등)
2026-03-12 14:53:41 +09:00
김보곤
304c689c00
fix: [hr] 월 고정연장근로시간 최대값 52시간으로 제한
2026-03-12 14:39:08 +09:00
김보곤
de6ef7472a
feat: [hr] 사원 연봉 등록 시 급여 산정 테이블 추가
...
- 고정연장근로수당 산정 계산 로직 구현 (기본급, 통상시급, 고정OT 자동 계산)
- 수정 모드에서 실시간 급여 산정 미리보기 테이블
- 조회 모드에서 요약/상세 급여 산정 내역 표시
- 식대, 월 고정연장근로시간 입력 필드 추가
- 계산 결과를 salary_info에 저장하여 급여관리에서 활용 가능
2026-03-12 14:34:21 +09:00
김보곤
60e057b8c6
feat: [hr] 연봉이력 삭제 버튼 추가
...
- 이력 테이블에 삭제 컬럼/버튼 추가
- Alpine.js deleteHistory() 메서드 추가 (confirm 확인 후 API 호출)
- reverse 표시 인덱스를 원본 인덱스로 변환하여 API 전달
2026-03-11 16:43:50 +09:00
김보곤
9c75cbbd03
fix: [hr] 연봉 입력 필드 콤마 표시 적용
...
- type=number → type=text(inputmode=numeric) 변경
- 입력 시 실시간 콤마 포맷 적용
- 저장 시 숫자만 추출하여 전송
2026-03-11 16:40:10 +09:00
김보곤
eab39e0b29
feat: [hr] 사원관리 연봉정보 탭 생성
...
- 사원 상세/수정 페이지에 연봉정보 입력 섹션 추가
- 특수 권한 사용자만 열람/수정 가능한 접근 제어 적용
- 연봉 변경 시 자동 이력 기록
- 일반 API 응답에서 연봉 데이터 노출 방지 (toArray 오버라이드)
2026-03-11 16:27:49 +09:00
김보곤
e65e2f3dc8
feat: [payroll] 슈퍼관리자 급여 수정/지급취소 권한 추가
...
- 지급완료/확정 상태에서도 슈퍼관리자는 급여 수정 가능
- 지급취소(unpay) 기능 추가: paid → draft 상태 되돌리기
- 테이블에 슈퍼관리자 전용 수정/지급취소 버튼 표시
2026-03-11 06:52:03 +09:00
김보곤
c53b3d8bc3
fix: [payroll] 전표 생성 시 기타공제 누락 수정 및 에러 모달 추가
...
- 기타공제(deductions JSON) 항목을 대변 207 예수금에 반영
- 차대 불균형 시 상세 분개 내역을 에러 모달로 표시
- toast 대신 복사 가능한 모달로 에러 메시지 표시
2026-03-10 11:30:27 +09:00
김보곤
550fba5cb2
fix: [payroll] 급여명세서 이메일 발송 시 개인 이메일 우선 참조
...
- 개인 이메일이 있으면 개인 이메일로 발송
- 개인 이메일이 없으면 업무용 이메일로 폴백
- 목록의 이메일 모달에서도 동일 로직 적용
2026-03-10 10:57:46 +09:00
김보곤
1dc3ae8df4
feat: [employee] 사원 상세페이지에 개인 이메일 항목 추가
...
- 이메일 → 업무용 이메일로 라벨 변경
- 개인 이메일 항목 추가
2026-03-10 10:38:07 +09:00
김보곤
50275b0500
feat: [employee] 사원관리 개인 이메일 필드 추가
...
- 사원 수정 폼에 개인 이메일 입력 필드 추가
- 레이아웃 2x2 배열로 변경 (업무용 이메일|개인 이메일 / 주민등록번호|연락처)
- Employee 모델에 personalEmail accessor 추가
- 컨트롤러 validation, 서비스 jsonExtraKeys에 personal_email 반영
2026-03-10 10:04:24 +09:00
김보곤
16b9b6cce2
fix: [payroll] 이메일 발송 버튼을 확정 상태에서만 표시
2026-03-10 09:42:58 +09:00
김보곤
d948366c2a
feat: [payroll] 이메일 발송 후 '발송' 라벨 표시 기능
...
- payrolls 테이블 options JSON에 email_sent_at/email_sent_to 저장
- 이메일 아이콘 아래 '발송' 텍스트 표시 (서버 렌더링 + JS 즉시 반영)
- Payroll 모델에 options 컬럼 추가
2026-03-10 01:20:25 +09:00
김보곤
c3a868a89b
fix: [payroll] 급여명세서 이메일 버튼 Blade 파싱 오류 수정
...
- @json() 내부 (int) 캐스팅이 Blade 파서 괄호 매칭 혼란 유발
- @php 블록에서 데이터를 미리 준비하고 @json($var)로 전달
2026-03-10 01:11:56 +09:00
김보곤
ca0473d541
feat: [payroll] 급여명세서 이메일 발송 기능 추가
...
- PayslipMail Mailable 클래스 생성 (admin@codebridge-x.com 발송)
- 급여명세서 이메일 템플릿 (전통 한국식 양식)
- 이메일 발송 API 엔드포인트 추가 (POST /payrolls/{id}/send-payslip)
- 목록 테이블에 이메일 발송 아이콘 버튼 추가
- 급여명세서 미리보기 모달 + 인쇄 기능
2026-03-10 01:06:21 +09:00
김보곤
fd5aca24ab
fix: [leave-promotions] 단일 상태열 제거, 1차/2차 통지열에 결재상태 뱃지 통합
2026-03-10 00:50:56 +09:00
김보곤
55019fdf1e
feat: [leave-promotions] 통지서 미리보기 모달 기능 추가
...
- 1차/2차 통지 눈 아이콘 클릭 시 통지서 문서 모달 팝업
- 결재 상태 뱃지, 발송일시, 인쇄, 결재문서 링크 포함
2026-03-10 00:44:32 +09:00
김보곤
60669ffdd5
feat: [hr] 연차촉진 관리에 1차/2차 촉진기간 컬럼 추가
...
- 근로기준법 제61조 기준 입사일 기반 촉진기간 자동 계산
- 1차 촉진기간: 연차만료 6개월 전 ~ +10일
- 2차 촉진기간 마감: 연차만료 2개월 전
- 잔여일수 다음에 촉진기간 표시
2026-03-10 00:37:10 +09:00
김보곤
512f01bea6
feat: [hr] 휴가관리 참조자 선택 기능 추가
...
- 휴가 신청 모달에 참조자 검색/선택 UI 추가 (Alpine.js)
- 부서별 사용자 목록에서 참조자 검색 및 녹색 칩 표시
- LeaveController 참조 배열 유효성 검증 추가
- LeaveService에서 결재선 steps에 참조자 자동 병합
2026-03-10 00:09:09 +09:00
김보곤
2e97b824cd
feat: [hr] 연차촉진 관리 페이지 추가
...
- LeavePromotionController: 대상자 목록 조회 + 일괄 통지 발송
- LeaveService: getPromotionCandidates(), sendPromotionNotices() 메서드 추가
- 통지 현황 추적 (미발송/1차 발송/완료)
- 일괄 선택 + 결재 문서 자동 생성 + 상신
2026-03-07 00:46:10 +09:00
김보곤
d59a651fb9
fix: [leave] 휴가신청 탭 기본 종료일을 연말로 변경
...
- 미래 날짜 휴가가 기본 필터에서 제외되는 문제 수정
- date_to 기본값: today → endOfYear
2026-03-05 16:06:16 +09:00
김보곤
301afcfc95
feat: [hr] 휴가관리 잔여연차 탭에도 재직상태 필터 추가
2026-03-05 15:22:51 +09:00
김보곤
be35f7ba49
feat: [hr] 연차잔여 탭에 재직상태 필터 추가 (전체/재직자/퇴직자)
...
- 필터 기본값: 재직자 (active + leave)
- 퇴직자 선택 시 resigned만 표시
- 전체 선택 시 모든 상태 표시
2026-03-05 15:16:54 +09:00
김보곤
5f81e5f356
feat: [hr] 사원관리 영업팀 제외 및 강제 제외 기능 추가
...
- 영업팀 포함 부서 사원 기본 제외 (외부직원)
- json_extra.is_excluded 플래그로 강제 제외/복원 토글
- 필터에 '제외 사원 표시' 체크박스 추가
- 제외 사원 시각적 구분 (주황 배경, 제외 뱃지)
2026-03-05 15:16:15 +09:00
김보곤
7c38790801
fix: [leaves] 휴가관리 삭제/영구삭제 함수 누락 수정
2026-03-04 23:09:14 +09:00
김보곤
6f03a8d12c
feat: [hr] 슈퍼관리자 근태/신청 삭제 및 영구삭제 기능 추가
...
- AttendanceService: forceDeleteAttendance 메서드 추가
- LeaveService: deleteLeave(모든 상태), forceDeleteLeave 메서드 추가
- Controller: force 파라미터 + 슈퍼관리자 권한 분기
- 근태 테이블: 슈퍼관리자에게 삭제/영구삭제 버튼 표시
- 신청 테이블: 슈퍼관리자에게 삭제/영구삭제 버튼 표시
2026-03-04 00:15:41 +09:00
김보곤
266040a008
fix: [hr] 통합 근태관리 탭2/3 컨테이너 HTML 추가 및 정렬 지원
2026-03-04 00:06:01 +09:00
김보곤
af325d1cab
fix: [hr] 통합 근태관리 JS API URL에 /api 접두사 추가
2026-03-04 00:02:40 +09:00
김보곤
6cdcc293cf
feat: [hr] 근태등록 + 휴가관리 통합 시스템 구현
...
- Leave 모델 확장: 6개 유형 추가 (출장/재택/외근/조퇴/지각사유서/결근사유서)
- LeaveService: 유형별 결재양식 자동 선택, 유형별 Attendance 반영 분기
- ApprovalService: 콜백 3개 결재양식코드로 확장
- AttendanceIntegratedController: 통합 화면 컨트롤러
- 통합 UI: 근태현황/신청결재/연차잔여 3탭 + 신규 신청 드롭다운
- AttendanceRequest 모델/서비스/컨트롤러/뷰 삭제 (Leave로 일원화)
- AttendanceService: deductLeaveBalance 제거 (Leave 시스템으로 일원화)
2026-03-03 23:50:27 +09:00
김보곤
896446f388
fix: [attendance] 근태관리 승인 탭 제거
...
- 결재관리에서 처리하므로 승인 탭 불필요
- 탭 네비게이션, 승인 탭 콘텐츠, 승인 신청 모달 제거
- 승인/반려 JS 함수 및 탭 전환 로직 제거
2026-03-03 23:04:36 +09:00
김보곤
ff7947d5bd
feat: [leave] 결재선 없을 때 빠른 생성 기능 추가
...
- 결재선 0개 시 경고 메시지 + '결재선 바로 생성' 버튼 표시
- 결재선 있을 때 '새 결재선 추가' 링크 표시
- 빠른 결재선 생성 모달 (z-[60]): 인원 목록 / 결재선 편집 2단 레이아웃
- 부서별 펼침/접기, 이름 검색, SortableJS 드래그 순서 변경
- 저장 후 드롭다운 동적 갱신 + 새 결재선 자동 선택
2026-03-03 22:50:34 +09:00
김보곤
d55e34357d
feat: [leave] 휴가 신청 시 결재선 선택 기능 추가
...
- 휴가 신청 모달에 결재선 드롭다운 + 미리보기 UI 추가
- 선택된 결재선으로 결재 생성 (미선택 시 기본결재선 fallback)
- 휴가 목록에 결재진행 컬럼 추가 (원형 아이콘: ✓승인/✗반려/숫자대기/파랑현재)
- approval.steps.approver eager load 추가
2026-03-03 22:36:05 +09:00
김보곤
4513e51e50
feat: [hr] 사원관리 퇴직자 영구삭제 기능 추가
...
- 슈퍼관리자만 퇴직 상태 사원을 영구삭제 가능
- 관련 첨부파일도 함께 삭제
- DELETE /admin/hr/employees/{id}/force 엔드포인트 추가
2026-03-03 21:46:37 +09:00
김보곤
650f0ee3a7
fix: [hr] 사업소득자 임금대장 행 삭제 후 일괄저장 실패 수정
...
- 모든 행 삭제 시 "저장할 데이터가 없습니다" 오류 → 확인 후 서버 전송으로 변경
- 백엔드 validation: required|array → present|array (빈 배열 허용)
- 서버의 orphan draft 자동 삭제 로직이 정상 동작하도록 수정
2026-03-03 19:30:24 +09:00
김보곤
bd42adad55
feat: [hr] 사업소득자 임금대장 동적 행 입력 리디자인
...
- earner 고정 행 → 동적 행 추가/삭제 구조로 변경
- 상호/성명 datalist 콤보박스 (드롭다운 선택 + 직접 입력)
- display_name/business_reg_number 컬럼 직접 저장
- bulkSave: payment_id 기반 upsert + 미제출 draft 자동 삭제
- confirmed/paid 행 수정/삭제 불가 유지
- 엑셀 내보내기 display_name 직접 사용으로 단순화
2026-03-03 14:20:44 +09:00
김보곤
9823945807
feat: [payroll] 전표 생성 도움말 모달 추가
...
- 전표 생성 버튼 옆에 i 도움말 아이콘 버튼 추가
- 분개 구조, 전표일자/번호, 주의사항, 수정/삭제 안내 포함
2026-02-28 20:31:15 +09:00
김보곤
74400cd6e2
feat: [payroll] 급여 일반전표 자동 생성 기능
...
- PayrollController에 generateJournalEntry() 메서드 추가
- 해당월 급여 합산 → 분개 행 자동 구성 (차변 801 급여, 대변 207/205)
- 중복 체크 (source_type=payroll, source_key=payroll-YYYY-MM)
- 0원 항목 행 제외, 차대 균형 검증
- 급여관리 페이지에 전표 생성 버튼 추가
2026-02-28 20:05:58 +09:00
김보곤
2aea6962ef
feat: [payroll] 급여계산 도움말 모달 추가
...
- 급여관리 제목 옆 i 아이콘 버튼 추가
- 모달 내용: 전체 흐름, 지급항목, 4대보험, 세금, 실수령액, 예시, 상태 흐름, 팁
- 현재 설정된 요율/상하한 값을 동적으로 반영
2026-02-28 18:30:39 +09:00
김보곤
d697f80340
fix: [hr] 사업소득자 임금대장 버튼 라벨 CSV→엑셀 내보내기 변경
2026-02-28 17:47:56 +09:00
김보곤
50c0c9ce50
feat: [leaves] 휴가신청 → 전자결재 자동 연동
...
- LeaveService: 휴가 신청 시 결재 자동 생성+상신
- LeaveService: approveByApproval/rejectByApproval 메서드 추가
- LeaveService: deletePendingLeave 시 연결된 결재 자동 취소
- ApprovalService: 승인/반려/회수/전결 시 휴가 상태 자동 동기화
- Leave 모델: approval_id, approval() 관계 추가
- UI: pending 휴가에 결재 상세 링크 추가, 승인/반려 버튼 제거
2026-02-28 15:54:41 +09:00
김보곤
8c574088f4
feat: [payroll] 급여 확정 취소 기능 추가
...
- 확정 상태에서 작성중으로 되돌리는 기능 추가
- Model: isUnconfirmable() 상태 헬퍼 추가
- Service: unconfirmPayroll() 메서드 추가
- Controller: unconfirm() 엔드포인트 추가
- Route: POST /{id}/unconfirm 라우트 추가
- View: 확정 취소 버튼 및 JS 함수 추가
2026-02-27 22:17:15 +09:00
김보곤
f922646b7b
feat: [hr] 사업소득자 임금대장 입력 기능 구현
...
- BusinessIncomePayment 모델 (소득세3%/지방소득세0.3% 자동계산)
- BusinessIncomePaymentService (일괄저장/통계/CSV내보내기)
- 웹/API 컨트롤러 (ALLOWED_PAYROLL_USERS 접근 제한)
- 스프레드시트 UI (인라인 편집, 실시간 세금 계산)
- HTMX 연월 변경 갱신, CSV 내보내기
2026-02-27 20:22:07 +09:00
김보곤
48dc94c0b0
feat: [payroll] 급여관리 페이지 접근 제한 (이름 기반)
...
- 허용 사용자: 이경호, 전진선, 김보곤
- 웹 컨트롤러: 미허용 시 안내 뷰 반환
- API 컨트롤러: 모든 엔드포인트에 403 반환
- restricted.blade.php 안내 페이지 생성
2026-02-27 17:59:50 +09:00
김보곤
22e6cacced
fix: [payroll] 전월 복사 후 테이블 새로고침 함수명 수정
...
- refreshPayrollTable → refreshTable (실제 함수명)
2026-02-27 17:37:56 +09:00
김보곤
d55d1c3405
feat: [payroll] 전월 급여 복사 등록 기능 추가
...
- PayrollService에 copyFromPreviousMonth() 메서드 추가
- PayrollController에 copyFromPrevious() 액션 추가
- 전월 지급/공제 금액을 그대로 복사 (요율 재계산 없음)
- 이미 존재하는 사원/연월은 스킵 처리
2026-02-27 17:30:06 +09:00
김보곤
78615ec6ee
fix: [payroll] 수정 모드에서 공제항목 자동 재계산 방지
...
- 수정 모드(editingPayrollId)에서는 /calculate API 호출 생략
- 기본급 등 변경 시 총지급액/실수령액만 로컬 재합산
- 재계산 버튼 클릭 시에만 최신 요율로 서버 계산 실행
2026-02-27 16:56:28 +09:00
김보곤
810e170644
feat: [hr] 사원 상세화면에 고용형태 표시 추가
2026-02-27 16:19:17 +09:00