From aed42cd4f288aae27b56c0fa5bd40185bb6de58d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 19 Feb 2026 08:43:34 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=9C=A0=EC=B9=98=20=ED=8C=8C=ED=8A=B8?= =?UTF-8?q?=EB=84=88=20=ED=98=84=ED=99=A9=20=EC=98=88=EC=83=81=EC=88=98?= =?UTF-8?q?=EB=8B=B9=20-=20=EB=8B=A8=EC=B2=B4=20=ED=8C=8C=ED=8A=B8?= =?UTF-8?q?=EB=84=88=EB=8A=94=20=ED=98=91=EC=97=85=EC=A7=80=EC=9B=90?= =?UTF-8?q?=EA=B8=88(=EA=B0=9C=EB=B0=9C=EB=B9=84=C3=973%)=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기존: 모든 파트너에 대해 1개월 구독료를 예상수당으로 사용 수정: 단체 파트너 → 개발비×3%(협업지원금), 개인 파트너 → 1개월 구독료(관리자 수당) Co-Authored-By: Claude Opus 4.6 --- .../Sales/SalesDashboardController.php | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) 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;