- 공통 Blade 컴포넌트(barobill-tenant-header) 생성하여 중복 헤더 HTML 제거
- 설정 페이지에 서버 모드 확인/변경 위젯 추가 (본사만 변경 가능)
- 모든 바로빌 페이지(etax, hometax, eaccount, ecard, settings)에 서버 모드 배지 통일
- BarobillController의 settings(), bankAccount(), cardUsage()에 $isTestMode 전달 추가
- parseTransactionLogs에서 TransRemark2를 summary에 합산하지 않도록 변경
- TransRemark2는 상대계좌예금주명(cast) 컬럼에서만 별도 표시
- 저장 후 재로드 시 remark2가 반복 합산되는 문제 해결
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Barobill/Client 모델 삭제, Finance/TradingPartner 모델 사용
- 거래처관리(finance/partners)와 동일한 데이터 소스 사용
- status='active' 필터 적용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Client::searchByCodeOrName → searchByIdOrName으로 변경
- 검색 기준: id(숫자일 때 정확 매칭) + name(LIKE 검색)
- 반환값: client_code 대신 id를 code로 반환
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- 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>
- 기존: balance 제외 4컬럼 매칭 → 같은 시간/금액의 다른 거래가 중복으로 처리됨
- 수정: balance 포함 5컬럼 매칭 → DB unique 제약조건과 동일하게 정확히 식별
- update 시 balance 제외 (매칭 조건이므로 변경 불필요)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
페이지 로드 시 바로빌 API를 백그라운드에서 호출하여 신규 데이터를 자동 동기화.
수동 데이터소스 토글/저장 버튼 제거, 항상 로컬 DB에서 즉시 표시 후 증분 동기화.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- BarobillService에 KAKAOTALK SOAP 클라이언트 추가
- 채널/템플릿 관리, 알림톡/친구톡 발송, 전송조회/예약취소 API
- BarobillKakaotalkController (API) 생성: 15개 엔드포인트
- KakaotalkController (페이지) 생성: 5개 페이지
- 라우트 등록 (web.php, api.php)
- Blade 뷰 5개 생성: 대시보드, 채널관리, 템플릿관리, 발송, 전송내역
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 카드번호 문자형 출력 (="번호" 형식으로 과학적 표기 방지)
- 사업자번호, 가맹점명 열 추가
- 합계금액/공급가액/세액 3열로 분리 (화면과 동일)
- 분개 행도 공급가액/세액 분리 출력
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
수동 거래의 balance는 화면에서 재계산된 값이므로 DB 원본값과 다름.
save()에서 처리하면 잘못된 레코드 매칭 또는 unique key 충돌 발생.
수동 거래는 updateManual()에서만 처리하도록 스킵.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
수동 거래의 balance는 화면에서 재계산(recalcManualBalances)되어 표시되므로
DB의 원본값과 다름. 프론트에서 재계산된 balance를 보내면 다른 레코드와
unique key 충돌 발생. 수정 시 적요/예금주명 등 비-키 필드만 업데이트.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
수동 거래 수정 시 Eloquent가 deposit/withdraw/balance를
dirty로 오감지 (DB "515900.00" vs validation 515900 비교).
DB::table()로 변경하여 지정 필드만 정확히 업데이트.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
Eloquent 모델의 decimal:2 cast가 balance를 dirty로 잘못 감지하여
UPDATE 시 balance가 포함되면서 unique 제약조건 위반 발생.
Query Builder(DB::table)로 변경하여 지정 필드만 업데이트.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
인라인 편집으로 cast 저장 시 override 테이블의 modified_cast가
메인 테이블 값보다 우선하여 이전 값이 표시되는 문제.
save() 후 override의 modified_cast를 동기화(제거)하여 충돌 방지.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
같은 출금금액이라도 잔액(balance)이 다르면 별도 거래로 인식하도록 개선.
기존에는 balance 없이 매칭하여 김종성/곽형석 등 다른 거래가 같은 키로 인식되는 문제 수정.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- HometaxInvoiceJournal 모델 신규 생성
- HometaxInvoice에 journals() 관계 추가
- HometaxController: 저장 로직 변경 + 조회/삭제 엔드포인트 추가
- HometaxSyncService: hasJournal 필드 추가
- 프론트엔드: 분개완료 상태 표시, 기존 분개 로드/수정/삭제 지원
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- corp_name 필드 sometimes→nullable 변경 (null 전달 시 string 오류 방지)
- tax_amount nullable 처리, 미입력 시 0
- 한글 validation 메시지 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
invoicer_corp_name, invoicee_corp_name에 null coalescing 추가
매출 입력 시 invoicer 필드가 null로 전달되어 DB NOT NULL 제약 위반 발생
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 같은 거래가 잔액만 다르게 저장된 경우도 중복으로 인식하도록 수정
- save() upsert에서도 balance 제외하여 향후 중복 방지
- 기존 레코드 발견 시 balance도 갱신
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- periodReport에서 동일 거래(계좌+일시+금액) 중복 제거 로직 추가
- EaccountController save() 금액 비교를 정수 캐스트로 변경하여 decimal 정밀도 차이 중복 방지
- 합계행 잔액 계산 시 Number() 캐스트로 NaN 방지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 수동입력: MAN-YYYYMMDD-NNN 형식 자동채번, 생성/수정/삭제
- 분개: 세금계산서에서 일반전표 자동 생성 (매출/매입 패턴)
- 카드내역 참조: 수동입력 시 카드사용내역에서 금액/거래처 자동채움
- 테이블에 액션 컬럼 추가 (분개/수정/삭제 버튼)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- BankTransactionSplit 모델 생성
- EaccountController에 splits/saveSplits/deleteSplits 메서드 추가
- 라우트 3개 추가 (GET/POST/DELETE splits)
- BankSplitModal React 컴포넌트 추가
- TransactionTable에 분개 컬럼/하위행 렌더링
- App 컴포넌트에 분개 상태 및 핸들러 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- BankAccountController에 HX-Redirect 추가 (HTMX 네비게이션 시 스크립트 실행 보장)
- latestBalances() 수동입력 거래 포함 정확한 잔액 계산으로 개선
- N+1 쿼리 제거: 전체 거래를 한번에 조회 후 계좌별 그룹화 처리
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- findBaseBalance를 이전 전체 거래 순회 방식으로 변경
- API 데이터는 바로빌 잔액을 그대로 사용
- 수동입력 건(잔액 0 저장)은 입출금 누적으로 잔액 계산
- 9월 수동입력 → 10월 조회 시 정확한 이전 잔액 적용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 조회기간 이전의 마지막 잔액을 DB에서 조회하여 기준값으로 사용
- findBaseBalance() 메소드 추가: 조회 시작일 이전 최종 잔액 탐색
- 수동입력 건의 잔액이 0에서 시작하지 않고 이전 실제 잔액에서 계산
- 단일계좌/전체계좌/수동건만 조회 모든 케이스에 적용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- /finance/card-transactions에서 EcardController 직접 호출 (리디렉션 제거)
- /barobill/ecard index는 재무관리로 리디렉션
- 데이터 API 라우트(cards, transactions 등)는 barobill 하위 유지
- 바로빌 메뉴에서 카드 사용내역 제거 (재무관리에 이미 존재)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 기본 조회 건수 50 → 200으로 변경
- 단일 카드 조회 시 전체 데이터를 가져와서 통계 계산 후 로컬 페이지네이션
- 상단 통계(총 사용금액, 공제, 불공제)가 페이지네이션과 무관하게 전체 조회기간 반영
- 페이지네이션 중일 때 프론트엔드 재계산이 백엔드 통계를 덮어쓰지 않도록 수정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 재무관리 > 계좌거래내역 → 계좌입출금내역으로 명칭 변경
- /finance/account-transactions에서 EaccountController 직접 호출 (리디렉션 제거)
- /barobill/eaccount index는 재무관리로 리디렉션
- 데이터 API 라우트(accounts, transactions 등)는 barobill 하위 유지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- recalcManualBalances() 메서드 추가: 병합된 로그를 시간순으로 순회하며
수동입력 건의 잔액을 직전 거래 잔액 + 입금 - 출금으로 재계산
- 단일 계좌/전체 계좌/수동건만 있는 경우 모두 적용
- API 거래의 잔액은 그대로 유지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- BankTransaction 모델에 is_manual 필드 추가
- EaccountController에 storeManual/updateManual/destroyManual 메서드 추가
- transactions() 메서드에서 수동입력 데이터와 API 데이터 병합
- 라우트에 수동입력 관련 POST/PUT/DELETE 추가
- 뷰에 ManualEntryModal 컴포넌트 추가 (계좌선택, 입금/출금 유형, 금액 등)
- 거래 목록에 수동 뱃지, 수정/삭제 버튼 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- BankTransactionOverride 모델 추가 (오버라이드 데이터 관리)
- EaccountController에 saveOverride 엔드포인트 추가
- parseTransactionLogs에서 오버라이드 데이터 병합 로직 추가
- 프론트엔드에 TransactionEditModal 컴포넌트 추가
- 적요 셀 클릭 시 수정 모달 표시
- 오버라이드된 항목 시각적 표시 (배경색, 수정 배지)
- 원본 복원 기능 포함
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- latestBalances API 추가 (barobill_bank_transactions 테이블)
- 바로빌 GetBankAccountEx 대신 로컬 DB 최신 잔액 사용
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>