refactor:용어 변경 - 가입비 → 개발비
영업 관련 코드 및 문서 전체에서 "가입비"를 "개발비"로 변경 - 컨트롤러, 서비스, 모델 - 뷰 템플릿 (blade 파일) - 가이드북 문서 (마크다운) - 설정 파일 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -75,7 +75,7 @@ public function saveProducts(Request $request): JsonResponse
|
||||
]);
|
||||
}
|
||||
|
||||
// 총 가입비 업데이트
|
||||
// 총 개발비 업데이트
|
||||
$totalRegistrationFee = SalesContractProduct::where('management_id', $management->id)
|
||||
->sum('registration_fee');
|
||||
$management->update(['total_registration_fee' => $totalRegistrationFee]);
|
||||
|
||||
@@ -107,7 +107,7 @@ private function getDashboardData(Request $request): array
|
||||
$commissionRate = $totalCommission > 0 ? round(($paidCommission / $totalCommission) * 100, 1) : 0;
|
||||
|
||||
$stats = [
|
||||
'total_membership_fee' => $totalMembershipFee, // 총 가입비
|
||||
'total_membership_fee' => $totalMembershipFee, // 총 개발비
|
||||
'total_commission' => $totalCommission, // 총 수당
|
||||
'commission_rate' => $commissionRate, // 지급 완료 비율
|
||||
'total_contracts' => $totalContracts, // 전체 건수
|
||||
@@ -141,7 +141,7 @@ private function getDashboardData(Request $request): array
|
||||
[
|
||||
'name' => '협업지원금',
|
||||
'rate' => null, // 메뉴당 2,000원
|
||||
'amount' => null, // 가입비 완납 시 계산
|
||||
'amount' => null, // 개발비 완납 시 계산
|
||||
'color' => 'purple',
|
||||
],
|
||||
];
|
||||
@@ -157,12 +157,12 @@ private function getDashboardData(Request $request): array
|
||||
->where('hq_status', SalesTenantManagement::HQ_STATUS_HANDOVER)
|
||||
->get();
|
||||
|
||||
// 인계 완료된 계약의 가입비 합계
|
||||
// 인계 완료된 계약의 개발비 합계
|
||||
$handoverManagementIds = $handoverManagements->pluck('id')->toArray();
|
||||
$handoverTotalRegFee = SalesContractProduct::whereIn('management_id', $handoverManagementIds)
|
||||
->sum('registration_fee');
|
||||
|
||||
// 수당 계산: 가입비 × 50% × 20% = 가입비 × 10%
|
||||
// 수당 계산: 개발비 × 50% × 20% = 개발비 × 10%
|
||||
$handoverPartnerCommission = (int)($handoverTotalRegFee * 0.10);
|
||||
|
||||
// 내가 매니저로 지정된 인계 완료 건의 수당 계산
|
||||
@@ -185,7 +185,7 @@ private function getDashboardData(Request $request): array
|
||||
$commissionByRole[0]['amount'] = $partnerCommissionTotal;
|
||||
$commissionByRole[1]['amount'] = $managerCommissionTotal;
|
||||
|
||||
// 총 가입비 대비 수당 비율
|
||||
// 총 개발비 대비 수당 비율
|
||||
$totalCommissionRatio = $totalMembershipFee > 0 ? round(($totalCommission / $totalMembershipFee) * 100, 1) : 0;
|
||||
|
||||
// 1) 내가 등록한 가망고객에서 전환된 tenant_id (20% 수당)
|
||||
@@ -231,7 +231,7 @@ private function getDashboardData(Request $request): array
|
||||
$tenantStats = [
|
||||
'total_tenants' => count($convertedTenantIds) + $handoverProspectCount, // 관리 테넌트 + 인계완료
|
||||
'total_prospects' => $prospects->count(), // 진행중 가망고객
|
||||
'total_membership_revenue' => $totalMembershipFee, // 총 가입비 실적
|
||||
'total_membership_revenue' => $totalMembershipFee, // 총 개발비 실적
|
||||
'total_commission_accumulated' => $totalCommission, // 누적 수당
|
||||
'confirmed_commission' => $paidCommission, // 확정(지급완료) 수당
|
||||
];
|
||||
@@ -257,7 +257,7 @@ private function getDashboardData(Request $request): array
|
||||
->toArray();
|
||||
$devInProgressRegFee = SalesContractProduct::whereIn('management_id', $devInProgressManagementIds)
|
||||
->sum('registration_fee');
|
||||
$expectedFromDevInProgress = (int)($devInProgressRegFee * 0.10); // 가입비 × 10%
|
||||
$expectedFromDevInProgress = (int)($devInProgressRegFee * 0.10); // 개발비 × 10%
|
||||
|
||||
// 2) 인계 완료 중 지급 미완료 건
|
||||
$handoverUnpaidRegFee = SalesContractProduct::whereIn('management_id', $handoverManagementIds)
|
||||
@@ -614,11 +614,11 @@ private function calculatePartnerSummaryStats(array $partnerIds, int $currentUse
|
||||
// 하위 파트너들이 등록한 총 영업권(명함) 수
|
||||
$totalProspects = TenantProspect::whereIn('registered_by', $partnerIds)->count();
|
||||
|
||||
// 예상 수당 계산을 위해 먼저 가입비/구독료 정보 조회
|
||||
// 예상 수당 계산을 위해 먼저 개발비/구독료 정보 조회
|
||||
$prospectIds = TenantProspect::whereIn('registered_by', $partnerIds)->pluck('id')->toArray();
|
||||
$managementIds = SalesTenantManagement::whereIn('tenant_prospect_id', $prospectIds)->pluck('id')->toArray();
|
||||
|
||||
// 하위 파트너들의 계약 건수 (가입비가 설정된 건수)
|
||||
// 하위 파트너들의 계약 건수 (개발비가 설정된 건수)
|
||||
$contractedManagementCount = SalesContractProduct::whereIn('management_id', $managementIds)
|
||||
->where('registration_fee', '>', 0)
|
||||
->distinct('management_id')
|
||||
|
||||
@@ -89,7 +89,7 @@ public function creator(): BelongsTo
|
||||
}
|
||||
|
||||
/**
|
||||
* 테넌트별 총 가입비
|
||||
* 테넌트별 총 개발비
|
||||
*/
|
||||
public static function getTotalRegistrationFee(int $tenantId): float
|
||||
{
|
||||
|
||||
@@ -108,7 +108,7 @@ public function getFormattedDevelopmentFeeAttribute(): string
|
||||
}
|
||||
|
||||
/**
|
||||
* 포맷된 가입비
|
||||
* 포맷된 개발비
|
||||
*/
|
||||
public function getFormattedRegistrationFeeAttribute(): string
|
||||
{
|
||||
|
||||
@@ -116,7 +116,7 @@ public function createCommission(int $managementId, string $paymentType, float $
|
||||
// 계약 상품이 없으면 기본 계산
|
||||
$contractProducts = $management->contractProducts;
|
||||
$totalRegistrationFee = $contractProducts->sum('registration_fee') ?: $paymentAmount * 2;
|
||||
$baseAmount = $totalRegistrationFee / 2; // 가입비의 50%
|
||||
$baseAmount = $totalRegistrationFee / 2; // 개발비의 50%
|
||||
|
||||
// 수당률 (영업파트너 설정 또는 기본값)
|
||||
$partnerRate = $partner->commission_rate ?? self::DEFAULT_PARTNER_RATE;
|
||||
@@ -183,7 +183,7 @@ public function createCommission(int $managementId, string $paymentType, float $
|
||||
];
|
||||
}
|
||||
|
||||
// 총 가입비 업데이트
|
||||
// 총 개발비 업데이트
|
||||
$updateData['total_registration_fee'] = $totalRegistrationFee;
|
||||
$management->update($updateData);
|
||||
|
||||
|
||||
@@ -227,7 +227,7 @@ public static function getScenarioSteps(): array
|
||||
],
|
||||
[
|
||||
'title' => '세금계산서 및 입금',
|
||||
'detail' => '가입비(초기 도입비)에 대한 세금계산서를 발행하고, 입금 기한 내 수금을 확인하세요.',
|
||||
'detail' => '개발비(초기 도입비)에 대한 세금계산서를 발행하고, 입금 기한 내 수금을 확인하세요.',
|
||||
'pro_tip' => '세금계산서 발행 시 사업자등록증 사본과 이메일 주소를 다시 한번 정확히 확인하세요.',
|
||||
],
|
||||
[
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
'id' => 'close_1',
|
||||
'title' => '계약 체결 완료',
|
||||
'detail' => '계약서 날인/교부, 세금계산서 발행, 후속 지원 일정까지 한 번에 진행하세요.',
|
||||
'pro_tip' => '가입비 입금이 완료되어야 매니저에게 프로젝트가 이관됩니다.',
|
||||
'pro_tip' => '개발비 입금이 완료되어야 매니저에게 프로젝트가 이관됩니다.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
@@ -49,7 +49,7 @@ #### [내 활동] 탭
|
||||
| 항목 | 설명 |
|
||||
| ----------- | ---------------------------------- |
|
||||
| 관리 테넌트 | 본인이 담당하는 업체 수 |
|
||||
| 총 가입비 | 계약된 가입비 합계 |
|
||||
| 총 개발비 | 계약된 개발비 합계 |
|
||||
| 확정 수당 | 받을 수당 총액 (클릭 시 상세 보기) |
|
||||
| 승인 대기 | 가입/지급 승인 대기 건수 |
|
||||
|
||||
@@ -57,7 +57,7 @@ #### [내 활동] 탭
|
||||
|
||||
- 본인이 담당하는 테넌트(업체) 목록
|
||||
- 각 업체의 영업/매니저 진행률 확인
|
||||
- 계약 금액(가입비, 월 구독료) 확인
|
||||
- 계약 금액(개발비, 월 구독료) 확인
|
||||
|
||||
#### [유치 파트너 현황] 탭
|
||||
|
||||
@@ -139,7 +139,7 @@ #### 영업 시나리오 (영업파트너 담당)
|
||||
| 5. 협상 및 조율 | Negotiation | 가격/조건 협상, 의사결정권자 설득 |
|
||||
| 6. 계약 체결 | Closing | 계약서 날인/교부, 세금계산서 발행, 후속 지원 일정 |
|
||||
|
||||
> **Tip:** 가입비 입금이 완료되어야 매니저에게 프로젝트가 이관됩니다.
|
||||
> **Tip:** 개발비 입금이 완료되어야 매니저에게 프로젝트가 이관됩니다.
|
||||
|
||||
#### 매니저 시나리오 (매니저 담당)
|
||||
|
||||
@@ -238,7 +238,7 @@ ### 상세 정보 확인
|
||||
- 개발 진행 상태 (8단계 프로그레스 바)
|
||||
- 영업/매니저 진행률
|
||||
- 고객 정보 (업체명, 사업자번호, 대표자, 연락처, 주소)
|
||||
- 계약 상품 목록 (가입비, 월 구독료)
|
||||
- 계약 상품 목록 (개발비, 월 구독료)
|
||||
- 메모 (반려 사유 등)
|
||||
|
||||
---
|
||||
@@ -255,21 +255,21 @@ ### 수당 구조
|
||||
|
||||
### 수당 계산 기준
|
||||
|
||||
- **기준 금액**: 가입비의 50%
|
||||
- **기준 금액**: 개발비의 50%
|
||||
- **판매자 수당**: 기준금액 × 20%
|
||||
- **관리자 수당**: 기준금액 × 5%
|
||||
|
||||
### 1차/2차 수당 분할 지급
|
||||
|
||||
가입비 수당은 **1차/2차로 50%씩 분할 지급**됩니다.
|
||||
개발비 수당은 **1차/2차로 50%씩 분할 지급**됩니다.
|
||||
|
||||
| 구분 | 지급 시점 | 금액 |
|
||||
|------|----------|------|
|
||||
| 1차 수당 | 가입비 1차 입금 완료 후 익월 10일 | 수당의 50% |
|
||||
| 2차 수당 | 가입비 2차(잔금) 입금 완료 후 익월 10일 | 수당의 50% |
|
||||
| 1차 수당 | 개발비 1차 입금 완료 후 익월 10일 | 수당의 50% |
|
||||
| 2차 수당 | 개발비 2차(잔금) 입금 완료 후 익월 10일 | 수당의 50% |
|
||||
|
||||
**예시**: 가입비 1,000만원 계약 시
|
||||
- 기준 금액: 500만원 (가입비의 50%)
|
||||
**예시**: 개발비 1,000만원 계약 시
|
||||
- 기준 금액: 500만원 (개발비의 50%)
|
||||
- 판매자 수당: 100만원 (기준금액의 20%)
|
||||
- 1차 수당: 50만원 (1차 입금 후)
|
||||
- 2차 수당: 50만원 (2차 입금 후)
|
||||
@@ -280,21 +280,21 @@ ### 수당 상태 구분
|
||||
|
||||
| 상태 | 색상 | 설명 |
|
||||
|------|------|------|
|
||||
| 납입대기 | 회색 | 고객의 가입비 입금 대기 중 |
|
||||
| 지급예정 | 노란색 | 가입비 입금 완료, 익월 10일 지급 예정 |
|
||||
| 납입대기 | 회색 | 고객의 개발비 입금 대기 중 |
|
||||
| 지급예정 | 노란색 | 개발비 입금 완료, 익월 10일 지급 예정 |
|
||||
| 지급완료 | 초록색 | 수당 지급 완료 |
|
||||
|
||||
### 수당 지급 프로세스
|
||||
|
||||
```
|
||||
납입대기 → 가입비 입금 → 지급예정 → 익월 10일 → 지급완료
|
||||
납입대기 → 개발비 입금 → 지급예정 → 익월 10일 → 지급완료
|
||||
```
|
||||
|
||||
1. **납입대기**: 고객의 가입비 입금을 기다리는 상태
|
||||
2. **지급예정**: 가입비가 입금되면 자동으로 지급예정 상태로 변경
|
||||
1. **납입대기**: 고객의 개발비 입금을 기다리는 상태
|
||||
2. **지급예정**: 개발비가 입금되면 자동으로 지급예정 상태로 변경
|
||||
3. **지급완료**: 매월 10일에 지급예정 건을 일괄 지급
|
||||
|
||||
> **중요**: 가입비 수당은 가입비 완료 후 지급됩니다. 1차/2차 분할 입금 시 각각의 입금 완료 후 해당 차수 수당이 지급됩니다.
|
||||
> **중요**: 개발비 수당은 개발비 완료 후 지급됩니다. 1차/2차 분할 입금 시 각각의 입금 완료 후 해당 차수 수당이 지급됩니다.
|
||||
|
||||
### 수당 현황 확인
|
||||
|
||||
@@ -383,7 +383,7 @@ ### 지급 승인 프로세스
|
||||
영업 수당 지급도 본사 승인이 필요합니다.
|
||||
|
||||
**1. 수당 발생**
|
||||
- 테넌트 계약 완료 및 가입비 입금
|
||||
- 테넌트 계약 완료 및 개발비 입금
|
||||
- 수당이 자동 계산되어 지급 대기 상태
|
||||
|
||||
**2. 지급 승인 (관리자)**
|
||||
@@ -432,7 +432,7 @@ ### Q. 같은 업체를 다른 파트너가 이미 등록했어요
|
||||
|
||||
### Q. 수당은 언제 지급되나요?
|
||||
|
||||
> 가입비 입금 완료 후 본사 승인을 거쳐 **익월 10일**에 지급됩니다.
|
||||
> 개발비 입금 완료 후 본사 승인을 거쳐 **익월 10일**에 지급됩니다.
|
||||
|
||||
### Q. 유치한 파트너가 비활동 상태입니다
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<span class="font-medium">{{ number_format($commission->payment_amount) }}원</span>
|
||||
</div>
|
||||
<div class="flex justify-between">
|
||||
<span class="text-gray-600">수당 기준액 (가입비 50%)</span>
|
||||
<span class="text-gray-600">수당 기준액 (개발비 50%)</span>
|
||||
<span class="font-medium">{{ number_format($commission->base_amount) }}원</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -142,7 +142,7 @@
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500">상품</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500">가입비</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500">개발비</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500">파트너수당</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500">매니저수당</th>
|
||||
</tr>
|
||||
|
||||
@@ -41,7 +41,7 @@ class="w-full rounded-lg border-gray-300 focus:border-emerald-500 focus:ring-eme
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500">상품명</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500">가입비</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500">개발비</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-200">
|
||||
@@ -54,7 +54,7 @@ class="w-full rounded-lg border-gray-300 focus:border-emerald-500 focus:ring-eme
|
||||
</tbody>
|
||||
<tfoot class="bg-gray-50">
|
||||
<tr>
|
||||
<td class="px-4 py-2 text-sm font-medium text-gray-900">총 가입비</td>
|
||||
<td class="px-4 py-2 text-sm font-medium text-gray-900">총 개발비</td>
|
||||
<td class="px-4 py-2 text-sm text-right font-bold text-emerald-600">
|
||||
{{ number_format($management->contractProducts->sum('registration_fee')) }}원
|
||||
</td>
|
||||
@@ -124,7 +124,7 @@ class="text-emerald-600 focus:ring-emerald-500">
|
||||
class="w-full rounded-lg border-gray-300 focus:border-emerald-500 focus:ring-emerald-500 pr-12">
|
||||
<span class="absolute inset-y-0 right-0 flex items-center pr-4 text-gray-500">원</span>
|
||||
</div>
|
||||
<p class="text-xs text-gray-500 mt-1">총 가입비의 50%를 입금받습니다.</p>
|
||||
<p class="text-xs text-gray-500 mt-1">총 개발비의 50%를 입금받습니다.</p>
|
||||
</div>
|
||||
|
||||
{{-- 입금일 --}}
|
||||
@@ -151,7 +151,7 @@ class="w-full rounded-lg border-gray-300 focus:border-emerald-500 focus:ring-eme
|
||||
<h4 class="text-sm font-medium text-emerald-800 mb-2">수당 미리보기</h4>
|
||||
<div class="space-y-1 text-sm">
|
||||
<div class="flex justify-between">
|
||||
<span class="text-gray-600">기준액 (가입비의 50%)</span>
|
||||
<span class="text-gray-600">기준액 (개발비의 50%)</span>
|
||||
<span class="font-medium">{{ number_format($baseAmount) }}원</span>
|
||||
</div>
|
||||
<div class="flex justify-between">
|
||||
|
||||
@@ -53,8 +53,8 @@ class="text-sm text-emerald-600 hover:text-emerald-700">
|
||||
<svg class="w-5 h-5 text-blue-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" />
|
||||
</svg>
|
||||
가입비 수당 지급 현황
|
||||
<span class="text-xs text-gray-400 font-normal">(가입비의 50%씩 1차/2차 분할 지급)</span>
|
||||
개발비 수당 지급 현황
|
||||
<span class="text-xs text-gray-400 font-normal">(개발비의 50%씩 1차/2차 분할 지급)</span>
|
||||
</h4>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
@@ -143,8 +143,8 @@ class="text-sm text-emerald-600 hover:text-emerald-700">
|
||||
</svg>
|
||||
<div>
|
||||
<p class="mb-1"><strong>수당 지급 프로세스:</strong></p>
|
||||
<p>• <span class="text-gray-500">납입대기</span>: 고객의 가입비 입금 대기 중</p>
|
||||
<p>• <span class="text-amber-600">지급예정</span>: 가입비 입금 완료, 익월 10일 수당 지급 예정</p>
|
||||
<p>• <span class="text-gray-500">납입대기</span>: 고객의 개발비 입금 대기 중</p>
|
||||
<p>• <span class="text-amber-600">지급예정</span>: 개발비 입금 완료, 익월 10일 수당 지급 예정</p>
|
||||
<p>• <span class="text-emerald-600">지급완료</span>: 수당 지급 완료</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -44,10 +44,10 @@
|
||||
<p class="text-xl font-bold text-slate-800 mt-1">{{ $tenantStats['total_tenants'] ?? 0 }}<span class="text-sm font-normal">건</span></p>
|
||||
</div>
|
||||
|
||||
{{-- 총 가입비 --}}
|
||||
{{-- 총 개발비 --}}
|
||||
<div class="bg-slate-50 border border-slate-200 rounded-lg p-3">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-xs text-slate-500">총 가입비</span>
|
||||
<span class="text-xs text-slate-500">총 개발비</span>
|
||||
<svg class="w-4 h-4 text-slate-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
@@ -84,8 +84,8 @@ class="bg-emerald-50 border border-emerald-200 rounded-lg p-3 text-left hover:bg
|
||||
<svg class="w-4 h-4 text-emerald-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" />
|
||||
</svg>
|
||||
가입비 수당 지급 현황
|
||||
<span class="text-xs text-gray-400 font-normal">(가입비의 50%씩 1차/2차 분할)</span>
|
||||
개발비 수당 지급 현황
|
||||
<span class="text-xs text-gray-400 font-normal">(개발비의 50%씩 1차/2차 분할)</span>
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
@@ -150,7 +150,7 @@ class="bg-emerald-50 border border-emerald-200 rounded-lg p-3 text-left hover:bg
|
||||
</svg>
|
||||
<span>
|
||||
<span class="text-gray-500">납입대기</span> →
|
||||
가입비 입금 →
|
||||
개발비 입금 →
|
||||
<span class="text-amber-600 font-medium">지급예정</span> →
|
||||
익월 10일 →
|
||||
<span class="text-emerald-600 font-medium">지급완료</span>
|
||||
|
||||
@@ -239,7 +239,7 @@ class="inline-flex items-center gap-1 px-2 py-1 rounded text-xs font-medium bg-g
|
||||
@if($prospectProductCount > 0)
|
||||
<div class="space-y-0.5">
|
||||
<div>
|
||||
<p class="text-xs text-gray-400">가입비</p>
|
||||
<p class="text-xs text-gray-400">개발비</p>
|
||||
<p class="text-sm font-bold text-indigo-600">₩{{ number_format($prospectTotalRegFee) }}</p>
|
||||
</div>
|
||||
<div>
|
||||
@@ -399,7 +399,7 @@ class="inline-flex items-center gap-1 px-2 py-1 rounded text-xs font-medium bg-g
|
||||
@if($prospectProductCount > 0)
|
||||
<div class="space-y-0.5">
|
||||
<div>
|
||||
<p class="text-xs text-gray-400">가입비</p>
|
||||
<p class="text-xs text-gray-400">개발비</p>
|
||||
<p class="text-sm font-bold text-indigo-600">₩{{ number_format($prospectTotalRegFee) }}</p>
|
||||
</div>
|
||||
<div>
|
||||
@@ -619,7 +619,7 @@ class="inline-flex items-center gap-1 px-2 py-1 rounded text-xs font-medium bg-g
|
||||
@if($productCount > 0)
|
||||
<div class="space-y-1">
|
||||
<div>
|
||||
<p class="text-xs text-gray-400">가입비</p>
|
||||
<p class="text-xs text-gray-400">개발비</p>
|
||||
<p class="text-lg font-bold text-indigo-600">₩{{ number_format($totalRegFee) }}</p>
|
||||
</div>
|
||||
<div>
|
||||
@@ -630,7 +630,7 @@ class="inline-flex items-center gap-1 px-2 py-1 rounded text-xs font-medium bg-g
|
||||
@else
|
||||
<div class="space-y-1">
|
||||
<div>
|
||||
<p class="text-xs text-gray-400">가입비</p>
|
||||
<p class="text-xs text-gray-400">개발비</p>
|
||||
<p class="text-lg font-bold text-gray-300">-</p>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
@@ -24,10 +24,10 @@
|
||||
<p class="text-xs text-gray-400 mt-1">등록된 총 업체 수</p>
|
||||
</div>
|
||||
|
||||
<!-- 총 가입비 실적 -->
|
||||
<!-- 총 개발비 실적 -->
|
||||
<div class="bg-white border border-gray-200 rounded-xl p-5 hover:shadow-md transition-shadow">
|
||||
<div class="flex items-start justify-between mb-3">
|
||||
<span class="text-sm text-gray-500">총 가입비 실적</span>
|
||||
<span class="text-sm text-gray-500">총 개발비 실적</span>
|
||||
<div class="p-2 bg-blue-50 rounded-lg">
|
||||
<svg class="w-5 h-5 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
|
||||
@@ -35,13 +35,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-3xl font-bold text-gray-900">₩{{ number_format($tenantStats['total_membership_revenue'] ?? 0) }}</p>
|
||||
<p class="text-xs text-gray-400 mt-1">전체 가입비 합계</p>
|
||||
<p class="text-xs text-gray-400 mt-1">전체 개발비 합계</p>
|
||||
</div>
|
||||
|
||||
<!-- 누적 가입비 수당 -->
|
||||
<!-- 누적 개발비 수당 -->
|
||||
<div class="bg-white border border-gray-200 rounded-xl p-5 hover:shadow-md transition-shadow">
|
||||
<div class="flex items-start justify-between mb-3">
|
||||
<span class="text-sm text-gray-500">누적 가입비 수당</span>
|
||||
<span class="text-sm text-gray-500">누적 개발비 수당</span>
|
||||
<div class="p-2 bg-blue-50 rounded-lg">
|
||||
<svg class="w-5 h-5 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
@@ -49,13 +49,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-3xl font-bold text-gray-900">₩{{ number_format($tenantStats['total_commission_accumulated'] ?? 0) }}</p>
|
||||
<p class="text-xs text-gray-400 mt-1">전체 가입비 수당 합계</p>
|
||||
<p class="text-xs text-gray-400 mt-1">전체 개발비 수당 합계</p>
|
||||
</div>
|
||||
|
||||
<!-- 확정 가입비 수당 (지급대상) -->
|
||||
<!-- 확정 개발비 수당 (지급대상) -->
|
||||
<div class="bg-green-50 border border-green-200 rounded-xl p-5 hover:shadow-md transition-shadow">
|
||||
<div class="flex items-start justify-between mb-3">
|
||||
<span class="text-sm text-green-700">확정 가입비 수당 (지급대상)</span>
|
||||
<span class="text-sm text-green-700">확정 개발비 수당 (지급대상)</span>
|
||||
<div class="p-2 bg-green-100 rounded-lg">
|
||||
<svg class="w-5 h-5 text-green-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
|
||||
@@ -131,7 +131,7 @@ class="text-gray-400 hover:text-gray-600 transition">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase">상품명</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500 uppercase">가입비</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500 uppercase">개발비</th>
|
||||
<th class="px-4 py-2 text-right text-xs font-medium text-gray-500 uppercase">월 구독료</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -104,7 +104,7 @@ class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"
|
||||
<p class="text-sm text-gray-500 mt-0.5">{{ $product->description }}</p>
|
||||
@endif
|
||||
<div class="flex items-center gap-4 mt-2 text-sm">
|
||||
<span class="text-gray-500">가입비:
|
||||
<span class="text-gray-500">개발비:
|
||||
<span class="text-gray-400 line-through text-xs">{{ $product->formatted_development_fee }}</span>
|
||||
<span class="font-semibold text-indigo-600">{{ $product->formatted_registration_fee }}</span>
|
||||
</span>
|
||||
@@ -128,7 +128,7 @@ class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"
|
||||
<p class="text-xl font-bold text-gray-900" x-text="selectedCount + '개'"></p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-xs text-gray-500 mb-1">총 가입비</p>
|
||||
<p class="text-xs text-gray-500 mb-1">총 개발비</p>
|
||||
<p class="text-xl font-bold text-indigo-600" x-text="formatCurrency(totalDevFee)"></p>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
@@ -125,7 +125,7 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:rin
|
||||
placeholder="0" required>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">가입비 (할인가)</label>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">개발비 (할인가)</label>
|
||||
<input type="text"
|
||||
:value="formatNumber(productForm.registration_fee)"
|
||||
x-on:input="productForm.registration_fee = parseNumber($event.target.value); $event.target.value = formatNumber(productForm.registration_fee)"
|
||||
@@ -408,7 +408,7 @@ function productManager() {
|
||||
updateDevelopmentFee(value) {
|
||||
const fee = this.parseNumber(value);
|
||||
this.productForm.development_fee = fee;
|
||||
// 가입비 자동 계산 (개발비의 25%)
|
||||
// 개발비 자동 계산 (개발비의 25%)
|
||||
this.productForm.registration_fee = Math.floor(fee * 0.25);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -32,7 +32,7 @@ class="p-1 text-gray-400 hover:text-indigo-600 transition-colors">
|
||||
{{-- 가격 정보 --}}
|
||||
<div class="space-y-2 pt-3 border-t border-gray-100">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-sm text-gray-500">가입비</span>
|
||||
<span class="text-sm text-gray-500">개발비</span>
|
||||
<div class="text-right">
|
||||
<span class="text-sm text-gray-400 line-through">{{ $product->formatted_development_fee }}</span>
|
||||
<span class="ml-2 font-bold text-indigo-600">{{ $product->formatted_registration_fee }}</span>
|
||||
|
||||
Reference in New Issue
Block a user