Commit Graph

43 Commits

Author SHA1 Message Date
김보곤
614cbaef15 fix: [eaccount] 계좌 입출금내역 적요 중복 표시 수정
- BankTransaction::cleanSummary() 메서드 추가: 상대계좌예금주명(cast) 중복 제거
- parseTransactionLogs: 적요 표시 시 remark2 중복 제거 적용
- cacheApiTransactions: DB 저장 시에도 중복 제거 적용
- 기존 DB 데이터 45건 정리 완료
2026-03-03 21:11:52 +09:00
김보곤
005020f5ec fix: [bank-transaction] uniqueKey에 적요(summary) 추가하여 동일 금액·시간 거래 구분
- BankTransaction 모델: getUniqueKeyAttribute, generateUniqueKey에 summary 추가
- EaccountController: API 응답 및 DB upsert 시 summary 포함 매칭
- JournalEntry, JournalEntryController: 레거시(5필드) 키 호환 처리
- BankTransactionOverride: 레거시 키 호환 조회
2026-02-23 16:02:36 +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
김보곤
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
김보곤
fc16886f05 fix:계좌입출금 저장 시 동일 거래일시 레코드 덮어쓰기 방지
- 기존: balance 제외 4컬럼 매칭 → 같은 시간/금액의 다른 거래가 중복으로 처리됨
- 수정: balance 포함 5컬럼 매칭 → DB unique 제약조건과 동일하게 정확히 식별
- update 시 balance 제외 (매칭 조건이므로 변경 불필요)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 10:10:38 +09:00
김보곤
2609437063 fix:바로빌 거래 저장 시 잔액 차이 중복 방지 및 기존 중복 자동 정리 2026-02-10 21:45:30 +09:00
김보곤
5596ed0e76 fix:mergeWithDedup 반환 형식 수정 및 합계 금액 중복 차감 2026-02-10 17:19:29 +09:00
김보곤
352b521fcf fix:수동/API 중복 거래 제거 (mergeWithDedup) + 디버그 로그 2026-02-10 17:17:53 +09:00
김보곤
892778b7eb fix:save() 디버그 로그 추가 (수동거래 저장 문제 추적) 2026-02-10 17:04:37 +09:00
김보곤
d01253aa27 fix:save()에서 수동 거래를 dbId로 직접 업데이트
수동 거래는 balance가 재계산되어 composite key 매칭 불가.
dbId를 사용하여 직접 레코드를 찾고 비-키 필드만 업데이트.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 16:57:48 +09:00
김보곤
2c3bccb9a0 fix:save()에서 수동 거래 스킵 (재계산 balance로 인한 충돌 방지)
수동 거래의 balance는 화면에서 재계산된 값이므로 DB 원본값과 다름.
save()에서 처리하면 잘못된 레코드 매칭 또는 unique key 충돌 발생.
수동 거래는 updateManual()에서만 처리하도록 스킵.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 16:55:48 +09:00
김보곤
cc4cf64248 fix:수동거래 수정 시 unique key 컬럼(deposit/withdraw/balance) 제외
수동 거래의 balance는 화면에서 재계산(recalcManualBalances)되어 표시되므로
DB의 원본값과 다름. 프론트에서 재계산된 balance를 보내면 다른 레코드와
unique key 충돌 발생. 수정 시 적요/예금주명 등 비-키 필드만 업데이트.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 16:52:44 +09:00
김보곤
587c21fa11 fix:updateManual()도 Query Builder로 전환 (numeric dirty 감지 문제)
수동 거래 수정 시 Eloquent가 deposit/withdraw/balance를
dirty로 오감지 (DB "515900.00" vs validation 515900 비교).
DB::table()로 변경하여 지정 필드만 정확히 업데이트.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 16:48:28 +09:00
김보곤
1cab267ec6 fix:입출금내역 save()를 순수 Query Builder로 전환
Eloquent 모델의 decimal cast + opcache 캐시 문제로 인해
deposit/withdraw/balance가 dirty 감지되어 unique 제약조건 위반.
- Eloquent 완전 우회: DB::table() 기반 lookup + update + insert
- CAST(AS SIGNED) 제거: 정확한 decimal 비교로 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 16:42:13 +09:00
김보곤
f73e8a18a1 fix:입출금내역 저장 시 decimal:2 cast dirty 감지로 인한 unique 제약조건 위반 수정
Eloquent 모델의 decimal:2 cast가 balance를 dirty로 잘못 감지하여
UPDATE 시 balance가 포함되면서 unique 제약조건 위반 발생.
Query Builder(DB::table)로 변경하여 지정 필드만 업데이트.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 16:35:04 +09:00
김보곤
13f2e1df73 fix:입출금내역 상대계좌예금주명 저장 후 원복되는 문제 수정
인라인 편집으로 cast 저장 시 override 테이블의 modified_cast가
메인 테이블 값보다 우선하여 이전 값이 표시되는 문제.
save() 후 override의 modified_cast를 동기화(제거)하여 충돌 방지.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 16:25:00 +09:00
김보곤
20568765e0 fix:계좌 입출금내역 저장 키값에 balance 추가하여 동일 금액 다른 거래 구분
같은 출금금액이라도 잔액(balance)이 다르면 별도 거래로 인식하도록 개선.
기존에는 balance 없이 매칭하여 김종성/곽형석 등 다른 거래가 같은 키로 인식되는 문제 수정.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:39:16 +09:00
김보곤
64ac667cfd fix:계좌 입출금내역 상대계좌예금주명/적요 업데이트 누락 수정
기존 거래 업데이트 시 cast(상대계좌예금주명), summary(적요)가
업데이트 대상에서 빠져있어 저장되지 않던 문제 수정

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 17:46:57 +09:00
김보곤
eaa3490c9a fix:일일자금일보 중복 제거 키에서 balance 제외
- 같은 거래가 잔액만 다르게 저장된 경우도 중복으로 인식하도록 수정
- save() upsert에서도 balance 제외하여 향후 중복 방지
- 기존 레코드 발견 시 balance도 갱신

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:59:21 +09:00
김보곤
e9466344c9 fix:일일자금일보 거래 중복 표시 및 잔액 NaN 버그 수정
- periodReport에서 동일 거래(계좌+일시+금액) 중복 제거 로직 추가
- EaccountController save() 금액 비교를 정수 캐스트로 변경하여 decimal 정밀도 차이 중복 방지
- 합계행 잔액 계산 시 Number() 캐스트로 NaN 방지

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:55:27 +09:00
김보곤
ce08d0110a feat:계좌 입출금내역 분개(Split) 기능 구현
- BankTransactionSplit 모델 생성
- EaccountController에 splits/saveSplits/deleteSplits 메서드 추가
- 라우트 3개 추가 (GET/POST/DELETE splits)
- BankSplitModal React 컴포넌트 추가
- TransactionTable에 분개 컬럼/하위행 렌더링
- App 컴포넌트에 분개 상태 및 핸들러 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 14:43:21 +09:00
김보곤
fcebb5b219 fix:계좌관리 페이지 HX-Redirect 추가 및 잔액 계산 개선
- BankAccountController에 HX-Redirect 추가 (HTMX 네비게이션 시 스크립트 실행 보장)
- latestBalances() 수동입력 거래 포함 정확한 잔액 계산으로 개선
- N+1 쿼리 제거: 전체 거래를 한번에 조회 후 계좌별 그룹화 처리

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:28:40 +09:00
김보곤
74b810e894 fix:계좌 잔액 기준값 계산 개선 - 수동입력 건도 누적 추적
- findBaseBalance를 이전 전체 거래 순회 방식으로 변경
- API 데이터는 바로빌 잔액을 그대로 사용
- 수동입력 건(잔액 0 저장)은 입출금 누적으로 잔액 계산
- 9월 수동입력 → 10월 조회 시 정확한 이전 잔액 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 12:54:15 +09:00
김보곤
b151fa30c0 fix:계좌 입출금내역 수동입력 잔액 계산 개선
- 조회기간 이전의 마지막 잔액을 DB에서 조회하여 기준값으로 사용
- findBaseBalance() 메소드 추가: 조회 시작일 이전 최종 잔액 탐색
- 수동입력 건의 잔액이 0에서 시작하지 않고 이전 실제 잔액에서 계산
- 단일계좌/전체계좌/수동건만 조회 모든 케이스에 적용

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 12:51:08 +09:00
김보곤
6341e96367 refactor:계좌입출금내역 메뉴를 재무관리로 이동
- 재무관리 > 계좌거래내역 → 계좌입출금내역으로 명칭 변경
- /finance/account-transactions에서 EaccountController 직접 호출 (리디렉션 제거)
- /barobill/eaccount index는 재무관리로 리디렉션
- 데이터 API 라우트(accounts, transactions 등)는 barobill 하위 유지

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 11:31:17 +09:00
김보곤
0f40ca673a fix:수동입력 건 잔액을 직전 거래 기준으로 자동 재계산
- recalcManualBalances() 메서드 추가: 병합된 로그를 시간순으로 순회하며
  수동입력 건의 잔액을 직전 거래 잔액 + 입금 - 출금으로 재계산
