Commit Graph

832 Commits

Author SHA1 Message Date
김보곤
13eab75da3 feat: [barobill] 회원사관리 페이지에서 미등록 테넌트 자동 생성
- 본사(tenant_id=1) 접근 시 barobill_members 레코드가 없는 테넌트에 기본 레코드 자동 생성
- 신규 생성 레코드는 status=pending, server_mode=test 기본값
- 테넌트의 사업자번호, 회사명, 대표자명을 자동 매핑
2026-02-21 11:21:24 +09:00
김보곤
1cf48f7c53 refactor: [barobill] chandj 레거시 DB 커넥션 및 동기화 기능 제거
- config/database.php에서 chandj 커넥션 정의 제거
- BarobillConfigController에서 syncCompanies(), getCompanies() 메서드 제거
- api.php에서 barobill/companies 동기화 라우트 제거
- 로컬/서버 .env에서 CHANDJ_DB_* 환경변수 제거
2026-02-21 10:47:51 +09:00
김보곤
06de27c570 feat: [barobill] 테넌트별 서버 모드 표시 통일 및 설정 페이지 제어 위젯 추가
- 공통 Blade 컴포넌트(barobill-tenant-header) 생성하여 중복 헤더 HTML 제거
- 설정 페이지에 서버 모드 확인/변경 위젯 추가 (본사만 변경 가능)
- 모든 바로빌 페이지(etax, hometax, eaccount, ecard, settings)에 서버 모드 배지 통일
- BarobillController의 settings(), bankAccount(), cardUsage()에 $isTestMode 전달 추가
2026-02-21 10:28:32 +09:00
김보곤
f85791611c fix: [etax] 공급받는자 검색 시 거래처 전체 정보 자동 입력
- API 응답에 대표자, 주소, 업태, 종목 필드 추가
- 거래처 선택 시 모든 필드 자동 매핑 (대표자, 주소, 업태, 종목)
- 검색 결과 목록에 대표자, 주소 정보 표시
2026-02-21 09:19:40 +09:00
김보곤
8dec2f7ec2 fix:법인카드 매월결제일 현재일자 기준 동적 계산 (결제일 지나면 익월로 자동 변경) 2026-02-20 19:56:06 +09:00
김보곤
9351e215e4 feat:통합정산 정산상세 승인취소 기능 추가 2026-02-20 19:26:42 +09:00
김보곤
40b2dd481f fix:계좌입출금내역 적요/내용에 상대계좌예금주명 중복 표시 수정
- parseTransactionLogs에서 TransRemark2를 summary에 합산하지 않도록 변경
- TransRemark2는 상대계좌예금주명(cast) 컬럼에서만 별도 표시
- 저장 후 재로드 시 remark2가 반복 합산되는 문제 해결

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 19:22:11 +09:00
df3feeade9 feat:품목관리 수식 산출 입력폼에 제품모델/설치타입/마감타입 추가
- 제품모델(KSS01~KDSS01), 설치타입(벽면형/측면형/혼합형), 마감타입(SUS/EGI) select 추가
- FG 코드 파싱으로 입력폼 자동 세팅 (FG-KQTS01-벽면형-SUS → 각 필드 매핑)
- calculateFormula() API 호출 시 새 파라미터 전송
- ItemManagementApiController에서 product_model/installation_type/finishing_type 수신 처리

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 15:41:14 +09:00
김보곤
0ac621bd49 fix:수당 정산 레코드 생성 시 파트너 타입별 요율 반영
- updateCommissionDate, updateReferrerCommission의 firstOrCreate에서
  partner_rate를 0 고정 → 파트너 타입(개인 20% / 단체 30%)에 따라 설정
