From 71065ca91a1f3e33ef2e19b2e825f6200ceac6bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sat, 7 Feb 2026 08:23:35 +0900 Subject: [PATCH] =?UTF-8?q?feat:=EB=82=A9=EC=9E=85=EC=9D=BC=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EC=8B=9C=20=EC=88=98=EB=8B=B9=EC=A7=80=EA=B8=89?= =?UTF-8?q?=EC=9D=BC=20=EC=9E=90=EB=8F=99=20=EA=B3=84=EC=82=B0=20(?= =?UTF-8?q?=EC=9D=B5=EC=9B=94=2010=EC=9D=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- .../Sales/AdminProspectController.php | 48 ++++++++++++++++--- .../sales/admin-prospects/index.blade.php | 20 +++++++- 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Sales/AdminProspectController.php b/app/Http/Controllers/Sales/AdminProspectController.php index b7d3c9cf..5d8544fa 100644 --- a/app/Http/Controllers/Sales/AdminProspectController.php +++ b/app/Http/Controllers/Sales/AdminProspectController.php @@ -292,16 +292,37 @@ public function updateCommissionDate(int $id, Request $request) $field = $request->input('field'); $date = $request->input('date') ?: now()->format('Y-m-d'); - $commission->update([ - $field => $date, - ]); + $updateData = [$field => $date]; - return response()->json([ + // 납입일 입력 시 수당지급일 자동 계산 (익월 10일) + $autoFields = [ + 'first_payment_at' => 'first_partner_paid_at', + 'second_payment_at' => 'second_partner_paid_at', + ]; + + $autoField = null; + $autoDate = null; + if (isset($autoFields[$field])) { + $autoField = $autoFields[$field]; + $autoDate = \Carbon\Carbon::parse($date)->addMonth()->day(10)->format('Y-m-d'); + $updateData[$autoField] = $autoDate; + } + + $commission->update($updateData); + + $response = [ 'success' => true, 'field' => $field, 'date' => $commission->$field?->format('Y-m-d'), 'date_display' => $commission->$field?->format('m/d'), - ]); + ]; + + if ($autoField) { + $response['auto_field'] = $autoField; + $response['auto_date'] = $autoDate; + } + + return response()->json($response); } /** @@ -352,11 +373,26 @@ public function clearCommissionDate(int $id, Request $request) } $field = $request->input('field'); - $commission->update([$field => null]); + $updateData = [$field => null]; + + // 납입일 삭제 시 수당지급일도 함께 초기화 + $autoFields = [ + 'first_payment_at' => 'first_partner_paid_at', + 'second_payment_at' => 'second_partner_paid_at', + ]; + + $autoField = null; + if (isset($autoFields[$field])) { + $autoField = $autoFields[$field]; + $updateData[$autoField] = null; + } + + $commission->update($updateData); return response()->json([ 'success' => true, 'field' => $field, + 'auto_field' => $autoField, ]); } } diff --git a/resources/views/sales/admin-prospects/index.blade.php b/resources/views/sales/admin-prospects/index.blade.php index df28dcd6..ee882723 100644 --- a/resources/views/sales/admin-prospects/index.blade.php +++ b/resources/views/sales/admin-prospects/index.blade.php @@ -266,8 +266,16 @@ function saveCommissionDate(prospectId, field, date) { .then(response => response.json()) .then(result => { if (result.success && input) { - // 입력 스타일 업데이트 updateInputStyle(input, field, true); + + // 납입일 저장 시 수당지급일 자동 반영 + if (result.auto_field && result.auto_date) { + const autoInput = document.querySelector(`input[data-prospect-id="${prospectId}"][data-field="${result.auto_field}"]`); + if (autoInput) { + autoInput.value = result.auto_date; + updateInputStyle(autoInput, result.auto_field, true); + } + } } else { alert(result.message || '날짜 저장에 실패했습니다.'); } @@ -292,8 +300,16 @@ function clearCommissionDate(prospectId, field, input) { .then(response => response.json()) .then(result => { if (result.success && input) { - // 입력 스타일 업데이트 updateInputStyle(input, field, false); + + // 납입일 삭제 시 수당지급일도 함께 초기화 + if (result.auto_field) { + const autoInput = document.querySelector(`input[data-prospect-id="${prospectId}"][data-field="${result.auto_field}"]`); + if (autoInput) { + autoInput.value = ''; + updateInputStyle(autoInput, result.auto_field, false); + } + } } else if (!result.success) { alert(result.message || '날짜 삭제에 실패했습니다.'); }