fix:수당 정산 금액을 management 데이터에서 자동 계산
- commission 금액이 0일 때 management의 total_registration_fee/contractProducts에서 계산 - 기준액 = 총개발비 / 2, 입금액 = 기준액 (계약금/잔금 각 50%) - 파트너수당 = 기준액 × 20%, 매니저수당 = 기준액 × 5%, 유치수당 = 기준액 × 3% - eager loading에 management.contractProducts 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -36,6 +36,7 @@ public function getCommissions(array $filters = [], int $perPage = 20): LengthAw
|
||||
'tenant', 'partner.user.parent', 'manager', 'referrerPartner.user',
|
||||
'management.tenant', 'management.tenantProspect.registeredBy.parent',
|
||||
'management.salesPartner.user.parent', 'management.manager',
|
||||
'management.contractProducts',
|
||||
]);
|
||||
|
||||
// 상태 필터
|
||||
|
||||
@@ -24,6 +24,37 @@
|
||||
</thead>
|
||||
<tbody class="bg-white divide-y divide-gray-200">
|
||||
@forelse ($commissions as $commission)
|
||||
@php
|
||||
// commission 금액이 0이면 management 데이터로 계산
|
||||
$mgmt = $commission->management;
|
||||
$totalFee = $mgmt?->total_registration_fee
|
||||
?? $mgmt?->contractProducts?->sum('registration_fee')
|
||||
?? 0;
|
||||
$calcBase = $totalFee / 2; // 개발비의 50%
|
||||
|
||||
// 입금액
|
||||
$displayPayment = $commission->payment_amount > 0
|
||||
? $commission->payment_amount
|
||||
: ($commission->payment_type === 'deposit'
|
||||
? ($mgmt?->deposit_amount ?? $calcBase)
|
||||
: ($mgmt?->balance_amount ?? $calcBase));
|
||||
|
||||
// 수당률 (commission 기록 우선, 없으면 기본값)
|
||||
$pRate = $commission->partner_rate > 0 ? $commission->partner_rate : 20;
|
||||
$mRate = $commission->manager_rate > 0 ? $commission->manager_rate : 5;
|
||||
$rRate = $commission->referrer_rate > 0 ? $commission->referrer_rate : 3;
|
||||
|
||||
// 수당 금액 (commission 기록 우선, 없으면 계산)
|
||||
$displayPartnerComm = $commission->partner_commission > 0
|
||||
? $commission->partner_commission
|
||||
: ($calcBase > 0 ? $calcBase * ($pRate / 100) : 0);
|
||||
$displayManagerComm = $commission->manager_commission > 0
|
||||
? $commission->manager_commission
|
||||
: ($calcBase > 0 && $commission->manager_user_id ? $calcBase * ($mRate / 100) : 0);
|
||||
$displayReferrerComm = $commission->referrer_commission > 0
|
||||
? $commission->referrer_commission
|
||||
: ($calcBase > 0 ? $calcBase * ($rRate / 100) : 0);
|
||||
@endphp
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-4 py-3">
|
||||
@if (in_array($commission->status, ['pending', 'approved']))
|
||||
@@ -62,15 +93,8 @@ class="commission-checkbox rounded border-gray-300 text-emerald-600 focus:ring-e
|
||||
</span>
|
||||
</td>
|
||||
<td class="px-4 py-3 text-right text-sm text-gray-900">
|
||||
@php
|
||||
$displayAmount = $commission->payment_amount > 0
|
||||
? $commission->payment_amount
|
||||
: ($commission->payment_type === 'deposit'
|
||||
? $commission->management?->deposit_amount
|
||||
: $commission->management?->balance_amount);
|
||||
@endphp
|
||||
@if ($displayAmount > 0)
|
||||
{{ number_format($displayAmount) }}
|
||||
@if ($displayPayment > 0)
|
||||
{{ number_format($displayPayment) }}
|
||||
@else
|
||||
<span class="text-gray-400">-</span>
|
||||
@endif
|
||||
@@ -86,26 +110,22 @@ class="commission-checkbox rounded border-gray-300 text-emerald-600 focus:ring-e
|
||||
?? '-';
|
||||
@endphp
|
||||
<div class="text-sm text-gray-900">{{ $partnerName }}</div>
|
||||
@if ($commission->partner_rate > 0)
|
||||
<div class="text-xs text-gray-500">{{ $commission->partner_rate }}%</div>
|
||||
@endif
|
||||
<div class="text-xs text-gray-500">{{ $pRate }}%</div>
|
||||
</td>
|
||||
<td class="px-4 py-3 text-right text-sm font-medium text-emerald-600">
|
||||
@if ($commission->partner_commission > 0)
|
||||
{{ number_format($commission->partner_commission) }}
|
||||
@if ($displayPartnerComm > 0)
|
||||
{{ number_format($displayPartnerComm) }}
|
||||
@else
|
||||
<span class="text-gray-400">-</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-4 py-3">
|
||||
<div class="text-sm text-gray-900">{{ $commission->manager?->name ?? $commission->management?->manager?->name ?? '-' }}</div>
|
||||
@if ($commission->manager_rate > 0)
|
||||
<div class="text-xs text-gray-500">{{ $commission->manager_rate }}%</div>
|
||||
@endif
|
||||
<div class="text-xs text-gray-500">{{ $mRate }}%</div>
|
||||
</td>
|
||||
<td class="px-4 py-3 text-right text-sm font-medium text-blue-600">
|
||||
@if ($commission->manager_commission > 0)
|
||||
{{ number_format($commission->manager_commission) }}
|
||||
@if ($displayManagerComm > 0)
|
||||
{{ number_format($displayManagerComm) }}
|
||||
@else
|
||||
<span class="text-gray-400">-</span>
|
||||
@endif
|
||||
@@ -124,16 +144,14 @@ class="commission-checkbox rounded border-gray-300 text-emerald-600 focus:ring-e
|
||||
@endphp
|
||||
@if ($referrerName)
|
||||
<div class="text-sm text-gray-900">{{ $referrerName }}</div>
|
||||
@if ($commission->referrer_rate > 0)
|
||||
<div class="text-xs text-gray-500">{{ $commission->referrer_rate }}%</div>
|
||||
@endif
|
||||
<div class="text-xs text-gray-500">{{ $rRate }}%</div>
|
||||
@else
|
||||
<span class="text-sm text-gray-400">-</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-4 py-3 text-right text-sm font-medium text-orange-600">
|
||||
@if ($commission->referrer_commission > 0)
|
||||
{{ number_format($commission->referrer_commission) }}
|
||||
@if ($displayReferrerComm > 0)
|
||||
{{ number_format($displayReferrerComm) }}
|
||||
@else
|
||||
<span class="text-gray-400">-</span>
|
||||
@endif
|
||||
|
||||
Reference in New Issue
Block a user