@php $fund = $fund ?? 'pf'; $fundUpper = strtoupper($fund); $settings = $fundSettings ?? null; $loanModel = match ($fund) { 'gf' => \App\Models\GfLoan::class, 'swf' => \App\Models\SwfLoan::class, default => \App\Models\PfLoan::class, }; $indexRoute = route("{$fund}.loans"); $statuses = ['pending', 'approved', 'rejected', 'active', 'closed']; $tab = $tab ?? request('tab', 'register'); $filterQuery = $filterQuery ?? request()->query(); $filters = $filters ?? []; $currentYear = (int) ($filters['year'] ?? date('Y')); $currentMonth = (int) ($filters['month'] ?? 0); $installmentScope = $tab === 'overdue' ? 'overdue' : 'monthly'; $exportRoute = $tab === 'register' ? route("{$fund}.loans.export", $filterQuery) : route("{$fund}.loans.installments.export", array_merge($filterQuery, ['scope' => $installmentScope])); $printRoute = $tab === 'register' ? route("{$fund}.loans.list_print", $filterQuery) : route("{$fund}.loans.installments.print", array_merge($filterQuery, ['scope' => $installmentScope])); $sharedTabQuery = array_filter([ 'warehouse_id' => $filterQuery['warehouse_id'] ?? null, 'department_id' => $filterQuery['department_id'] ?? null, ]); $registerTabUrl = route("{$fund}.loans", array_merge($sharedTabQuery, ['tab' => 'register'])); $installmentsTabUrl = route("{$fund}.loans", array_merge($sharedTabQuery, ['tab' => 'installments'])); $overdueTabUrl = route("{$fund}.loans", array_merge($sharedTabQuery, ['tab' => 'overdue'])); @endphp @include('employee.fund.partials.emp_fund_styles', ['wrap' => 'adm-fund']) @include('admin.fund.partials.loan_reports_styles')

{{ $title }}

@if(!empty($subtitle))

{{ $subtitle }}

@endif
@include('admin.fund.partials.loans_list_report_buttons', [ 'exportRoute' => $exportRoute, 'printRoute' => $printRoute, 'exportLabel' => $tab === 'register' ? __('Export register') : __('Export report'), 'printLabel' => $tab === 'register' ? __('Print register') : __('Print report'), ]) @if(\App\Support\FundLoanSettings::adminCanCreateLoans($settings)) @endif
@include('admin.fund.partials.loan_portfolio_summary', ['portfolio' => $portfolio ?? [], 'tab' => $tab])
@if($tab === 'register') {{ __('Loan applications') }} @elseif($tab === 'overdue') {{ __('Overdue installments') }} @else {{ __('Installment schedule') }} @endif @if($tab === 'register' && isset($rows)) {{ $rows->total() }} @elseif(isset($installmentRows) && method_exists($installmentRows, 'total')) {{ $installmentRows->total() }} @endif
@if($hasFilters ?? false) $tab]) }}" class="btn btn-sm btn-light border">{{ __('Clear filters') }} @endif
@if($tab === 'register')
@endif
@unless(\App\Support\BranchWiseFeature::appliesToUser())
@endunless
@if($tab === 'installments')
@endif
@if(!empty($filterSummary))
{{ $filterSummary }}
@endif @if($tab === 'overdue')

{{ __('Leave year and month empty to list all overdue installments.') }}

@elseif($tab === 'installments')

{{ __('Showing due and paid installments for the selected period.') }}

@endif
@if($tab === 'register')
@forelse($rows as $row) @php $paidCount = $row->installments->where('status', 'paid')->count(); $totalInst = $row->installments->count(); @endphp @empty @endforelse
{{ __('Employee') }} {{ __('Branch') }} {{ __('Department') }} {{ __('Status') }} {{ __('Principal') }} {{ __('Period') }} {{ __('Installment') }} {{ __('Outstanding') }} {{ __('Progress') }} {{ __('Guarantors') }} {{ __('Requested') }} {{ __('Issued') }} {{ __('Action') }}
@include('admin.fund.partials.staff_cell', [ 'name' => $row->account?->staff?->user?->name, 'code' => $row->account?->staff?->user?->id, ]) {{ $row->account?->staff?->warehouse?->name ?? '—' }} {{ $row->account?->staff?->department?->name ?? '—' }} @include('admin.fund.partials.fund_status_badge', ['status' => $row->status]) {{ number_format((float) $row->principal, 2) }} {{ $row->loan_period_months ? $row->loan_period_months.' '.__('mo') : '—' }} {{ $row->monthly_installment ? number_format((float) $row->monthly_installment, 2) : '—' }} {{ number_format((float) $row->outstanding, 2) }} @if($totalInst > 0) {{ $paidCount }}/{{ $totalInst }} @else — @endif @forelse($row->guarantors ?? [] as $g) @if($g->user)
{{ $g->user->name }} ({{ $g->user->id }})
@endif @empty @endforelse
{{ $row->requested_at?->format('Y-m-d') ?? '—' }} {{ $row->issued_at?->format('Y-m-d') ?? '—' }}
id) }}" class="btn btn-sm btn-outline-secondary" target="_blank" rel="noopener">{{ __('Print') }} @if($row->status === 'pending') @if(\App\Support\FundLoanSettings::allowAdminLoanOverride($settings)) @endif
id) }}" class="d-inline"> @csrf
id) }}" class="d-inline"> @csrf
@elseif(in_array($row->status, ['active', 'approved'], true) && (float) $row->outstanding > 0) @else {{ __('No actions') }} @endif
{{ ($hasFilters ?? false) ? __('No loans match your filters.') : __('No loan records yet.') }}
@else @include('admin.fund.partials.loan_installments_table', [ 'installmentRows' => $installmentRows ?? collect(), 'scope' => $installmentScope, 'hasFilters' => $hasFilters ?? false, ]) @endif
@if($tab === 'register' && $rows->hasPages()) @endif
@foreach($rows as $row) @if($row->status === 'pending' && \App\Support\FundLoanSettings::allowAdminLoanOverride($settings))
@include('admin.fund.partials.loan_edit_form', [ 'loan' => $row, 'fund' => $fund, 'updateRoute' => route("{$fund}.loans.update", $row->id), 'guarantorStaff' => $guarantorStaff, 'minGuarantors' => \App\Support\FundLoanSettings::minGuarantors($settings), 'loanCalculationMethod' => \App\Support\FundLoanSettings::loanCalculationMethod($settings), 'loanAnnualInterestRate' => \App\Support\FundLoanSettings::loanAnnualInterestRate($settings), ])
@endif @if(in_array($row->status, ['active', 'approved'], true))
@include('admin.fund.partials.loan_repay_modal_content', [ 'loan' => $row, 'fundSettings' => $settings, 'repayRoute' => route("{$fund}.loans.repay", $row->id), ])
@endif @endforeach @if(\App\Support\FundLoanSettings::adminCanCreateLoans($settings)) @endif