# 재무/자금관리 기능

## 개요

SAM 프로젝트의 재무/자금관리 모듈은 회사의 자금 흐름을 종합적으로 관리하는 시스템입니다.
바로빌 API 연동을 통한 실시간 거래 조회, 계좌 관리, 자금 계획, 전표 관리 기능을 제공합니다.

## 메뉴 구성

| 메뉴 | 경로 | 설명 | UI 기술 |
|------|------|------|---------|
| [재무 대시보드](./finance-dashboard.md) | `/finance/dashboard` | 자금 현황 종합 요약 | Blade + JS |
| [일일자금일보](./daily-fund-report.md) | `/finance/daily-fund` | 기간별 계좌 입출금 현황 보고서 | React 18 |
| [자금계획일정](./fund-schedules.md) | `/finance/fund-schedules` | 입금/지급 예정 일정 관리 | Blade |
| [보유계좌관리](./bank-accounts.md) | `/finance/accounts` | 회사 은행계좌 정보 관리 | Blade + HTMX |
| [계좌입출금내역](./account-transactions.md) | `/finance/account-transactions` | 바로빌 연동 거래 조회 및 회계 분류 | React 18 |

## 아키텍처

```
┌─────────────────────────────────────────────────────────┐
│                    재무 대시보드                           │
│  (총 잔액, 예정 수입/지출, 최근 거래, 계좌별 잔액)         │
└──────────┬──────────────────┬──────────────────┬────────┘
           │                  │                  │
    ┌──────▼──────┐   ┌──────▼──────┐   ┌──────▼──────┐
    │ 보유계좌관리  │   │ 자금계획일정  │   │ 계좌입출금내역 │
    │ (계좌 CRUD)  │   │ (일정 CRUD)  │   │(바로빌 연동) │
    └──────┬──────┘   └──────┬──────┘   └──────┬──────┘
           │                  │                  │
    ┌──────▼──────────────────▼──────────────────▼──────┐
    │                   데이터베이스                       │
    │  bank_accounts, fund_schedules,                    │
    │  barobill_bank_transactions, journal_entries        │
    └──────────────────────────────────────────────────────┘
```

## 주요 기술 스택

| 기술 | 용도 |
|------|------|
| Laravel 11 (PHP 8.3) | 백엔드 프레임워크 |
| Blade + Tailwind CSS | 서버 렌더링 UI (대시보드, 계좌관리, 자금일정) |
| React 18 + Babel | 클라이언트 렌더링 UI (자금일보, 입출금내역) |
| HTMX | 부분 페이지 업데이트 (계좌 목록 등) |
| Barobill SOAP API | 은행 거래 실시간 연동 |
| MySQL 8.0 | 데이터 저장 |

## 데이터 흐름

```
바로빌 SOAP API ──→ barobill_bank_transactions ──→ 계좌입출금내역
                                                  ──→ 일일자금일보
                                                  ──→ 재무 대시보드

사용자 입력 ──→ bank_accounts ──→ 보유계좌관리
                              ──→ 재무 대시보드

사용자 입력 ──→ fund_schedules ──→ 자금계획일정
                               ──→ 재무 대시보드
```

## 공통 모델

| 모델 | 테이블 | 역할 |
|------|--------|------|
| `Finance\BankAccount` | `bank_accounts` | 보유 계좌 정보 |
| `Finance\FundSchedule` | `fund_schedules` | 자금 일정 |
| `Finance\DailyFundTransaction` | `daily_fund_transactions` | 일일자금 거래 |
| `Finance\DailyFundMemo` | `daily_fund_memos` | 일일자금 메모 |
| `Barobill\BankTransaction` | `barobill_bank_transactions` | 바로빌 거래내역 |
| `Barobill\BankTransactionOverride` | `barobill_bank_transaction_overrides` | 거래 수정 |
| `Barobill\BankTransactionSplit` | `barobill_bank_transaction_splits` | 거래 분개 |
| `Barobill\AccountCode` | `account_codes` | 계정과목 |

## 서비스 클래스

| 서비스 | 파일 | 주요 역할 |
|--------|------|----------|
| `BankAccountService` | `app/Services/BankAccountService.php` | 계좌 CRUD, 통계, 바로빌 연동 |
| `FundScheduleService` | `app/Services/FundScheduleService.php` | 일정 CRUD, 캘린더, 월별 요약 |
| `FcmApiService` | `app/Services/FcmApiService.php` | FCM 푸시 발송 (간접 관련) |
