김보곤
5bf2914e22
fix: [payroll] 음수 공제항목 전표 처리 방식 수정
...
- 음수 공제(환급)를 차변 별도 라인 대신 대변 마이너스로 처리
- 차변은 총지급액(gross_salary) 단일 라인 고정
- 대변합계 = 양수공제 + 음수공제(마이너스 대변) + 실수령액 = 차변
2026-03-10 12:26:56 +09:00
김보곤
39fa711420
fix: [payroll] 전표 생성 음수 공제(환급) 처리 및 역산 제거
...
- 음수 공제항목을 차변 207 예수금으로 처리 (환급 = 예수금 감소)
- 역산 방식 제거, DB의 실제 net_salary 사용
- 공제항목 루프 처리로 코드 간결화
2026-03-10 11:43:10 +09:00
김보곤
84614a77b9
fix: [journal] 급여 전표 수정 허용 및 source_type 라벨 개선
...
- payroll source_type 전표 수정 허용 (기존: manual, bank_transaction만)
- source_type별 정확한 라벨 매핑 (카드사용내역, 홈택스 매출/매입)
- 프론트/백엔드 양쪽 수정
2026-03-10 11:38:04 +09:00
김보곤
1daffbc212
fix: [payroll] 전표 미지급비용을 역산으로 차대 균형 보장
...
- net_salary를 DB 값 대신 (총지급액 - 공제 합계)로 역산
- DB 데이터 불일치 시에도 전표 차대 균형 보장
2026-03-10 11:33:24 +09:00
김보곤
63271ed18c
fix: [payroll] 전표 생성 시 기타공제 누락 수정 및 에러 모달 추가
...
- 기타공제(deductions JSON) 항목을 대변 207 예수금에 반영
- 차대 불균형 시 상세 분개 내역을 에러 모달로 표시
- toast 대신 복사 가능한 모달로 에러 메시지 표시
2026-03-10 11:30:56 +09:00
5e7b434815
fix: [deploy] dompdf 폰트 캐시 shared 심링크 설정
...
- storage/fonts를 shared/storage/fonts로 심링크하여 배포 간 폰트 캐시 유지
- rsync exclude에 storage/fonts 추가
- www-data 쓰기 권한 문제 해결 (급여명세서 PDF 생성 오류)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 11:04:19 +09:00
김보곤
a14c7a5119
fix: [payroll] 급여명세서 이메일 발송 시 개인 이메일 우선 참조
...
- 개인 이메일이 있으면 개인 이메일로 발송
- 개인 이메일이 없으면 업무용 이메일로 폴백
- 목록의 이메일 모달에서도 동일 로직 적용
2026-03-10 10:58:12 +09:00
김보곤
eb7b8f32cb
feat: [employee] 사원 상세페이지에 개인 이메일 항목 추가
...
- 이메일 → 업무용 이메일로 라벨 변경
- 개인 이메일 항목 추가
2026-03-10 10:38:41 +09:00
김보곤
76a993d32d
feat: [employee] 사원관리 개인 이메일 필드 추가
...
- 사원 수정 폼에 개인 이메일 입력 필드 추가
- 레이아웃 2x2 배열로 변경 (업무용 이메일|개인 이메일 / 주민등록번호|연락처)
- Employee 모델에 personalEmail accessor 추가
- 컨트롤러 validation, 서비스 jsonExtraKeys에 personal_email 반영
2026-03-10 10:05:00 +09:00
김보곤
4c3822edc2
fix: [journal] 전표 거래처 검색 limit(50) 제거 — 전체 활성 거래처 로드
2026-03-10 09:54:18 +09:00
김보곤
d3feb982a7
fix: [payroll] 이메일 발송 버튼을 확정 상태에서만 표시
2026-03-10 09:43:25 +09:00
김보곤
5ca33cb24b
fix: [payroll] PDF 급여명세서 레이아웃 수정
...
- 사원정보 테이블 colgroup으로 너비 고정 (오버플로우 해결)
- footer를 table 기반으로 변경 (dompdf float 미지원)
- 회사명 문자 인코딩 수정
2026-03-10 09:24:31 +09:00
김보곤
4a3d14a591
feat: [payroll] 급여명세서 이메일을 PDF 첨부파일로 변경
...
- 이메일 본문에 급여 내역 직접 노출 → PDF 첨부파일로 전환 (보안 강화)
- barryvdh/laravel-dompdf 패키지 추가
- 이메일 본문은 간단한 안내 메시지로 변경
- dompdf에서 한글 렌더링을 위해 Noto Sans KR 폰트 적용
2026-03-10 09:12:25 +09:00
김보곤
01493c90f5
fix: [rd] 가이드레일 높이 오픈H+150 → 오픈H+100으로 변경
2026-03-10 07:33:23 +09:00
김보곤
2b1e8b559c
fix: [rd] 스크린 가이드레일 립 절곡방향 수정 (안쪽→개구부 방향)
...
- 2D 평면도: 사이드월 길이 분리(swLen=bodyD-lp), 립이 개구부 방향으로 절곡
- 3D 렌더링: bodyShape/hole의 립 Y좌표 반전(-lp, 벽쪽→개구부쪽)
- 치수선, 씰, 슬랫, 클립 위치 업데이트
2026-03-10 01:41:22 +09:00
김보곤
85d52c9bc0
fix: [rd] 방화셔터 가이드레일 높이 계산 수정 (오픈H + 150mm)
...
- 기존: 표준 재고길이(3305mm) 선택 방식 → 오픈H + 305mm 표시
- 수정: 오픈H + 150mm 계산 (실제 가이드레일 높이)
- 3D 렌더링 레일 높이도 +100 → +150 수정
2026-03-10 01:28:34 +09:00
김보곤
4c2a905a94
feat: [payroll] 이메일 발송 후 '발송' 라벨 표시 기능
...
- payrolls 테이블 options JSON에 email_sent_at/email_sent_to 저장
- 이메일 아이콘 아래 '발송' 텍스트 표시 (서버 렌더링 + JS 즉시 반영)
- Payroll 모델에 options 컬럼 추가
2026-03-10 01:21:28 +09:00
김보곤
dfa193f369
fix: [payroll] 급여명세서 이메일 버튼 Blade 파싱 오류 수정
...
- @json() 내부 (int) 캐스팅이 Blade 파서 괄호 매칭 혼란 유발
- @php 블록에서 데이터를 미리 준비하고 @json($var)로 전달
2026-03-10 01:12:21 +09:00
김보곤
5ac4495d6b
feat: [payroll] 급여명세서 이메일 발송 기능 추가
...
- PayslipMail Mailable 클래스 생성 (admin@codebridge-x.com 발송)
- 급여명세서 이메일 템플릿 (전통 한국식 양식)
- 이메일 발송 API 엔드포인트 추가 (POST /payrolls/{id}/send-payslip)
- 목록 테이블에 이메일 발송 아이콘 버튼 추가
- 급여명세서 미리보기 모달 + 인쇄 기능
2026-03-10 01:06:48 +09:00
김보곤
2fc4754dd6
fix: [leave-promotions] 단일 상태열 제거, 1차/2차 통지열에 결재상태 뱃지 통합
2026-03-10 00:51:15 +09:00
김보곤
36ca51afc3
feat: [leave-promotions] 통지서 미리보기 모달 기능 추가
...
- 1차/2차 통지 눈 아이콘 클릭 시 통지서 문서 모달 팝업
- 결재 상태 뱃지, 발송일시, 인쇄, 결재문서 링크 포함
2026-03-10 00:45:01 +09:00
김보곤
0ef6b72d8e
feat: [hr] 연차촉진 관리에 1차/2차 촉진기간 컬럼 추가
...
- 근로기준법 제61조 기준 입사일 기반 촉진기간 자동 계산
- 1차 촉진기간: 연차만료 6개월 전 ~ +10일
- 2차 촉진기간 마감: 연차만료 2개월 전
- 잔여일수 다음에 촉진기간 표시
2026-03-10 00:37:33 +09:00
김보곤
694646158d
feat: [approval] 결재서명란에 참조자 표시 추가
...
- 결재 테이블 하단에 참조자 녹색 칩 표시
- reference step_type 필터링하여 존재 시에만 표시
2026-03-10 00:16:42 +09:00
김보곤
fcdffa66db
feat: [hr] 휴가관리 참조자 선택 기능 추가
...
- 휴가 신청 모달에 참조자 검색/선택 UI 추가 (Alpine.js)
- 부서별 사용자 목록에서 참조자 검색 및 녹색 칩 표시
- LeaveController 참조 배열 유효성 검증 추가
- LeaveService에서 결재선 steps에 참조자 자동 병합
2026-03-10 00:10:16 +09:00
김보곤
2a82797926
fix: [hr] 급여관리 접근 권한 사용자 변경 (이경호 → 이의찬)
2026-03-10 00:10:16 +09:00
김보곤
b92a538cad
feat: [fire-shutter] 스크린형 가이드레일/평면도 등 develop 미반영분 통합
...
- 스크린형 가이드레일 3D 구조, 평면도 전면 재설계
- 연기차단재/슬롯 개방/LIP 방향 수정
- 벽체 토글, Undo 기능, 셔터박스 개선 등
2026-03-09 23:47:57 +09:00
김보곤
a6d93f7c02
fix: [database] codebridge 모델 cross-DB 관계 오류 수정
...
- samdb 공유 모델에 $connection = 'mysql' 명시적 선언
- codebridge 모델에서 eager-load 시 connection 상속 방지
- 영향 모델: User, Tenant, Department, Process, File(2), Approval, AiQuotationModule, InterviewProject
2026-03-09 23:35:44 +09:00
김보곤
12427326df
Reapply "feat: [database] codebridge DB 분리 재적용 - 55개 MNG 전용 모델만 설정"
...
This reverts commit 7371dda5a1 .
2026-03-09 23:18:02 +09:00
김보곤
2e0f8ddb9b
Reapply "feat: [database] Equipment 하위 4개 모델 codebridge connection 추가"
...
This reverts commit 1d5062a0b6 .
2026-03-09 23:18:02 +09:00
7371dda5a1
Revert "feat: [database] codebridge DB 분리 재적용 - 55개 MNG 전용 모델만 설정"
...
This reverts commit 48aa4505f5 .
2026-03-09 21:22:03 +09:00
1d5062a0b6
Revert "feat: [database] Equipment 하위 4개 모델 codebridge connection 추가"
...
This reverts commit ea5f064574 .
2026-03-09 21:21:58 +09:00
김보곤
ea5f064574
feat: [database] Equipment 하위 4개 모델 codebridge connection 추가
...
- EquipmentInspection, EquipmentInspectionDetail, EquipmentInspectionTemplate, EquipmentRepair
- equipments 테이블과 FK 참조 관계 → 동일 DB(codebridge)에서 관리
2026-03-09 20:58:44 +09:00
김보곤
48aa4505f5
feat: [database] codebridge DB 분리 재적용 - 55개 MNG 전용 모델만 설정
...
- API 사용 테이블 22개(23개 모델) 제외하고 55개 모델만 $connection = 'codebridge' 적용
- config/database.php에 codebridge connection 재추가
- 제외 대상: Barobill 12개, ESign 4개, Audit 2개, DevTools 1개, System 2개, HR 1개
2026-03-09 20:02:38 +09:00
김보곤
47ce1aaac6
fix: [fire-shutter] const p 중복 선언 제거
2026-03-09 11:41:04 +09:00
김보곤
e81eb67e85
feat: [fire-shutter] 셔터박스 조립식 철판 구조, 라벨 오픈폭/오픈H 변경
2026-03-09 11:39:20 +09:00
김보곤
0d913b3f9e
fix: [fire-shutter] 벽체 기본값 변경 (날개벽 600, 두께 600)
2026-03-09 11:33:27 +09:00
김보곤
71da28e26a
fix: [fire-shutter] hw 변수명 충돌 해결 (whw로 변경)
2026-03-09 11:30:30 +09:00
김보곤
0560b99617
fix: [fire-shutter] 벽체 기둥+인방 U자 일체형으로 이음새 제거
2026-03-09 11:29:18 +09:00
김보곤
59a0af1884
fix: [fire-shutter] 벽체 기둥-인방 겹침(z-fighting) 해결
2026-03-09 11:15:05 +09:00
김보곤
3d01649e4f
feat: [fire-shutter] 상단 설정 변경 시 3D 렌더링 동적 갱신
2026-03-09 11:09:49 +09:00
김보곤
4790433c64
refactor: [fire-shutter] 설정 영역을 전체 폭 상단바로 이동
2026-03-09 11:06:06 +09:00
김보곤
3ea2430e2e
fix: [fire-shutter] 상세설정 토글 버튼 $ 참조 오류 수정
2026-03-09 10:59:26 +09:00
김보곤
f6bbf65a00
fix: [finance] 거래처 등록 필수값 개선 (거래처명+사업자번호만 필수)
...
- 백엔드: bizNo 필수 검증 추가, trade_type/status null-safe 처리
- 프론트엔드: 사업자번호 필수 검증 + 라벨에 * 표시 추가
- 나머지 필드 비어있어도 저장 가능하도록 NOT NULL 컬럼 기본값 보장
2026-03-09 10:54:24 +09:00
김보곤
22bbab22e1
fix: [finance] 거래처 등록/수정 시 NOT NULL 컬럼 기본값 누락 수정
...
- type, category 컬럼이 NOT NULL인데 빈 값 전달 시 null 변환되어 DB 오류 발생
- store: null 대신 DB 기본값(vendor, 기타) 적용
- update: null 대신 기존 값 유지
2026-03-09 10:50:05 +09:00
김보곤
edffdfc501
refactor: [fire-shutter] 좌측패널 UI 구조 개선 - 4탭→3탭+상단 설정바
2026-03-09 10:28:07 +09:00
김보곤
8136fbe6b6
fix: [rd] 셔터박스 Z 오프셋을 샤프트 기반으로 변경
...
- 샤프트 앞면이 가이드레일(Z=0) 바로 뒤에 위치하도록 계산
- 철재: boxZOffset=-65mm (기존 -195mm), 스크린: -45mm (기존 -125mm)
- frontRatio 방식 제거, 샤프트 직경 기반 계산
2026-03-09 10:17:36 +09:00
김보곤
c6609018b9
feat: [rd] 방화셔터 제품별 셔터박스 기본 치수 + 비대칭 Z 오프셋
...
- 철재: 650×550mm, 스크린: 500×380mm 기본값 적용
- 제품 타입 전환 시 셔터박스 높이/깊이/샤프트경 자동 업데이트
- 비대칭 Z 오프셋: 가이드레일(Z=0) 기준 후면으로 더 돌출
- 철재: frontRatio 0.20 (앞 130mm, 뒤 520mm)
- 스크린: frontRatio 0.25 (앞 125mm, 뒤 375mm)
- 샤프트/모터/슬랫롤 Z 위치를 박스 중심에 동기화
2026-03-09 10:06:51 +09:00
김보곤
ef88d4044d
fix: [rd] 모터 Z 오프셋 절반 축소 + 중복 체인 박스 제거
...
- 모터 이격거리: 150mm → 75mm (motorZ: -270 → -195)
- 체인 직선 두께 박스(csTop/csBot) 제거, Line 경로만 유지
2026-03-09 09:48:11 +09:00
김보곤
920f858574
fix: [rd] 방화셔터 모터 Z 오프셋 150mm 추가 (슬랫 감김 간섭 방지)
2026-03-09 09:42:47 +09:00
김보곤
99cc6f24cd
feat: [rd] 방화셔터 3D 단품 보기(Isolation) 기능 추가
...
- 우클릭 컨텍스트 메뉴: 객체 클릭 시 '단품 보기', 빈 공간 시 '전체 보기'
- Raycaster 기반 객체 감지 (Group 자식까지 추적)
- 단품 보기 시 카메라 자동 포커스 (BoundingBox 기반)
- 상태 배지 표시 (클릭으로 전체 보기 복원)
- 재빌드 시 단품 상태 유지
2026-03-09 09:38:43 +09:00