# 정산관리 기능

## 개요

SAM 프로젝트의 정산관리 모듈은 영업수수료, 컨설팅비용, 고객사별 정산, 구독료 등
다양한 정산 업무를 종합적으로 관리하는 시스템입니다.
입금 등록, 수당 자동 계산, 승인 프로세스, 지급 추적, 통계 기능을 제공합니다.

## 메뉴 구성

| 메뉴 | 경로 | 설명 | UI 기술 |
|------|------|------|---------|
| [영업수수료정산](./sales-commissions.md) | `/finance/sales-commissions` | 영업파트너/매니저 수당 정산 | Blade + HTMX |
| [컨설팅비용정산](./consulting-fees.md) | `/finance/consulting-fee` | 컨설턴트별 상담수수료 관리 | React 18 |
| [고객사정산](./customer-settlements.md) | `/finance/customer-settlement` | 고객사별 매출/비용 정산 | React 18 |
| [구독료정산](./subscriptions.md) | `/finance/subscription` | 구독 플랜별 과금 관리 | React 18 |

## 아키텍처

```
┌───────────────────────────────────────────────────────────────┐
│                       정산관리 모듈                             │
├───────────────┬───────────────┬───────────────┬───────────────┤
│ 영업수수료정산  │ 컨설팅비용정산 │  고객사정산    │  구독료정산    │
│ (Blade+HTMX)  │ (React 18)   │ (React 18)   │ (React 18)   │
│               │              │              │               │
│ 입금등록      │ 상담기록     │ 월별정산     │ 플랜관리      │
│ 수당자동계산  │ 시급계산     │ 매출/비용    │ MRR/ARR      │
│ 승인프로세스  │ 상태관리     │ 순정산액     │ 과금주기      │
│ 지급추적     │              │              │ 사용자수      │
└───────┬───────┴───────┬───────┴───────┬───────┴───────┬───────┘
        │               │               │               │
        ▼               ▼               ▼               ▼
┌───────────────────────────────────────────────────────────────┐
│                     데이터베이스                                │
│  sales_commissions, sales_commission_details,                 │
│  consulting_fees, customer_settlements, subscriptions         │
└───────────────────────────────────────────────────────────────┘
```

## 주요 기술 스택

| 기술 | 용도 |
|------|------|
| Laravel 11 (PHP 8.3) | 백엔드 프레임워크 |
| Blade + HTMX | 영업수수료정산 UI (부분 업데이트, 모달) |
| React 18 + Babel | 컨설팅/고객사/구독료 UI (브라우저 트랜스파일링) |
| Tailwind CSS + Lucide | 스타일링 및 아이콘 |
| MySQL 8.0 | 데이터 저장 |

## 데이터 흐름

```
영업수수료정산:
  sales_tenant_managements (계약) → 입금 등록
      ↓
  sales_commissions (수당 자동 계산)
      ├── sales_commission_details (상품별 상세)
      └── 승인 → 지급완료 프로세스

컨설팅비용정산:
  consulting_fees (상담시간 × 시급 = 정산액)

고객사정산:
  customer_settlements (매출 - 수수료 - 비용 = 순정산액)

구독료정산:
  subscriptions (플랜별 월정액 × 과금주기)
```

## 공통 패턴

### 멀티 테넌트

모든 테이블은 `tenant_id` 기반으로 데이터를 격리합니다.
컨트롤러에서 `session('selected_tenant_id', 1)`로 현재 테넌트를 결정합니다.

### 상태 관리

| 기능 | 상태값 |
|------|--------|
| 영업수수료 | pending → approved → paid / cancelled |
| 컨설팅비용 | pending / paid |
| 고객사정산 | pending / settled |
| 구독료 | active / trial / cancelled / expired / suspended |

### CSV 내보내기

모든 기능에서 CSV 내보내기를 지원합니다:
- 영업수수료: 서버 사이드 (UTF-8 BOM 인코딩)
- 컨설팅/고객사/구독: 클라이언트 사이드 (React)

## 데이터베이스 테이블 요약

| 테이블 | 역할 |
|--------|------|
| `sales_commissions` | 영업수수료 정산 (입금, 수당, 승인, 지급) |
| `sales_commission_details` | 상품별 수당 상세 내역 |
| `consulting_fees` | 컨설팅 상담수수료 기록 |
| `customer_settlements` | 고객사별 월간 정산 |
| `subscriptions` | 구독 플랜 및 과금 관리 |
| `customers` | 고객사 마스터 (참조) |
