diff --git a/resources/views/finance/settlement/partials/payment-partner-detail.blade.php b/resources/views/finance/settlement/partials/payment-partner-detail.blade.php
new file mode 100644
index 00000000..39b96117
--- /dev/null
+++ b/resources/views/finance/settlement/partials/payment-partner-detail.blade.php
@@ -0,0 +1,43 @@
+{{-- 파트너별 수당 건 상세 목록 (HTMX partial) --}}
+@if ($commissions->isEmpty())
+
해당 파트너의 승인 완료 건이 없습니다.
+@else
+
+
+
+
+ | 고객사 |
+ 입금구분 |
+ 입금액 |
+ 파트너수당 |
+ 매니저수당 |
+ 유치수당 |
+ 지급예정일 |
+ 매니저 |
+
+
+
+ @foreach ($commissions as $c)
+
+ |
+ {{ $c->management?->tenant?->name ?? '-' }}
+ |
+
+ @if ($c->payment_type === 'deposit')
+ 계약금
+ @else
+ 잔금
+ @endif
+ |
+ {{ number_format($c->payment_amount) }}원 |
+ {{ number_format($c->partner_commission) }}원 |
+ {{ number_format($c->manager_commission) }}원 |
+ {{ number_format($c->referrer_commission ?? 0) }}원 |
+ {{ $c->scheduled_payment_date?->format('Y-m-d') ?? '-' }} |
+ {{ $c->manager?->name ?? '-' }} |
+
+ @endforeach
+
+
+
+@endif
diff --git a/resources/views/finance/settlement/partials/payment-tab.blade.php b/resources/views/finance/settlement/partials/payment-tab.blade.php
new file mode 100644
index 00000000..2c15f217
--- /dev/null
+++ b/resources/views/finance/settlement/partials/payment-tab.blade.php
@@ -0,0 +1,302 @@
+{{-- 수당 지급 탭: 통계카드 + 파트너별 지급 대기 목록 --}}
+
+ {{-- 통계 카드 --}}
+
+
+
+
+
지급 대기
+
{{ number_format($paymentStats['waiting_amount']) }}원
+
+
+
+
{{ $paymentStats['waiting_count'] }}건 승인 완료
+
+
+
+
+
+
이번달 지급완료
+
{{ number_format($paymentStats['this_month_paid_amount']) }}원
+
+
+
+
{{ $paymentStats['this_month_paid_count'] }}건 완료
+
+
+
+
+
+
파트너 수당
+
{{ number_format($paymentStats['partner_total']) }}원
+
+
+
+
지급 대기 파트너 수당 합계
+
+
+
+
+
+
매니저+유치 수당
+
{{ number_format($paymentStats['manager_referrer_total']) }}원
+
+
+
+
지급 대기 매니저+유치 합계
+
+
+
+ {{-- 상단 액션 바 --}}
+
+
+ {{-- 파트너별 지급 대기 테이블 --}}
+
+
+
+
+
+ |
+
+ |
+ 파트너 |
+ 유형 |
+ 계좌정보 |
+ 건수 |
+ 파트너수당 |
+ 매니저수당 |
+ 유치수당 |
+ 총액 |
+ 액션 |
+
+
+
+ @forelse ($partnerPayments as $pp)
+ @php
+ $partner = $partners->get($pp->partner_id);
+ $totalAmount = $pp->partner_total + $pp->manager_total + $pp->referrer_total;
+ @endphp
+ @if ($partner)
+
+ |
+
+ |
+
+
+ |
+
+ @if ($partner->partner_type === 'corporate')
+ 단체
+ @else
+ 개인
+ @endif
+ |
+
+ @if ($partner->bank_name && $partner->account_number)
+ {{ $partner->bank_name }} {{ $partner->account_number }}
+ {{ $partner->account_holder }}
+ @else
+ 계좌 미등록
+ @endif
+ |
+ {{ $pp->count }}건 |
+ {{ number_format($pp->partner_total) }}원 |
+ {{ number_format($pp->manager_total) }}원 |
+ {{ number_format($pp->referrer_total) }}원 |
+ {{ number_format($totalAmount) }}원 |
+
+
+ |
+
+ {{-- 확장 영역: 파트너별 상세 건 목록 --}}
+
+ |
+
+ |
+
+ @endif
+ @empty
+
+ |
+
+ 지급 대기 건이 없습니다
+ 모든 승인된 수당이 지급 처리되었습니다.
+ |
+
+ @endforelse
+
+
+
+
+
+
+{{-- 지급완료 모달 --}}
+
+
+
+
+
+
+
+
+
+ 0건의 수당을 지급완료 처리합니다.
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/views/finance/settlement/payment-stats.blade.php b/resources/views/finance/settlement/payment-stats.blade.php
new file mode 100644
index 00000000..5ebb04ad
--- /dev/null
+++ b/resources/views/finance/settlement/payment-stats.blade.php
@@ -0,0 +1,349 @@
+@extends('layouts.app')
+
+@section('title', '수당지급현황통계')
+
+@section('content')
+
+ {{-- 페이지 헤더 --}}
+
+
+
수당지급현황통계
+
{{ $year }}년 수당 지급 현황 종합 통계
+
+
+
+
+ {{-- 통계 카드 --}}
+
+
+
+
+
총 지급액
+
{{ number_format($statsCards['total_paid_amount']) }}원
+
+
+
+
{{ $year }}년 지급 합계
+
+
+
+
+
+
총 지급 건수
+
{{ number_format($statsCards['total_paid_count']) }}건
+
+
+
+
{{ $year }}년 총 건수
+
+
+
+
+
+
지급 파트너 수
+
{{ $statsCards['active_partners'] }}명
+
+
+
+
{{ $year }}년 지급 대상
+
+
+
+
+
+
건당 평균 수당
+
{{ number_format($statsCards['avg_commission']) }}원
+
+
+
+
전체 평균
+
+
+
+ {{-- 차트 영역 --}}
+
+ {{-- 차트 1: 월별 지급 추이 (Stacked Bar) --}}
+
+
+ {{-- 차트 2: 수당 유형별 비율 (Doughnut) --}}
+
+
+ {{-- 차트 3: 파트너별 수당 Top 10 (Horizontal Bar) --}}
+
+
+ {{-- 차트 4: 월별 지급 건수 추이 (Line) --}}
+
+
+
+ {{-- 월별 지급 요약 테이블 --}}
+
+
+
월별 지급 요약
+
+
+
+
+
+ | 월 |
+ 파트너수당 |
+ 매니저수당 |
+ 유치수당 |
+ 합계 |
+ 건수 |
+
+
+
+ @php $grandPartner = 0; $grandManager = 0; $grandReferrer = 0; $grandTotal = 0; $grandCount = 0; @endphp
+ @forelse ($monthlyTrend->reverse() as $row)
+ @php
+ $rowTotal = $row->partner_total + $row->manager_total + $row->referrer_total;
+ $grandPartner += $row->partner_total;
+ $grandManager += $row->manager_total;
+ $grandReferrer += $row->referrer_total;
+ $grandTotal += $rowTotal;
+ $grandCount += $row->count;
+ @endphp
+
+ | {{ \Carbon\Carbon::parse($row->month . '-01')->format('n월') }} |
+ {{ number_format($row->partner_total) }}원 |
+ {{ number_format($row->manager_total) }}원 |
+ {{ number_format($row->referrer_total) }}원 |
+ {{ number_format($rowTotal) }}원 |
+ {{ $row->count }}건 |
+
+ @empty
+
+ | {{ $year }}년 지급 데이터가 없습니다. |
+
+ @endforelse
+ @if ($monthlyTrend->isNotEmpty())
+
+ | 합계 |
+ {{ number_format($grandPartner) }}원 |
+ {{ number_format($grandManager) }}원 |
+ {{ number_format($grandReferrer) }}원 |
+ {{ number_format($grandTotal) }}원 |
+ {{ $grandCount }}건 |
+
+ @endif
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+
+@endpush
diff --git a/routes/web.php b/routes/web.php
index 0e40b364..df06d3b7 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -1002,6 +1002,9 @@
Route::get('/settlement/consulting', [\App\Http\Controllers\Finance\SettlementController::class, 'consultingTab'])->name('settlement.consulting');
Route::get('/settlement/customer', [\App\Http\Controllers\Finance\SettlementController::class, 'customerTab'])->name('settlement.customer');
Route::get('/settlement/subscription', [\App\Http\Controllers\Finance\SettlementController::class, 'subscriptionTab'])->name('settlement.subscription');
+ Route::get('/settlement/payment', [\App\Http\Controllers\Finance\SettlementController::class, 'paymentTab'])->name('settlement.payment');
+ Route::get('/settlement/payment-partner-detail/{partnerId}', [\App\Http\Controllers\Finance\SettlementController::class, 'paymentPartnerDetail'])->name('settlement.payment-partner-detail');
+ Route::get('/settlement/payment-stats', [\App\Http\Controllers\Finance\SettlementController::class, 'paymentStats'])->name('settlement.payment-stats');
// 영업수수료정산 (실제 구현 - CRUD API는 그대로 유지)
Route::prefix('sales-commissions')->name('sales-commissions.')->group(function () {