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:
김보곤
2026-02-19 15:01:38 +09:00
parent 706e1e3de4
commit bf51e14e54
2 changed files with 43 additions and 24 deletions

View File

@@ -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',
]);
// 상태 필터

View File

@@ -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