diff --git a/app/Http/Controllers/Sales/SalesDashboardController.php b/app/Http/Controllers/Sales/SalesDashboardController.php index 50eb34de..145b82bf 100644 --- a/app/Http/Controllers/Sales/SalesDashboardController.php +++ b/app/Http/Controllers/Sales/SalesDashboardController.php @@ -665,8 +665,25 @@ private function calculatePartnerSummaryStats(array $partnerIds, int $currentUse ->count('management_id'); $totalConversions = $contractedManagementCount; - // 매니저 예상 수당: 1개월 구독료 (퍼센트가 아닌 고정 금액) - $totalSubscriptionFee = SalesContractProduct::whereIn('management_id', $managementIds)->sum('subscription_fee'); + // 유치한 파트너 유형별 예상 수당 계산 + // 단체 파트너: 협업지원금(개발비 × 3%), 개인 파트너: 관리자 수당(1개월 구독료) + $groupPartnerUserIds = SalesPartner::whereIn('user_id', $partnerIds) + ->where('partner_type', 'corporate') + ->pluck('user_id') + ->toArray(); + $individualPartnerIds = array_diff($partnerIds, $groupPartnerUserIds); + + // 개인 파트너 예상 수당: 1개월 구독료 + $individualProspectIds = TenantProspect::whereIn('registered_by', $individualPartnerIds)->pluck('id')->toArray(); + $individualMgmtIds = SalesTenantManagement::whereIn('tenant_prospect_id', $individualProspectIds)->pluck('id')->toArray(); + $individualExpected = (int)SalesContractProduct::whereIn('management_id', $individualMgmtIds)->sum('subscription_fee'); + + // 단체 파트너 예상 수당: 개발비 × 3% + $groupProspectIds = TenantProspect::whereIn('registered_by', $groupPartnerUserIds)->pluck('id')->toArray(); + $groupMgmtIds = SalesTenantManagement::whereIn('tenant_prospect_id', $groupProspectIds)->pluck('id')->toArray(); + $groupExpected = (int)(SalesContractProduct::whereIn('management_id', $groupMgmtIds)->sum('registration_fee') * 0.03); + + $expectedFromFee = $individualExpected + $groupExpected; // 확정 수당 (SalesCommission에서) $confirmedCommission = SalesCommission::where('manager_user_id', $currentUserId) @@ -674,7 +691,6 @@ private function calculatePartnerSummaryStats(array $partnerIds, int $currentUse $query->whereIn('user_id', $partnerIds); }) ->sum('manager_commission'); - $expectedFromFee = (int)$totalSubscriptionFee; // 1개월 구독료 // 최종 예상 수당 (확정 + 예상 중 큰 값) $expectedCommission = max($confirmedCommission, $expectedFromFee); @@ -757,14 +773,19 @@ private function getPartnerActivitiesDetail($recruitedPartners, int $currentUser ->sum('manager_commission'); } - // 예상 수당 계산: 파트너가 등록한 가망고객의 1개월 구독료 + // 예상 수당 계산 $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'); $totalSubscriptionFee = SalesContractProduct::whereIn('management_id', $managementIds)->sum('subscription_fee'); - $expectedCommission = (int)$totalSubscriptionFee; // 1개월 구독료 - // 최종 매니저 수당 (확정 + 예상 중 큰 값, 또는 합산) + // 단체 파트너: 협업지원금(개발비 × 3%), 개인 파트너: 관리자 수당(1개월 구독료) + $isRecruitedGroupPartner = $salesPartner && $salesPartner->isGroup(); + $expectedCommission = $isRecruitedGroupPartner + ? (int)($totalRegistrationFee * 0.03) + : (int)$totalSubscriptionFee; + + // 최종 수당 (확정 + 예상 중 큰 값) $managerCommission = max($confirmedCommission, $expectedCommission); $hasRegistrationFee = $totalRegistrationFee > 0;