feat:수당 날짜 기록/수정/삭제 기능 추가

This commit is contained in:
김보곤
2026-02-02 20:16:13 +09:00
parent a5c5d8c1c9
commit b93ceaadd0
4 changed files with 228 additions and 5 deletions

View File

@@ -194,4 +194,87 @@ public function updateHqStatus(int $id, Request $request)
'hq_status_label' => $management->hq_status_label,
]);
}
/**
* 수당 날짜 기록/수정
*/
public function updateCommissionDate(int $id, Request $request)
{
$this->checkAdminAccess();
$request->validate([
'field' => 'required|in:first_payment_at,first_partner_paid_at,second_payment_at,second_partner_paid_at,first_subscription_at,manager_paid_at',
'date' => 'nullable|date',
]);
$prospect = TenantProspect::findOrFail($id);
$management = SalesTenantManagement::findOrCreateByProspect($prospect->id);
// Commission 레코드 조회 또는 생성
$commission = SalesCommission::firstOrCreate(
['management_id' => $management->id],
[
'tenant_id' => $prospect->tenant_id ?? 1,
'payment_type' => 'deposit',
'payment_amount' => 0,
'payment_date' => now(),
'base_amount' => 0,
'partner_rate' => 0,
'manager_rate' => 0,
'partner_commission' => 0,
'manager_commission' => 0,
'scheduled_payment_date' => now()->addMonth()->day(10),
'status' => SalesCommission::STATUS_PENDING,
'partner_id' => $management->sales_partner_id ?? 0,
'manager_user_id' => $management->manager_user_id,
]
);
$field = $request->input('field');
$date = $request->input('date') ?: now()->format('Y-m-d');
$commission->update([
$field => $date,
]);
return response()->json([
'success' => true,
'field' => $field,
'date' => $commission->$field?->format('Y-m-d'),
'date_display' => $commission->$field?->format('m/d'),
]);
}
/**
* 수당 날짜 삭제 (초기화)
*/
public function clearCommissionDate(int $id, Request $request)
{
$this->checkAdminAccess();
$request->validate([
'field' => 'required|in:first_payment_at,first_partner_paid_at,second_payment_at,second_partner_paid_at,first_subscription_at,manager_paid_at',
]);
$prospect = TenantProspect::findOrFail($id);
$management = SalesTenantManagement::where('tenant_prospect_id', $prospect->id)->first();
if (!$management) {
return response()->json(['success' => false, 'message' => '관리 정보가 없습니다.']);
}
$commission = SalesCommission::where('management_id', $management->id)->first();
if (!$commission) {
return response()->json(['success' => false, 'message' => '수당 정보가 없습니다.']);
}
$field = $request->input('field');
$commission->update([$field => null]);
return response()->json([
'success' => true,
'field' => $field,
]);
}
}