From 0ac621bd492b6d7aa4c825c2f033d3f826b143fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Fri, 20 Feb 2026 15:15:35 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=88=98=EB=8B=B9=20=EC=A0=95=EC=82=B0=20?= =?UTF-8?q?=EB=A0=88=EC=BD=94=EB=93=9C=20=EC=83=9D=EC=84=B1=20=EC=8B=9C=20?= =?UTF-8?q?=ED=8C=8C=ED=8A=B8=EB=84=88=20=ED=83=80=EC=9E=85=EB=B3=84=20?= =?UTF-8?q?=EC=9A=94=EC=9C=A8=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - updateCommissionDate, updateReferrerCommission의 firstOrCreate에서 partner_rate를 0 고정 → 파트너 타입(개인 20% / 단체 30%)에 따라 설정 - referrer_rate도 파트너 타입에 따라 설정 (개인 5% / 단체 3%) - SalesCommissionService 상수 재사용 Co-Authored-By: Claude Opus 4.6 --- .../Sales/AdminProspectController.php | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Sales/AdminProspectController.php b/app/Http/Controllers/Sales/AdminProspectController.php index 5c5ed14e..c13bb327 100644 --- a/app/Http/Controllers/Sales/AdminProspectController.php +++ b/app/Http/Controllers/Sales/AdminProspectController.php @@ -9,6 +9,7 @@ use App\Models\Sales\SalesTenantManagement; use App\Models\Sales\TenantProspect; use App\Models\User; +use App\Services\SalesCommissionService; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\View\View; @@ -407,6 +408,18 @@ public function updateCommissionDate(int $id, Request $request) // 1차 필드 → deposit 레코드, 2차 필드 → balance 레코드 $paymentType = $this->getPaymentTypeForField($field); + // 파트너 resolve → 요율 결정 + $partner = $management->salesPartner; + if (!$partner && $prospect->registered_by) { + $partner = SalesPartner::where('user_id', $prospect->registered_by)->first(); + } + $isGroup = $partner?->isGroup() ?? false; + $partnerRate = $partner?->commission_rate + ?? ($isGroup ? SalesCommissionService::DEFAULT_GROUP_RATE : SalesCommissionService::DEFAULT_PARTNER_RATE); + $referrerRate = $isGroup + ? SalesCommissionService::DEFAULT_GROUP_REFERRER_RATE + : SalesCommissionService::DEFAULT_INDIVIDUAL_REFERRER_RATE; + // Commission 레코드 조회 또는 생성 (payment_type별 분리) $commission = SalesCommission::firstOrCreate( ['management_id' => $management->id, 'payment_type' => $paymentType], @@ -415,15 +428,15 @@ public function updateCommissionDate(int $id, Request $request) 'payment_amount' => 0, 'payment_date' => now(), 'base_amount' => 0, - 'partner_rate' => 0, + 'partner_rate' => $partnerRate, 'manager_rate' => 0, 'partner_commission' => 0, 'manager_commission' => 0, - 'referrer_rate' => 3, + 'referrer_rate' => $referrerRate, 'referrer_commission' => 0, 'scheduled_payment_date' => now()->addMonth()->day(10), 'status' => SalesCommission::STATUS_PENDING, - 'partner_id' => $management->sales_partner_id ?? 0, + 'partner_id' => $partner?->id ?? $management->sales_partner_id ?? 0, 'manager_user_id' => $management->manager_user_id, ] ); @@ -544,6 +557,9 @@ public function updateReferrerCommission(int $id, Request $request) // 단체 파트너는 수동 수정 불가 $partner = $management->salesPartner; + if (!$partner && $prospect->registered_by) { + $partner = SalesPartner::where('user_id', $prospect->registered_by)->first(); + } if ($partner && $partner->isGroup()) { return response()->json([ 'success' => false, @@ -551,6 +567,10 @@ public function updateReferrerCommission(int $id, Request $request) ], 422); } + $isGroup = $partner?->isGroup() ?? false; + $partnerRate = $partner?->commission_rate + ?? ($isGroup ? SalesCommissionService::DEFAULT_GROUP_RATE : SalesCommissionService::DEFAULT_PARTNER_RATE); + // Commission 레코드 조회 또는 생성 $commission = SalesCommission::firstOrCreate( ['management_id' => $management->id], @@ -560,15 +580,17 @@ public function updateReferrerCommission(int $id, Request $request) 'payment_amount' => 0, 'payment_date' => now(), 'base_amount' => 0, - 'partner_rate' => 0, + 'partner_rate' => $partnerRate, 'manager_rate' => 0, 'partner_commission' => 0, 'manager_commission' => 0, - 'referrer_rate' => 3, + 'referrer_rate' => $isGroup + ? SalesCommissionService::DEFAULT_GROUP_REFERRER_RATE + : SalesCommissionService::DEFAULT_INDIVIDUAL_REFERRER_RATE, 'referrer_commission' => 0, 'scheduled_payment_date' => now()->addMonth()->day(10), 'status' => SalesCommission::STATUS_PENDING, - 'partner_id' => $management->sales_partner_id ?? 0, + 'partner_id' => $partner?->id ?? $management->sales_partner_id ?? 0, 'manager_user_id' => $management->manager_user_id, ] );