diff --git a/app/Http/Controllers/Sales/SalesDashboardController.php b/app/Http/Controllers/Sales/SalesDashboardController.php index 363d6e9d..947329d9 100644 --- a/app/Http/Controllers/Sales/SalesDashboardController.php +++ b/app/Http/Controllers/Sales/SalesDashboardController.php @@ -446,13 +446,22 @@ private function calculatePartnerSummaryStats(array $partnerIds, int $currentUse ->where('status', TenantProspect::STATUS_CONVERTED) ->count(); - // 매니저로서 받을 수당 (내가 매니저로 지정된 수당 중 하위 파트너 관련) - $expectedCommission = SalesCommission::where('manager_user_id', $currentUserId) + // 확정 수당 (SalesCommission에서) + $confirmedCommission = SalesCommission::where('manager_user_id', $currentUserId) ->whereHas('partner', function ($query) use ($partnerIds) { $query->whereIn('user_id', $partnerIds); }) ->sum('manager_commission'); + // 예상 수당: 하위 파트너들이 등록한 가망고객의 가입비 × 5% + $prospectIds = TenantProspect::whereIn('registered_by', $partnerIds)->pluck('id')->toArray(); + $managementIds = SalesTenantManagement::whereIn('tenant_prospect_id', $prospectIds)->pluck('id')->toArray(); + $totalRegistrationFee = SalesContractProduct::whereIn('management_id', $managementIds)->sum('registration_fee'); + $expectedFromFee = (int)($totalRegistrationFee * 0.05); + + // 최종 예상 수당 (확정 + 예상 중 큰 값) + $expectedCommission = max($confirmedCommission, $expectedFromFee); + return [ 'partner_count' => $partnerCount, 'total_prospects' => $totalProspects, @@ -485,14 +494,24 @@ private function getPartnerActivitiesDetail($recruitedPartners, int $currentUser ->where('status', TenantProspect::STATUS_CONVERTED) ->count(); - // 이 파트너로 인한 나의 매니저 수당 - $managerCommission = 0; + // 이 파트너로 인한 나의 매니저 수당 (확정 수당) + $confirmedCommission = 0; if ($salesPartner) { - $managerCommission = SalesCommission::where('manager_user_id', $currentUserId) + $confirmedCommission = SalesCommission::where('manager_user_id', $currentUserId) ->where('partner_id', $salesPartner->id) ->sum('manager_commission'); } + // 예상 수당 계산: 파트너가 등록한 가망고객의 가입비 × 5% + $prospectIds = TenantProspect::where('registered_by', $partner->id)->pluck('id')->toArray(); + $managementIds = SalesTenantManagement::whereIn('tenant_prospect_id', $prospectIds)->pluck('id')->toArray(); + $totalRegistrationFee = SalesContractProduct::whereIn('management_id', $managementIds)->sum('registration_fee'); + $expectedCommission = (int)($totalRegistrationFee * 0.05); // 5% 매니저 수당 + + // 최종 매니저 수당 (확정 + 예상 중 큰 값, 또는 합산) + $managerCommission = max($confirmedCommission, $expectedCommission); + $hasRegistrationFee = $totalRegistrationFee > 0; + // 최근 활동 내역 (최근 전환된 테넌트 5개) $recentTenants = TenantProspect::where('registered_by', $partner->id) ->where('status', TenantProspect::STATUS_CONVERTED) @@ -532,6 +551,7 @@ private function getPartnerActivitiesDetail($recruitedPartners, int $currentUser 'active_prospects' => $activeProspects, 'conversions' => $conversions, 'manager_commission' => $managerCommission, + 'has_registration_fee' => $hasRegistrationFee, 'status' => $status, 'recent_tenants' => $recentTenants, 'all_prospects' => $allProspects, diff --git a/resources/views/sales/dashboard/partials/partner-activity.blade.php b/resources/views/sales/dashboard/partials/partner-activity.blade.php index d12051b2..dfdcf1ab 100644 --- a/resources/views/sales/dashboard/partials/partner-activity.blade.php +++ b/resources/views/sales/dashboard/partials/partner-activity.blade.php @@ -139,7 +139,11 @@
예상수당
-₩{{ number_format($activity['manager_commission']) }}
+ @if($activity['has_registration_fee']) +₩{{ number_format($activity['manager_commission']) }}
+ @else +계약전
+ @endif