feat:유치 파트너 예상수당 계산 개선
- 가입비 설정 시: 가입비 × 5% 예상수당 표시 - 가입비 미설정 시: "계약전" 표시 - 요약 통계 및 파트너별 예상수당 모두 적용 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -139,7 +139,11 @@
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<p class="text-gray-400 text-xs">예상수당</p>
|
||||
<p class="font-bold text-amber-600">₩{{ number_format($activity['manager_commission']) }}</p>
|
||||
@if($activity['has_registration_fee'])
|
||||
<p class="font-bold text-amber-600">₩{{ number_format($activity['manager_commission']) }}</p>
|
||||
@else
|
||||
<p class="font-medium text-gray-400 text-xs">계약전</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user