수당 시뮬레이터 영업 유형(직접영업/영업사원) 선택 기능 추가 및 계산 로직 반영

This commit is contained in:
2026-01-05 05:22:38 +09:00
parent baa560e261
commit 351e2e73ca

View File

@@ -5096,8 +5096,8 @@
// 1차 선택: 동적 패키지 관리
const [selectedPackageIds, setSelectedPackageIds] = useState([]);
// 2차 선택: 선택모델의 세부 모델들
const [selectedModels, setSelectedModels] = useState([]);
const [salesMode, setSalesMode] = useState('direct'); // 'direct' (직접영업) or 'manager' (영업사원 실적관리)
// DB에서 가격 정보 가져오기
useEffect(() => {
@@ -5173,7 +5173,8 @@
}
});
const totalCommission = totalSellerCommission + totalManagerCommission + totalEducatorCommission;
const displayCommission = salesMode === 'direct' ? totalSellerCommission : totalManagerCommission;
const totalCommission = displayCommission + totalEducatorCommission;
const totalRevenue = totalJoinFee; // 구독료 제거
const commissionRate = totalRevenue > 0 ? ((totalCommission / totalRevenue) * 100).toFixed(1) : 0;
@@ -5271,12 +5272,46 @@
<LucideIcon name="help-circle" className="w-5 h-5" />
</button>
</div>
<div className="space-y-6">
{/* 1차 선택 */}
{/* Left Column: Selection */}
<div className="space-y-8">
{/* 영업 모드 선택 (Radio Buttons) */}
<div>
<label className="block text-sm font-medium text-slate-700 mb-3">패키지 선택</label>
<div className="space-y-3">
<label className="block text-sm font-bold text-slate-700 mb-3 flex items-center gap-2">
<LucideIcon name="user-check" className="w-4 h-4 text-blue-600" />
영업 유형 선택
</label>
<div className="grid grid-cols-2 gap-3 p-1 bg-slate-100 rounded-xl">
<button
onClick={() => setSalesMode('direct')}
className={`flex items-center justify-center gap-2 py-2.5 rounded-lg text-sm font-bold transition-all ${
salesMode === 'direct'
? 'bg-white text-blue-600 shadow-sm border-blue-100'
: 'text-slate-500 hover:text-slate-700'
}`}
>
<LucideIcon name="user" className="w-4 h-4" />
직접영업
</button>
<button
onClick={() => setSalesMode('manager')}
className={`flex items-center justify-center gap-2 py-2.5 rounded-lg text-sm font-bold transition-all ${
salesMode === 'manager'
? 'bg-white text-blue-600 shadow-sm border-blue-100'
: 'text-slate-500 hover:text-slate-700'
}`}
>
<LucideIcon name="users" className="w-4 h-4" />
영업사원
</button>
</div>
<p className="text-[11px] text-slate-400 mt-2 px-1">
* 직접영업: 본인이 직접 계약 (판매자 수당 발생)<br/>
* 영업사원: 소속 사원이 계약 (관리자 수당 발생)
</p>
</div>
<div>
<label className="block text-sm font-bold text-slate-700 mb-3">패키지 선택</label>
<div className="space-y-3">
{packageTypes.map(pkg => {
if (pkg.id === 'select_models') {
@@ -5334,7 +5369,6 @@
}
})}
</div>
</div>
</div>
{/* 2차 선택: 선택모델의 세부 모델들 */}
@@ -5403,14 +5437,27 @@
<span className="text-slate-600"> 가입비</span>
<span className="font-bold text-slate-900">{formatCurrency(totalRevenue)}</span>
</div>
<div className="flex justify-between items-center p-3 bg-slate-50 rounded-lg">
<span className="text-slate-600">판매자 수당 (20%)</span>
<span className="font-bold text-slate-900">{formatCurrency(totalSellerCommission)}</span>
</div>
<div className="flex justify-between items-center p-3 bg-slate-50 rounded-lg">
<span className="text-slate-600">관리 수당 (5%)</span>
<span className="font-bold text-slate-900">{formatCurrency(totalManagerCommission)}</span>
</div>
{salesMode === 'direct' && (
<div className="flex justify-between items-center p-3 bg-blue-50/50 rounded-lg border border-blue-100/50">
<span className="text-slate-600 font-medium text-sm flex items-center gap-2">
<span className="w-2 h-2 bg-blue-500 rounded-full"></span>
판매 수당 (20%)
</span>
<span className="font-bold text-blue-700">{formatCurrency(totalSellerCommission)}</span>
</div>
)}
{salesMode === 'manager' && (
<div className="flex justify-between items-center p-3 bg-indigo-50/50 rounded-lg border border-indigo-100/50">
<span className="text-slate-600 font-medium text-sm flex items-center gap-2">
<span className="w-2 h-2 bg-indigo-500 rounded-full"></span>
관리자 수당 (5%)
</span>
<span className="font-bold text-indigo-700">{formatCurrency(totalManagerCommission)}</span>
</div>
)}
<div className="flex justify-between items-center p-3 bg-slate-50 rounded-lg">
<span className="text-slate-600">메뉴제작 협업수당</span>
<span className="font-bold text-slate-900">운영팀 별도 산정</span>