From 5a1fcb41408313aa85ea6b0fe7d0767d80d07c62 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:26:13 +0900 Subject: [PATCH] =?UTF-8?q?feat:=EC=98=81=EC=97=85=ED=8C=8C=ED=8A=B8?= =?UTF-8?q?=EB=84=88=20=EC=88=98=EC=A0=95=20=EB=AA=A8=EB=8B=AC=EC=97=90=20?= =?UTF-8?q?=EA=B0=9C=EC=9D=B8/=EB=8B=A8=EC=B2=B4=20=EC=9C=A0=ED=98=95=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 승인 전(pending): 라디오 버튼으로 개인/단체 변경 가능 - 승인 후(approved): 읽기 전용 뱃지로 표시 - 유형 변경 시 수당률 자동 설정 (단체 30%, 개인 초기화) Co-Authored-By: Claude Opus 4.6 --- .../Sales/SalesManagerController.php | 1 + app/Services/Sales/SalesManagerService.php | 18 +++++++++-- .../managers/partials/edit-modal.blade.php | 30 +++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Sales/SalesManagerController.php b/app/Http/Controllers/Sales/SalesManagerController.php index 0b690ee7..1ad4d605 100644 --- a/app/Http/Controllers/Sales/SalesManagerController.php +++ b/app/Http/Controllers/Sales/SalesManagerController.php @@ -196,6 +196,7 @@ public function update(Request $request, int $id) 'password' => 'nullable|string|min:4|confirmed', 'role_ids' => 'required|array|min:1', 'role_ids.*' => 'exists:roles,id', + 'partner_type' => 'nullable|in:individual,corporate', 'company_name' => 'nullable|string|max:100', 'biz_no' => 'nullable|string|max:20', 'address' => 'nullable|string|max:255', diff --git a/app/Services/Sales/SalesManagerService.php b/app/Services/Sales/SalesManagerService.php index dbee9ecd..4b44d543 100644 --- a/app/Services/Sales/SalesManagerService.php +++ b/app/Services/Sales/SalesManagerService.php @@ -123,13 +123,27 @@ public function updateSalesPartner(User $user, array $data, array $documents = [ $hasBizInfo = !empty($data['company_name']) || !empty($data['biz_no']) || !empty($data['address']); $existingSp = SalesPartner::where('user_id', $user->id)->first(); - if ($hasBizInfo || $existingSp) { + $hasPartnerType = !empty($data['partner_type']); + if ($hasBizInfo || $existingSp || $hasPartnerType) { $sp = $existingSp ?? new SalesPartner(['user_id' => $user->id]); if (!$sp->exists) { $sp->partner_code = SalesPartner::generatePartnerCode(); - $sp->partner_type = 'individual'; + $sp->partner_type = $data['partner_type'] ?? 'individual'; $sp->status = 'active'; } + // 승인 전에만 파트너 유형 변경 허용 + if ($hasPartnerType && $user->approval_status === 'pending') { + $newType = $data['partner_type']; + $sp->partner_type = $newType; + // 단체 → 수당률 설정, 개인 → 수당률 초기화 + if ($newType === 'corporate') { + $sp->commission_rate = 30.00; + $sp->manager_commission_rate = 0; + } else { + $sp->commission_rate = $sp->getOriginal('commission_rate') ?? null; + $sp->manager_commission_rate = $sp->getOriginal('manager_commission_rate') ?? null; + } + } $sp->company_name = $data['company_name'] ?? null; $sp->biz_no = $data['biz_no'] ?? null; $sp->address = $data['address'] ?? null; diff --git a/resources/views/sales/managers/partials/edit-modal.blade.php b/resources/views/sales/managers/partials/edit-modal.blade.php index 05980ac6..e5882c34 100644 --- a/resources/views/sales/managers/partials/edit-modal.blade.php +++ b/resources/views/sales/managers/partials/edit-modal.blade.php @@ -92,6 +92,36 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none foc + +
+

파트너 유형

+ @if($partner->approval_status === 'pending') +
+ + +
+ @else +
+ @if(($partner->salesPartner?->partner_type ?? 'individual') === 'corporate') + 단체 + @else + 개인 + @endif + 승인 후에는 변경할 수 없습니다 +
+ @endif +
+

역할 *