diff --git a/app/Http/Controllers/Finance/SettlementController.php b/app/Http/Controllers/Finance/SettlementController.php index c1146732..2b6f6b61 100644 --- a/app/Http/Controllers/Finance/SettlementController.php +++ b/app/Http/Controllers/Finance/SettlementController.php @@ -173,10 +173,11 @@ public function customerTab(Request $request): View { $query = SalesTenantManagement::with([ 'tenant', - 'tenantProspect', + 'tenantProspect.registeredBy.salesPartner', 'salesPartner.user', 'manager', 'commissions', + 'contractProducts', ])->where('hq_status', '!=', SalesTenantManagement::HQ_STATUS_PENDING); // 필터: 검색 (회사명) @@ -192,9 +193,14 @@ public function customerTab(Request $request): View $query->where('hq_status', $hqStatus); } - // 필터: 담당 파트너 + // 필터: 담당 파트너 (salesPartner 또는 tenantProspect.registeredBy.salesPartner) if ($partnerId = $request->input('partner_id')) { - $query->where('sales_partner_id', $partnerId); + $query->where(function ($q) use ($partnerId) { + $q->where('sales_partner_id', $partnerId) + ->orWhereHas('tenantProspect.registeredBy.salesPartner', function ($sq) use ($partnerId) { + $sq->where('id', $partnerId); + }); + }); } // 필터: 수금 상태 diff --git a/resources/views/finance/settlement/partials/customer-tab.blade.php b/resources/views/finance/settlement/partials/customer-tab.blade.php index bfe137b9..9120ead6 100644 --- a/resources/views/finance/settlement/partials/customer-tab.blade.php +++ b/resources/views/finance/settlement/partials/customer-tab.blade.php @@ -93,9 +93,41 @@ class="w-full rounded-lg border-gray-300 focus:border-indigo-500 focus:ring-indi @forelse ($managements as $mgmt) @php - $companyName = $mgmt->tenant->company_name ?? $mgmt->tenantProspect->company_name ?? '-'; + $companyName = $mgmt->tenant?->company_name ?? $mgmt->tenantProspect?->company_name ?? '-'; $tenantActive = $mgmt->tenant && !$mgmt->tenant->trashed(); + + // 개발비 총액 (management 직접 값 → contractProducts 합산) + $totalFee = $mgmt->total_registration_fee > 0 + ? $mgmt->total_registration_fee + : ($mgmt->contractProducts?->sum('registration_fee') ?? 0); + + // 계약금/잔금 기본값 (총개발비의 50%) + $calcBase = $totalFee / 2; + + // 계약금 + $depositAmount = $mgmt->deposit_amount > 0 + ? $mgmt->deposit_amount + : ($totalFee > 0 ? $calcBase : 0); + + // 잔금 + $balanceAmount = $mgmt->balance_amount > 0 + ? $mgmt->balance_amount + : ($totalFee > 0 ? $calcBase : 0); + + // 구독료 (tenant 기반 조회 → contractProducts fallback) $monthlyFee = $subscriptionFees[$mgmt->tenant_id] ?? 0; + if ($monthlyFee <= 0) { + $monthlyFee = $mgmt->contractProducts?->sum('subscription_fee') ?? 0; + } + + // 담당파트너 (salesPartner → tenantProspect.registeredBy) + $partnerName = $mgmt->salesPartner?->user?->name + ?? $mgmt->tenantProspect?->registeredBy?->name + ?? '-'; + + // 담당매니저 + $managerName = $mgmt->manager?->name ?? '-'; + $firstSubscriptionAt = $mgmt->commissions->first()?->first_subscription_at; @endphp @@ -113,18 +145,18 @@ class="w-full rounded-lg border-gray-300 focus:border-indigo-500 focus:ring-indi {{-- 담당파트너 --}} - {{ $mgmt->salesPartner?->user?->name ?? '-' }} + {{ $partnerName }} {{-- 담당매니저 --}} - {{ $mgmt->manager?->name ?? '-' }} + {{ $managerName }} {{-- 개발비 총액 --}} - @if ($mgmt->total_registration_fee > 0) - {{ number_format($mgmt->total_registration_fee) }}원 + @if ($totalFee > 0) + {{ number_format($totalFee) }}원 @else - @endif @@ -132,8 +164,8 @@ class="w-full rounded-lg border-gray-300 focus:border-indigo-500 focus:ring-indi {{-- 1차(계약금) --}} - @if ($mgmt->deposit_amount > 0) -
{{ number_format($mgmt->deposit_amount) }}원
+ @if ($depositAmount > 0) +
{{ number_format($depositAmount) }}원
@if ($mgmt->deposit_status === 'paid') 완료 @else @@ -149,8 +181,8 @@ class="w-full rounded-lg border-gray-300 focus:border-indigo-500 focus:ring-indi {{-- 2차(잔금) --}} - @if ($mgmt->balance_amount > 0) -
{{ number_format($mgmt->balance_amount) }}원
+ @if ($balanceAmount > 0) +
{{ number_format($balanceAmount) }}원
@if ($mgmt->balance_status === 'paid') 완료 @else