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, ] );