feat:단체(그룹) 수당 체계 통합 (단체 30%, 유치 3%, 매니저 0%)

- SalesPartner: referrer_partner_id, referrer/referredGroups 관계, isGroup() 헬퍼
- SalesCommission: 유치수당 필드, referrerPartner 관계, 지급 추적 메서드
- SalesCommissionService: 단체/개인 분기 수당 계산 로직
- SalesManagerService: 단체 등록 시 수당률 자동 설정
- SalesManagerController: 유형 선택 및 유치 파트너 지정 기능
- 대시보드: 유치수당 카드 표시 및 합산
- UI: purple 색상 처리 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-14 19:42:51 +09:00
parent eafd81d97a
commit f1f31d5f70
8 changed files with 207 additions and 21 deletions

View File

@@ -4,6 +4,7 @@
use App\Http\Controllers\Controller;
use App\Models\Sales\SalesManagerDocument;
use App\Models\Sales\SalesPartner;
use App\Models\User;
use App\Services\Sales\SalesManagerService;
use Illuminate\Http\Request;
@@ -52,7 +53,13 @@ public function create(): View
// 문서 타입 목록
$documentTypes = SalesManagerDocument::DOCUMENT_TYPES;
return view('sales.managers.create', compact('roles', 'documentTypes'));
// 활성 개인 파트너 목록 (유치 파트너 선택용)
$activePartners = SalesPartner::active()
->with('user')
->where('partner_type', 'individual')
->get();
return view('sales.managers.create', compact('roles', 'documentTypes', 'activePartners'));
}
/**
@@ -71,6 +78,8 @@ public function store(Request $request)
'company_name' => 'nullable|string|max:100',
'biz_no' => 'nullable|string|max:20',
'address' => 'nullable|string|max:255',
'partner_type' => 'nullable|in:individual,corporate',
'referrer_partner_id' => 'nullable|exists:sales_partners,id',
'documents' => 'nullable|array',
'documents.*.file' => 'nullable|file|max:10240',
'documents.*.document_type' => 'nullable|string',