- referrer_rate도 파트너 타입에 따라 설정 (개인 5% / 단체 3%)
- SalesCommissionService 상수 재사용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 15:15:35 +09:00
김보곤
f2f10d2f15 feat:고객 상세 모달에 계약 상세정보 보기 기능 추가
- 계약 및 납입 정보 옆에 '정보보기' 토글 버튼 추가
- 계약 상품 내역 (카테고리, 상품명, 개발비, 구독료, 할인율) 테이블 표시
- 수당 정산 내역 (계약금/잔금별 입금액, 수당, 지급예정일 등) 카드 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 14:55:52 +09:00
김보곤
44f443966a fix:수당지급현황통계 필터 UI 개선 - 기간설정 체크박스, 파트너/매니저 드롭박스 제거, 높이 수정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 14:18:07 +09:00
김보곤
fb47badb18 feat:정산관리 기간설정 체크박스 필터 추가 (시작~끝 년월 범위 조회)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 14:11:21 +09:00
김보곤
a945c63a83 Revert "feat:정산관리 기간설정 체크박스 필터 추가 (시작~끝 년월 범위 조회)"
This reverts commit 11c685bda7.
2026-02-20 14:08:01 +09:00
김보곤
1b36bdeb79 Revert "fix:정산관리 필터를 기간 범위 고정 방식으로 변경 (체크박스 제거, 컴팩트 1줄 레이아웃)"
This reverts commit 4d6081beb6.
2026-02-20 14:08:01 +09:00
김보곤
4d6081beb6 fix:정산관리 필터를 기간 범위 고정 방식으로 변경 (체크박스 제거, 컴팩트 1줄 레이아웃)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 14:04:21 +09:00
김보곤
11c685bda7 feat:정산관리 기간설정 체크박스 필터 추가 (시작~끝 년월 범위 조회)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 13:57:16 +09:00
김보곤
5a35e3fdfc fix:납입일 변경 시 통합정산 입금일(payment_date)도 함께 동기화
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 13:30:59 +09:00
김보곤
ef007a582a fix:납입일 변경 시 지급예정일(scheduled_payment_date)도 함께 재계산되도록 수정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 13:24:37 +09:00
김보곤
95e7728ff5 feat:거래처 선택 시 상세정보(대표자/주소/업태/종목/이메일) 자동 입력
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:57:48 +09:00
김보곤
63dd9bd510 feat:홈택스 수동입력 모달에 거래처 상세정보 필드 추가 (종사업장번호, 성명, 주소, 업태, 종목, 이메일)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:51:34 +09:00
a2c8731937 feat:품목관리 수식 산출에 전원(단상/삼상) 선택 추가
- 수식 입력 패널에 전원 Select 추가 (단상 220V / 삼상 380V)
- calculateFormula()에서 MP 변수 수집 및 API 전송
- Controller에서 MP 파라미터 수신 후 FormulaApiService로 전달

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:50:24 +09:00
f271f8bdc3 feat:품목관리 3-Panel 페이지 신규 구현 + FormulaEvaluatorService 연동
- 품목관리 3-Panel 레이아웃 (좌:목록, 중:BOM/수식산출, 우:상세)
- FormulaApiService로 API 견적수식 엔진 연동
- FG 품목 선택 시 기본값(W:1000, H:1000, QTY:1) 자동 산출
- 수식 산출 결과 트리 렌더링 (그룹별/소계/합계)
- 중앙 패널 클릭 시 우측 상세만 변경 (skipCenterUpdate)
- API 인증 버튼 전역 헤더로 이동 (모든 페이지에서 사용 가능)
- FormulaApiService에 Bearer 토큰 지원 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:50:24 +09:00
김보곤
ed1a792d37 feat:법인카드 결제 기능 개선 (동적 항목 입력, 선불결제→결제 명칭 변경)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:32:58 +09:00
김보곤
14b4f5c98e fix:부서 권한 관리 전체 거부 버튼 제거 + 초기화 deny-all로 변경 + 로딩 오버레이 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 09:47:00 +09:00
김보곤
c06a0d39aa fix:denyAllPermissions 권한 삭제 로직 개선 (직접 DB 쿼리로 변경)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 09:30:33 +09:00
김보곤
7849c63507 fix:발송 방식 선택 UI 개선 - 이메일/알림톡 선택 가능, 이메일 기본값, 리마인더 발송 방식 모달 추가 2026-02-19 23:55:28 +09:00
김보곤
3724bc4475 fix:알림톡 미설정 시 에러 방지 - 기본 발송을 이메일로 변경, 알림톡 실패 시 이메일 자동 폴백 2026-02-19 23:50:37 +09:00
김보곤
6cf440f349 fix:고객 검색을 TenantProspect(명함 등록 고객)에서 조회하도록 수정
- Tenant 대신 TenantProspect(tenant_prospects 테이블) 사용
- 업체명/사업자번호/대표자명/연락처로 검색
- 필드명 매칭: business_number, contact_phone, contact_email

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:44:17 +09:00
김보곤
bcc95ffafa feat:고객 서비스이용 계약서 - 고객 불러오기/계약번호 자동채번/기본값
- 테넌트(고객) 검색 API 추가 (searchTenants)
- 계약번호 자동 채번 API 추가 (CONTRACT-YYYYMMDD-N 형식)
- 고객 서비스이용 계약서 선택 시 "고객 불러오기" 버튼 표시
- 고객 선택 시 상호/사업자등록번호/주소/전화번호 자동 채움
- 총개발비 기본값 20,000,000 / 월구독료 기본값 500,000 자동 세팅
- TenantSearchModal 컴포넌트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:23:06 +09:00
김보곤
71f745bdb9 fix:거래처 검색을 trading_partners 테이블로 변경 (clients → trading_partners)
- Barobill/Client 모델 삭제, Finance/TradingPartner 모델 사용
- 거래처관리(finance/partners)와 동일한 데이터 소스 사용
- status='active' 필터 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 21:32:16 +09:00
김보곤
69f117ef8e fix:거래처코드 검색을 고유번호(id) 기반으로 변경
- Client::searchByCodeOrName → searchByIdOrName으로 변경
- 검색 기준: id(숫자일 때 정확 매칭) + name(LIKE 검색)
- 반환값: client_code 대신 id를 code로 반환

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 21:25:08 +09:00
김보곤
072268a1cf feat:계좌 입출금내역 거래처코드 검색 기능 추가
- Client 모델 생성 (거래처 검색용)
- EaccountController에 searchClients API 추가
- save/parseTransactionLogs/convertManualToLogs/convertDbToRawLog에 client_code/client_name 필드 추가
- ClientCodeSelect 컴포넌트 추가 (서버 검색 기반 debounce 드롭다운)
- 테이블에 거래처코드 컬럼 추가
- BankTransaction 모델 fillable에 client_code/client_name 추가
- 라우트에 clients/search 엔드포인트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 21:18:31 +09:00
김보곤
1686198fcd feat:바로빌 계좌 입출금내역 API 캐싱 전략 구현
- BankSyncStatus 모델 추가 (월별 동기화 상태 추적)
- BankTransaction에 getCachedByMonth() 메서드 추가
- EaccountController fetchAccountTransactions() 캐싱 로직 적용
  - 과거 월: sync 레코드 존재 시 DB 캐시 반환
  - 현재 월: 10분 이내 sync이면 DB 캐시 반환, 초과 시 API 재호출
  - 미동기화: API 호출 → DB 자동 저장 → sync 상태 갱신
