feat:구독관리 탭 실제 구독자 데이터 표시 (sales_contract_products 기반)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-19 15:45:14 +09:00
parent 7c93fd414e
commit 7e741884d6
3 changed files with 148 additions and 161 deletions

View File

@@ -269,7 +269,40 @@ public function customerTab(Request $request): View
*/
public function subscriptionTab(Request $request): View
{
return view('finance.settlement.partials.subscription-tab');
// subscription_fee > 0인 계약상품이 있는 관리건 조회
$query = SalesTenantManagement::with([
'tenant', 'tenantProspect', 'salesPartner.user',
'manager', 'contractProducts.product', 'contractProducts.category',
])
->contracted()
->whereHas('contractProducts', fn($q) => $q->where('subscription_fee', '>', 0));
// 검색 필터
if ($search = $request->input('search')) {
$query->where(function ($q) use ($search) {
$q->whereHas('tenant', fn($t) => $t->where('company_name', 'like', "%{$search}%"))
->orWhereHas('tenantProspect', fn($t) => $t->where('company_name', 'like', "%{$search}%"));
});
}
// 상태 필터
if ($status = $request->input('status')) {
if ($status !== 'all') {
$query->where('status', $status);
}
}
$managements = $query->orderBy('contracted_at', 'desc')->get();
// 통계 계산
$stats = [
'activeCount' => $managements->count(),
'monthlyRecurring' => $managements->sum(fn($m) => $m->contractProducts->sum('subscription_fee')),
'totalProducts' => $managements->sum(fn($m) => $m->contractProducts->where('subscription_fee', '>', 0)->count()),
];
$stats['yearlyRecurring'] = $stats['monthlyRecurring'] * 12;
return view('finance.settlement.partials.subscription-tab', compact('managements', 'stats'));
}
/**