- 단일 계좌/전체 계좌/수동건만 있는 경우 모두 적용
- API 거래의 잔액은 그대로 유지

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 11:20:12 +09:00
김보곤
17547aa4ae feat:계좌 입출금내역 수동입력 기능 추가
- BankTransaction 모델에 is_manual 필드 추가
- EaccountController에 storeManual/updateManual/destroyManual 메서드 추가
- transactions() 메서드에서 수동입력 데이터와 API 데이터 병합
- 라우트에 수동입력 관련 POST/PUT/DELETE 추가
- 뷰에 ManualEntryModal 컴포넌트 추가 (계좌선택, 입금/출금 유형, 금액 등)
- 거래 목록에 수동 뱃지, 수정/삭제 버튼 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 11:00:58 +09:00
김보곤
fd0b8d8536 feat:바로빌 계좌 거래내역 적요/내용 수정 기능 추가
- BankTransactionOverride 모델 추가 (오버라이드 데이터 관리)
- EaccountController에 saveOverride 엔드포인트 추가
- parseTransactionLogs에서 오버라이드 데이터 병합 로직 추가
- 프론트엔드에 TransactionEditModal 컴포넌트 추가
- 적요 셀 클릭 시 수정 모달 표시
- 오버라이드된 항목 시각적 표시 (배경색, 수정 배지)
- 원본 복원 기능 포함

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 09:57:55 +09:00
김보곤
a7670c6ecf fix:재무 대시보드 계좌 잔액을 DB 저장된 최신 거래내역에서 조회
- latestBalances API 추가 (barobill_bank_transactions 테이블)
- 바로빌 GetBankAccountEx 대신 로컬 DB 최신 잔액 사용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 06:23:28 +09:00
김보곤
83a438a030 fix:계정과목을 글로벌 데이터로 변경 (테넌트 무관) 2026-02-03 09:56:30 +09:00
김보곤
f5ec680118 fix:applyMemberServerMode에서 is_active 조건 제거
- 기존: environment + is_active=true 조건으로 config 조회
  → 운영 모드 config의 is_active가 false라 certKey 적용 안됨
