From 28c6c40f5416bc4b2cb29e99336f5bc6d5f22844 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 07:36:30 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=98=81=EC=97=85=20=EB=8C=80=EC=8B=9C?= =?UTF-8?q?=EB=B3=B4=EB=93=9C=20=EA=B0=9C=EC=9D=B8/=EB=8B=A8=EC=B2=B4=20?= =?UTF-8?q?=EC=88=98=EC=88=98=EB=A3=8C=EC=9C=A8=20=EB=8F=99=EC=A0=81=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SalesPartner::isGroup()이 partner_type 기반으로 판별하도록 수정 - 대시보드 수수료율 표시: 개인 20%, 단체 30% 동적 반영 - 인수 수수료 계산: 개인 10%, 단체 15% 동적 반영 Co-Authored-By: Claude Opus 4.6 --- .../Sales/SalesDashboardController.php | 19 +++++++++++-------- app/Models/Sales/SalesPartner.php | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Sales/SalesDashboardController.php b/app/Http/Controllers/Sales/SalesDashboardController.php index 80f1d61b..1bd093c2 100644 --- a/app/Http/Controllers/Sales/SalesDashboardController.php +++ b/app/Http/Controllers/Sales/SalesDashboardController.php @@ -126,11 +126,13 @@ private function getDashboardData(Request $request): array + $myCommissionsAsManager->where('status', SalesCommission::STATUS_APPROVED)->count(), ]; - // 역할별 수당 상세 (실제 데이터) + // 역할별 수당 상세 (실제 데이터 - 파트너 유형에 따라 요율 다름) + $isGroupPartner = $partner && $partner->isGroup(); + $partnerRateDisplay = $isGroupPartner ? 30 : 20; $commissionByRole = [ [ - 'name' => '판매자', - 'rate' => 20, + 'name' => $isGroupPartner ? '판매자 (단체)' : '판매자', + 'rate' => $partnerRateDisplay, 'amount' => $partnerCommissionTotal, 'paid' => $partnerCommissionPaid, 'pending' => $partnerCommissionPending, @@ -174,8 +176,9 @@ private function getDashboardData(Request $request): array $handoverTotalRegFee = SalesContractProduct::whereIn('management_id', $handoverManagementIds) ->sum('registration_fee'); - // 수당 계산: 개발비 × 50% × 20% = 개발비 × 10% - $handoverPartnerCommission = (int)($handoverTotalRegFee * 0.10); + // 수당 계산: 개발비 × 50% × 요율% (개인 20% → 10%, 단체 30% → 15%) + $handoverPartnerRate = $isGroupPartner ? 0.15 : 0.10; + $handoverPartnerCommission = (int)($handoverTotalRegFee * $handoverPartnerRate); // 내가 매니저로 지정된 인계 완료 건의 수당 계산 $managedHandoverManagements = SalesTenantManagement::where('manager_user_id', $currentUserId) @@ -270,7 +273,7 @@ private function getDashboardData(Request $request): array ->toArray(); $devInProgressRegFee = SalesContractProduct::whereIn('management_id', $devInProgressManagementIds) ->sum('registration_fee'); - $expectedFromDevInProgress = (int)($devInProgressRegFee * 0.10); // 개발비 × 10% + $expectedFromDevInProgress = (int)($devInProgressRegFee * $handoverPartnerRate); // 개발비 × 요율 (개인 10%, 단체 15%) // 2) 인계 완료 중 지급 미완료 건 $handoverUnpaidRegFee = SalesContractProduct::whereIn('management_id', $handoverManagementIds) @@ -280,7 +283,7 @@ private function getDashboardData(Request $request): array ->whereIn('management_id', $handoverManagementIds) ->where('status', SalesCommission::STATUS_PAID) ->sum('partner_commission'); - $expectedFromHandover = (int)($handoverUnpaidRegFee * 0.10) - $paidCommissionFromHandover; + $expectedFromHandover = (int)($handoverUnpaidRegFee * $handoverPartnerRate) - $paidCommissionFromHandover; $expectedFromHandover = max(0, $expectedFromHandover); // 총 예상 수당 (지급 완료 제외) @@ -308,7 +311,7 @@ private function getDashboardData(Request $request): array ); // 역할별 수당을 예상 수당 기준으로 재설정 (1차+2차 수당과 일치하도록) - // 판매자 예상 수당 = 개발비 × 10% (개발 진행 중 + 인계 완료 미지급) + // 판매자 예상 수당 = 개발비 × 요율 (개인 10%, 단체 15%) $commissionByRole[0]['amount'] = $totalExpectedCommission; // 전환된 테넌트만 조회 (최신순, 페이지네이션) diff --git a/app/Models/Sales/SalesPartner.php b/app/Models/Sales/SalesPartner.php index cc06177c..9d853e39 100644 --- a/app/Models/Sales/SalesPartner.php +++ b/app/Models/Sales/SalesPartner.php @@ -103,11 +103,11 @@ public function referredGroups(): HasMany } /** - * 단체 여부 확인 + * 단체 여부 확인 (partner_type 기반) */ public function isGroup(): bool { - return $this->referrer_partner_id !== null; + return $this->partner_type === 'corporate'; } /**