@php $typeColor = $loan->loan_type === 'jangka_panjang' ? 'primary' : 'warning'; @endphp
{{-- Back --}} Kembali ke daftar {{-- Header --}}
{{ $loan->loan_number }} {{ $loanTypeLabel }} {{ $loan->status->label() }} @if ($progress['overdue'] > 0) {{ $progress['overdue'] }} tunggakan @endif

{{ $loan->member?->full_name ?? '—' }}

{{ $loan->member?->member_number }}

@if ($loan->status === \App\Enums\LoanStatus::Cair) @can('create_installment') Bayar Angsuran @endcan @endif Tanda Terima @if ($this->canCorrect($loan)) Batalkan @endif
{{-- Info pinjaman --}} {{-- Dana diterima highlight --}}

Dana Diterima

Rp {{ number_format((float) $loan->disbursed_amount, 0, ',', '.') }}

Jumlah Diajukan

Rp {{ number_format((float) $loan->principal_amount, 0, ',', '.') }}

Sisa Pokok

Rp {{ number_format((float) $progress['remaining'], 0, ',', '.') }}

Tgl Pencairan
{{ $loan->disbursement_date?->translatedFormat('d M Y') }}
Jatuh Tempo Pertama
{{ $loan->first_due_date?->translatedFormat('d M Y') ?? '—' }}
Jenis Pencairan
{{ \App\Filament\Resources\LoanResource::DISBURSEMENT_METHODS[$loan->disbursement_method] ?? '—' }}
@if ($loan->disbursement_method === 'transfer')
Bank Tujuan
{{ $loan->disbursement_bank ?? '—' }}
No. Rekening Tujuan
{{ $loan->disbursement_account_number ?? '—' }}
@endif
Jangka Waktu
{{ $loan->term_months }} bulan
OPD / Instansi
{{ $loan->member?->agency?->agency_name ?? '—' }}
Biaya Admin
Rp {{ number_format((float) $loan->admin_fee, 0, ',', '.') }}
SWP
Rp {{ number_format((float) $loan->swp_amount, 0, ',', '.') }}
Dicatat Oleh
{{ $loan->recordedBy?->name ?? '—' }}
Dicatat Pada
{{ $loan->created_at?->translatedFormat('d M Y · H.i') }} WIB
{{-- Angsuran konstan / bulan --}}
Tagihan Angsuran / Bulan
Pokok Rp {{ number_format((float) $loan->monthly_principal, 0, ',', '.') }} Jasa Rp {{ number_format((float) $loan->monthly_interest, 0, ',', '.') }} Tab. Berjangka Rp {{ number_format((float) $loan->monthly_time_deposit, 0, ',', '.') }}
@if ($loan->notes)
Catatan
{{ $loan->notes }}
@endif
{{-- Dokumen --}} @if ($documents->isNotEmpty())

Dokumen

@foreach ($documents as $doc) {{ $doc->name }} @endforeach
@endif
{{-- Progres angsuran --}}

Progres Angsuran

{{-- Progress bar --}}
{{ $progress['percent'] }}% terbayar {{ $progress['paid'] }}/{{ $progress['total'] }} lunas @if ($progress['overdue'] > 0) · {{ $progress['overdue'] }} nunggak @endif

Sisa pokok Rp {{ number_format((float) $progress['remaining'], 0, ',', '.') }}

@php($canViewInstallment = auth()->user()?->can('view_installment') ?? false) @forelse ($schedules as $schedule) @php($label = $this->scheduleStatusLabel($schedule)) @php($payment = $schedule->status === \App\Enums\InstallmentScheduleStatus::Terbayar ? $this->actualPayment($schedule) : null) @php($clickable = $payment && $canViewInstallment) $clickable]) @if ($clickable) @click="window.Livewire.navigate('{{ route('installments.show', $payment) }}')" title="Lihat detail pembayaran {{ $payment->installment_number }}" @endif> @empty @endforelse
# Jatuh Tempo Tagihan Dibayar Status Tgl Bayar
{{ $schedule->installment_seq }} {{ $schedule->due_date?->translatedFormat('d M Y') }} Rp {{ number_format((float) $schedule->total_due, 0, ',', '.') }} {{ $payment ? 'Rp ' . number_format((float) $payment->amount_paid, 0, ',', '.') : '—' }} {{ $label }} {{ $payment?->payment_date?->translatedFormat('d M Y') ?? '—' }} @if ($clickable) @endif

Belum ada angsuran terbayar

Klik Tampilkan rancangan angsuran untuk melihat jadwal lengkap.

@if ($schedules->hasPages())
{{ $schedules->links() }}
@endif @if (!$showAllSchedules && $progress['total'] > $progress['paid']) @endif
{{-- Kolom kanan. Pembungkus ini WAJIB: tanpanya panel-panel di bawah jadi anak langsung `lg:grid-cols-3`, dan setelah kolom kiri memakan 2 kolom di baris pertama, panel kedua dan seterusnya jatuh ke BARIS BERIKUTNYA kolom pertama — bukan menumpuk di kanan. Itu yang membuat Audit Trail terdampar di bawah kiri sementara kolom kanan menyisakan ruang kosong. --}}
{{-- Riwayat Titipan Pokok (ADR 2026-08-28 item 2e). Kanal utama pengurus untuk menjawab: kapan titipan masuk, kapan dipotong dan berapa, kapan habis. Disembunyikan bila pinjaman ini memang tak pernah bertitipan. --}} @if (count($creditHistory) > 0 || bccomp($creditBalance, '0', 2) !== 0)

Riwayat Titipan Pokok

Saldo
Rp {{ number_format((float) $creditBalance, 0, ',', '.') }}

Titipan Pokok memotong pokok angsuran berikutnya. Jasa dan Tabungan Berjangka tetap tertagih, jumlah angsuran tidak berubah.

{{-- Tanggal ditumpuk di bawah nomor transaksi, bukan jadi kolom sendiri: di kolom kanan yang lebarnya sepertiga layar, lima kolom membuat SALDO terdorong keluar dan harus di-scroll — padahal justru kolom itu yang menjawab "kapan titipan habis". --}}
@forelse ($creditHistory as $row) {{-- Nowrap HANYA pada nomor dan tanggal. Bila dipasang di @empty @endforelse
Transaksi Masuk Dipakai Saldo
, catatan penutup ("Dilimpahkan ke Simpanan Sukarela saat pinjaman ditutup") ikut tak boleh patah, kolom ini melar sepanjang kalimat itu, dan SALDO terdorong keluar lagi — persis masalah yang hendak diperbaiki. --}} {{ $row['number'] }} @if ($row['reversal']) pembatalan @endif
{{ $row['date'] ?? '—' }}
@if ($row['note'])
{{ $row['note'] }}
@endif
{{ bccomp($row['in'], '0', 2) > 0 ? number_format((float) $row['in'], 0, ',', '.') : '—' }} {{ bccomp($row['used'], '0', 2) > 0 ? number_format((float) $row['used'], 0, ',', '.') : '—' }} {{ number_format((float) $row['balance'], 0, ',', '.') }}
Belum ada pergerakan Titipan Pokok.
@endif {{-- Audit Trail --}}

Audit Trail

Klik untuk detail
@include('livewire.master.partials.audit-trail')
{{-- Modal: Koreksi --}}