fix:유치 파트너 현황 예상수당 - 단체 파트너는 협업지원금(개발비×3%) 적용

기존: 모든 파트너에 대해 1개월 구독료를 예상수당으로 사용
수정: 단체 파트너 → 개발비×3%(협업지원금), 개인 파트너 → 1개월 구독료(관리자 수당)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-19 08:43:34 +09:00
parent b4470d94b4
commit aed42cd4f2

View File

@@ -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;