diff --git a/salesmanagement/api/sales_tenants.php b/salesmanagement/api/sales_tenants.php index 3833ffe..3040945 100644 --- a/salesmanagement/api/sales_tenants.php +++ b/salesmanagement/api/sales_tenants.php @@ -325,16 +325,16 @@ try { $product_name = $data['product_name'] ?? ''; $contract_amount = $data['contract_amount'] ?? 0; - $commission_rate = $data['commission_rate'] ?? 0; + $subscription_fee = $data['subscription_fee'] ?? 0; $contract_date = $data['contract_date'] ?? date('Y-m-d'); $sub_models = isset($data['sub_models']) ? json_encode($data['sub_models']) : null; if (!$tenant_id || !$product_name) throw new Exception("필수 정보가 누락되었습니다."); - $commission_amount = $contract_amount; // 매니저 수익은 1개월치 구독료 전액 (100%) + $commission_amount = $contract_amount * 0.20; // 가입비의 20% 수당 - $stmt = $pdo->prepare("INSERT INTO sales_tenant_products (tenant_id, product_name, contract_amount, commission_rate, commission_amount, contract_date, sub_models) VALUES (?, ?, ?, ?, ?, ?, ?)"); - $stmt->execute([$tenant_id, $product_name, $contract_amount, 100, $commission_amount, $contract_date, $sub_models]); + $stmt = $pdo->prepare("INSERT INTO sales_tenant_products (tenant_id, product_name, contract_amount, subscription_fee, commission_rate, commission_amount, contract_date, sub_models) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); + $stmt->execute([$tenant_id, $product_name, $contract_amount, $subscription_fee, 20, $commission_amount, $contract_date, $sub_models]); echo json_encode(['success' => true, 'message' => '상품 계약 정보가 등록되었습니다.']); @@ -636,11 +636,12 @@ try { $commission_rate = $data['commission_rate'] ?? 0; $contract_date = $data['contract_date'] ?? date('Y-m-d'); $sub_models = isset($data['sub_models']) ? json_encode($data['sub_models']) : null; + $subscription_fee = $data['subscription_fee'] ?? 0; - $commission_amount = $contract_amount; // 매니저 수익은 1개월치 구독료 전액 (100%) + $commission_amount = $contract_amount * 0.20; // 가입비의 20% 수당 - $stmt = $pdo->prepare("UPDATE sales_tenant_products SET product_name = ?, contract_amount = ?, commission_rate = ?, commission_amount = ?, contract_date = ?, sub_models = ? WHERE id = ?"); - $stmt->execute([$product_name, $contract_amount, 100, $commission_amount, $contract_date, $sub_models, $product_id]); + $stmt = $pdo->prepare("UPDATE sales_tenant_products SET product_name = ?, contract_amount = ?, subscription_fee = ?, commission_rate = ?, commission_amount = ?, contract_date = ?, sub_models = ? WHERE id = ?"); + $stmt->execute([$product_name, $contract_amount, $subscription_fee, 20, $commission_amount, $contract_date, $sub_models, $product_id]); echo json_encode(['success' => true, 'message' => '계약 정보가 수정되었습니다.']); diff --git a/salesmanagement/index.php b/salesmanagement/index.php index 4ce5e43..487c8be 100644 --- a/salesmanagement/index.php +++ b/salesmanagement/index.php @@ -1078,23 +1078,25 @@ - - - - - - + + + + + + + - {!tenantProducts[t.id] ? ( - - ) : tenantProducts[t.id].length === 0 ? ( - + {!tenantProducts[t.id] ? ( + + ) : tenantProducts[t.id].length === 0 ? ( + ) : tenantProducts[t.id].map(p => ( - - - + + + + - + + @@ -3635,14 +3640,15 @@ {!tenantProducts[t.id] ? ( - + ) : tenantProducts[t.id].length === 0 ? ( - + ) : tenantProducts[t.id].map(p => ( - + +
상품명계약금액가입 승인지급 승인정산 지급액계약일상품명가입비월 구독료가입 승인지급 승인정산 지급액계약일
로딩 중...
등록된 계약이 없습니다.
로딩 중...
등록된 계약이 없습니다.
{p.product_name}{formatCurrency(p.contract_amount)}
{p.product_name}{formatCurrency(p.contract_amount)}{formatCurrency(p.subscription_fee || 0)}
상품명계약금액가입비월 구독료 수익기준 내 수익 계약일
로딩 중...
로딩 중...
등록된 계약 정보가 없습니다.
등록된 계약 정보가 없습니다.
{p.product_name} {formatCurrency(p.contract_amount)}1개월분{formatCurrency(p.subscription_fee || 0)}가입비 ({Number(p.commission_rate)}%) {formatCurrency(p.commission_amount)} {p.contract_date} @@ -3817,7 +3823,7 @@ @@ -3846,7 +3852,8 @@ ...productFormData, product_name: pkg.name, contract_amount: dbPrice.join_fee, - commission_rate: '100' // 1개월치 전액 + subscription_fee: dbPrice.subscription_fee, + commission_rate: '20' // 가입비의 20% }); setSelectedSubModels([]); } else { @@ -3854,7 +3861,8 @@ ...productFormData, product_name: '선택모델 하이브리드', contract_amount: 0, - commission_rate: '100' + subscription_fee: 0, + commission_rate: '20' }); } }} @@ -3906,7 +3914,8 @@ setProductFormData({ ...productFormData, product_name: newSubModels.length > 0 ? `선택모델(${newSubModels.length}종)` : '', - contract_amount: total + contract_amount: total, + subscription_fee: 0 }); }} className="w-4 h-4 text-indigo-600 rounded" @@ -3922,34 +3931,47 @@
- - setProductFormData({...productFormData, product_name: e.target.value})} className="w-full px-3 py-2 border border-slate-200 rounded-lg outline-none focus:ring-2 focus:ring-blue-500 bg-slate-50" placeholder="위에서 상품을 선택하세요" /> -
-
- + setProductFormData({...productFormData, contract_amount: e.target.value.replace(/[^0-9]/g, '')})} className="w-full px-3 py-2 border border-slate-200 rounded-lg outline-none focus:ring-2 focus:ring-blue-500 bg-slate-50 font-bold text-blue-600 text-right" + placeholder="0" + /> +
+
+ + setProductFormData({...productFormData, subscription_fee: e.target.value.replace(/[^0-9]/g, '')})} + className="w-full px-3 py-2 border border-slate-200 rounded-lg outline-none focus:ring-2 focus:ring-blue-500 font-bold text-slate-700 text-right" + placeholder="0" />
- -
1개월 구독료 (100%)
+ + setProductFormData({...productFormData, product_name: e.target.value})} className="w-full px-3 py-2 border border-slate-200 rounded-lg outline-none focus:ring-2 focus:ring-blue-500 bg-slate-50" placeholder="위에서 상품을 선택하세요" />
setProductFormData({...productFormData, contract_date: e.target.value})} className="w-full px-3 py-2 border border-slate-200 rounded-lg outline-none focus:ring-2 focus:ring-blue-500" />
+
+
+ 수익 기준: + 가입비의 20% +
+
예상 내 수익: - {formatCurrency((productFormData.contract_amount || 0))} + {formatCurrency((productFormData.contract_amount || 0) * 0.20)}