- 수정: environment만으로 조회하여 테넌트별 서버 모드 지원
- 운영/테스트 모드 전환 시 올바른 CERTKEY 적용됨
- 4개 컨트롤러 모두 동일 패턴 적용 및 로깅 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 09:06:02 +09:00
김보곤
0b2b0b20aa fix:바로빌 API 메서드에 테넌트별 서버 모드 적용
- 각 API 메서드(cards, transactions, accounts, issue 등)에서
  테넌트의 server_mode 설정에 따라 SOAP 클라이언트 재초기화
- 기존에는 index()에서만 적용되어 별도 HTTP 요청인 API 호출 시
  기본 설정으로 돌아가는 버그 수정
- EcardController, EaccountController, EtaxController, HometaxController 모두 적용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 09:00:06 +09:00
김보곤
83b2c1d16c fix:바로빌 컨트롤러 테넌트별 서버 모드 적용
- EtaxController, EaccountController, EcardController, HometaxController에
  테넌트별 서버 모드(server_mode) 적용 로직 추가
- applyMemberServerMode() 메서드로 회원사별 테스트/운영 서버 전환
- 기존 전역 BarobillConfig 대신 BarobillMember.server_mode 우선 적용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 07:53:36 +09:00
pro
453d689ab0 feat:계정과목 설정 기능 추가 (더존 표준 계정과목)
- account_codes 테이블 및 모델 생성
- 더존 표준 계정과목 163개 시더 추가
- 계정과목 CRUD API 추가 (추가/수정/삭제/조회)
- 계정과목 설정 모달 UI 구현
- 분류별 필터링 및 검색 기능
- 사용/미사용 토글 기능

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:31:10 +09:00
pro
f05ab4413a feat:입출금내역 취급점 열 추가 및 상대계좌예금주명 직접입력
- 취급점(수단) 열 추가 (바로빌 transOffice 필드)
- 상대계좌예금주명 직접 입력 가능하도록 input 필드로 변경
- 저장된 상대계좌예금주명 값 로드 시 병합
- 엑셀 내보내기에 취급점 열 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:20:07 +09:00
pro
44da9d6595 fix:입출금내역 상대방→상대계좌예금주명 변경 및 CERTKEY 분리
- 상대방 레이블을 상대계좌예금주명으로 변경
- AccountName 필드 우선 확인 (Cast fallback)
- EaccountController CERTKEY 테스트/운영 분리 적용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:09:20 +09:00
pro
cfbe014731 fix:저장된 계정과목 매칭 키 형식 통일
- decimal과 float 형식 차이로 매칭 실패하는 문제 수정
- 금액을 정수로 변환하여 키 생성

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:15:18 +09:00
pro
3c32c5917c feat:입출금내역 계정과목 추가 및 엑셀 다운로드 기능
- BankTransaction 모델: 입출금 내역 저장 (계정과목 포함)
- 바로빌 데이터와 DB 저장 데이터 매칭하여 계정과목 유지
- 계정과목 드롭다운 선택 및 저장 기능
- 엑셀(CSV) 다운로드 기능
- 저장된 행은 녹색 배경으로 표시

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:09:36 +09:00
pro
71080389c8 feat:계좌 입출금내역 조회 페이지 추가
- EaccountController.php: 바로빌 BANKACCOUNT.asmx SOAP API 연동
  - GetBankAccountEx: 등록된 계좌 목록 조회
  - GetPeriodBankAccountTransLog: 계좌 입출금내역 조회
- index.blade.php: React 기반 UI (전자세금계산서와 동일 구조)
  - 테넌트 정보 카드
  - 통계 카드 (입금/출금/계좌수/거래건수)
  - 계좌 선택 버튼
  - 기간 조회 필터 (이번달/지난달 버튼)
  - 입출금 내역 테이블 (스크롤)
- 라우트 추가: /barobill/eaccount
- 메뉴 시더 업데이트

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 10:13:28 +09:00