feat:단체(그룹) 수당 체계 통합 (단체 30%, 유치 3%, 매니저 0%)

- SalesPartner: referrer_partner_id, referrer/referredGroups 관계, isGroup() 헬퍼
- SalesCommission: 유치수당 필드, referrerPartner 관계, 지급 추적 메서드
- SalesCommissionService: 단체/개인 분기 수당 계산 로직
- SalesManagerService: 단체 등록 시 수당률 자동 설정
- SalesManagerController: 유형 선택 및 유치 파트너 지정 기능
- 대시보드: 유치수당 카드 표시 및 합산
- UI: purple 색상 처리 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-14 19:42:51 +09:00
parent eafd81d97a
commit f1f31d5f70
8 changed files with 207 additions and 21 deletions

View File

@@ -84,6 +84,15 @@ private function getDashboardData(Request $request): array
: collect();
$myCommissionsAsManager = SalesCommission::forManager($currentUserId)->get();
// 유치수당 계산 (내가 유치 파트너인 건)
$myCommissionsAsReferrer = $partnerId
? SalesCommission::where('referrer_partner_id', $partnerId)->get()
: collect();
$referrerCommissionTotal = $myCommissionsAsReferrer->sum('referrer_commission');
$referrerCommissionPaid = $myCommissionsAsReferrer->where('status', SalesCommission::STATUS_PAID)->sum('referrer_commission');
$referrerCommissionPending = $myCommissionsAsReferrer->where('status', SalesCommission::STATUS_PENDING)->sum('referrer_commission');
$referrerCommissionApproved = $myCommissionsAsReferrer->where('status', SalesCommission::STATUS_APPROVED)->sum('referrer_commission');
// 판매자(영업파트너) 수당 계산
$partnerCommissionTotal = $myCommissionsAsPartner->sum('partner_commission');
$partnerCommissionPaid = $myCommissionsAsPartner->where('status', SalesCommission::STATUS_PAID)->sum('partner_commission');
@@ -102,8 +111,8 @@ private function getDashboardData(Request $request): array
// 통계 데이터 (실제 데이터)
$totalMembershipFee = $myCommissionsAsPartner->sum('payment_amount') + $myCommissionsAsManager->sum('payment_amount');
$totalCommission = $partnerCommissionTotal + $managerCommissionTotal;
$paidCommission = $partnerCommissionPaid + $managerCommissionPaid;
$totalCommission = $partnerCommissionTotal + $managerCommissionTotal + $referrerCommissionTotal;
$paidCommission = $partnerCommissionPaid + $managerCommissionPaid + $referrerCommissionPaid;
$commissionRate = $totalCommission > 0 ? round(($paidCommission / $totalCommission) * 100, 1) : 0;
$stats = [
@@ -139,9 +148,12 @@ private function getDashboardData(Request $request): array
'color' => 'blue',
],
[
'name' => '협업지원금',
'rate' => null, // 메뉴당 2,000원
'amount' => null, // 개발비 완납 시 계산
'name' => '유치수당',
'rate' => 3,
'amount' => $referrerCommissionTotal,
'paid' => $referrerCommissionPaid,
'pending' => $referrerCommissionPending,
'approved' => $referrerCommissionApproved,
'color' => 'purple',
],
];