- cacheApiTransactions(): insertOrIgnore로 기존 레코드 보호
- convertDbToRawLog(): DB→SOAP 객체 변환 (기존 파싱 로직 호환)
- updateSyncStatus(): 동기화 상태 upsert

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:48:35 +09:00
김보곤
fea28d6652 fix:바로빌 계좌 입출금내역 긴 기간 검색 시 데이터 누락 수정 2026-02-19 20:35:17 +09:00
김보곤
ecbb8e4cc7 feat:수당지급현황통계 페이지 고도화 (종합 대시보드)
- 필터: 년/월 범위, 상태, 지급유형, 파트너, 매니저, 검색어
- 통계 카드 4→8개 (총 발생액, 지급완료, 미지급, 파트너수, 유형별 합계, 평균)
- 차트 4→6개 (월별 추이, 유형비율, Top10, 상태분포 건수/금액, 파트너vs매니저)
- 테이블 1→3개 탭 (월별 요약, 파트너별 결산, 매니저별 결산 + 완료율 프로그레스바)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:59:45 +09:00
김보곤
c5edefc5a3 fix:구독관리 탭 조회조건 변경 (contracted→hq_status=handover)
인계(handover) 완료된 업체 = 구독 업체로 간주.
기존 contracted() 스코프 + subscription_fee 조건 대신
hq_status='handover' 조건으로 변경. 불필요한 상태 필터 제거.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:12:45 +09:00
김보곤
a4e7740379 fix:협업지원금 빈값 저장 시 null 오류 수정
referrer_commission 컬럼이 NOT NULL인데 빈값을 null로 저장하려 해서
Integrity constraint violation 발생. 빈값은 0으로 처리하도록 수정.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:48:02 +09:00
김보곤
4e03df5624 feat:상세 모달에 구분/계약일/납입일/인계일 정보 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:38:08 +09:00
김보곤
6a846a1c0d feat:계약일 date input 입력 가능하게 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:34:07 +09:00
김보곤
6a7a8d00d0 feat:영업파트너 고객관리 인계일 컬럼 동적 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:27:12 +09:00
김보곤
4ddc1efa34 refactor:영업파트너 고객관리 테이블 정리 + 정산관리에 수당지급일 관리 이동
- 고객관리 테이블: 1차수당/2차수당/매니저수당/협업지원금/등록일 열 제거, 계약일 열 추가 (16열→12열)
- 정산관리 수당정산 테이블: 수당지급일/매니저지급일/협업지원금 인라인 편집 컬럼 추가
- SalesCommissionController에 updateCommissionDate 메서드 추가
- 불필요한 JS 함수 제거 (saveReferrerCommission, checkHandoverStatus)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:20:42 +09:00
김보곤
e7ab389023 fix:단체 파트너 수당 - 1차/2차 납입 시 deposit/balance 레코드 분리 생성
기존에는 management당 하나의 커미션 레코드만 생성되어 수당리스트에 계약금만 표시됨.
이제 1차 필드(first_*)는 deposit 레코드, 2차 필드(second_*)는 balance 레코드로
분리하여 양쪽 모두 수당리스트에 나타남.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:01:07 +09:00
김보곤
7e741884d6 feat:구독관리 탭 실제 구독자 데이터 표시 (sales_contract_products 기반)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:45:14 +09:00
김보곤
7c93fd414e fix:수당 정산 DB 값 정상화 - 비즈니스 룰 반영
- 상수: DEFAULT_MANAGER_RATE 제거, 유치수당률 개인5%/단체3% 분리
- createCommission: 파트너 resolve fallback 추가, 매니저수당=구독료1개월
- approve/bulkApprove: 금액 0원 기존 레코드 승인 시 자동 재계산
- recalculateCommission: 신규 메서드 추가 (partner_id/금액 정상화)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:32:12 +09:00
김보곤
d5aab85731 fix:고객사정산 탭 데이터 표시 개선 (수당정산 탭과 동일 fallback 로직 적용)
- 담당파트너: salesPartner→user → tenantProspect→registeredBy fallback 추가
- 개발비/계약금/잔금: contractProducts 기반 계산 fallback 추가
- 구독료: contractProducts fallback 추가
- eager loading에 tenantProspect.registeredBy.salesPartner, contractProducts 추가
- 파트너 필터에 tenantProspect.registeredBy 경로 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:21:50 +09:00
김보곤
2c1b59249a feat:수당 정산 테이블에 개인/단체 구분 컬럼 추가
- 구분 컬럼: partner_type 기반 개인(sky)/단체(purple) 배지
- 단체: 파트너 30%, 매니저 0%, 유치 3%
- 개인: 파트너 20%, 매니저 5%, 유치 3%
- eager loading에 registeredBy.salesPartner 추가 (타입 판별용)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:04:03 +09:00
김보곤
bf51e14e54 fix:수당 정산 금액을 management 데이터에서 자동 계산
- commission 금액이 0일 때 management의 total_registration_fee/contractProducts에서 계산
- 기준액 = 총개발비 / 2, 입금액 = 기준액 (계약금/잔금 각 50%)
- 파트너수당 = 기준액 × 20%, 매니저수당 = 기준액 × 5%, 유치수당 = 기준액 × 3%
- eager loading에 management.contractProducts 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:01:38 +09:00
김보곤
706e1e3de4 fix:유치파트너를 영업파트너의 parent(상위자)로 표시
- 유치파트너 = 영업파트너 user의 parent_id (User→parent 관계)
- partner→user→parent, salesPartner→user→parent, registeredBy→parent 순 fallback
- eager loading 정리 (불필요한 referrer 체인 제거, parent 관계 추가)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 14:54:32 +09:00
김보곤
053e095da0 fix:영업파트너/유치파트너 tenantProspect.registeredBy fallback 추가
- 영업파트너: tenantProspect→registeredBy(가망고객 등록자) 경로 추가
- 유치파트너: registeredBy→salesPartner→referrer 경로 추가
- eager loading에 management.tenantProspect.registeredBy.salesPartner.referrer.user 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 14:50:30 +09:00
김보곤
0ae7498a74 fix:수당 정산 테이블 전체 fallback 로직 개선
- 입금액: commission이 0이면 management의 deposit/balance 금액으로 fallback
- 유치파트너: commission→referrerPartner → partner→referrer → management→salesPartner→referrer 순 fallback
- 매니저: commission→manager → management→manager 순 fallback
- 파트너/매니저/유치 수당 0원일 때 '-' 표시
- 수당률 0%일 때 숨김 처리
- eager loading에 partner.referrer.user, management.salesPartner.referrer.user 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 14:47:36 +09:00