From d5aab85731b6d3141bc53497d7f19ba087b0a8a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 19 Feb 2026 15:21:50 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EA=B3=A0=EA=B0=9D=EC=82=AC=EC=A0=95?= =?UTF-8?q?=EC=82=B0=20=ED=83=AD=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=20=EA=B0=9C=EC=84=A0=20(=EC=88=98=EB=8B=B9=EC=A0=95?= =?UTF-8?q?=EC=82=B0=20=ED=83=AD=EA=B3=BC=20=EB=8F=99=EC=9D=BC=20fallback?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EC=A0=81=EC=9A=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 담당파트너: salesPartner→user → tenantProspect→registeredBy fallback 추가 - 개발비/계약금/잔금: contractProducts 기반 계산 fallback 추가 - 구독료: contractProducts fallback 추가 - eager loading에 tenantProspect.registeredBy.salesPartner, contractProducts 추가 - 파트너 필터에 tenantProspect.registeredBy 경로 추가 Co-Authored-By: Claude Opus 4.6 --- .../Finance/SettlementController.php | 12 +++-- .../partials/customer-tab.blade.php | 50 +++++++++++++++---- 2 files changed, 50 insertions(+), 12 deletions(-) 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