@php $typeBadge = match ($typeColor) { 'warning' => 'warning', 'success' => 'success', default => 'neutral', }; // Warna status di-drive enum WithdrawalStatus::color() (palet x-ui.badge). $statusBadge = $withdrawal->status->color(); // State machine view: draft → acc → cair (atau ditolak). State per langkah // dihitung dari timestamp (approved_at/disbursed_at) agar tahan urutan. $status = $withdrawal->status; $rejected = $status === \App\Enums\WithdrawalStatus::Ditolak; $accDone = $withdrawal->approved_at !== null; $cairDone = $withdrawal->disbursed_at !== null; $steps = [ [ 'label' => 'Diajukan', 'desc' => 'Pengajuan dibuat sebagai draft.', 'icon' => 'document', 'state' => 'done', 'time' => $withdrawal->created_at, 'who' => $withdrawal->recordedBy?->name, ], [ 'label' => 'Disetujui (ACC)', 'desc' => 'Mata kedua sebelum dana keluar.', 'icon' => 'check', 'state' => $accDone ? 'done' : ($status === \App\Enums\WithdrawalStatus::Draft && !$rejected ? 'current' : 'upcoming'), 'time' => $withdrawal->approved_at, 'who' => $withdrawal->approvedBy?->name, ], [ 'label' => 'Dana Cair', 'desc' => 'Saldo anggota berkurang.', 'icon' => 'banknotes', 'state' => $cairDone ? 'done' : ($status === \App\Enums\WithdrawalStatus::Acc && !$rejected ? 'current' : 'upcoming'), 'time' => $withdrawal->disbursed_at, 'who' => null, ], ]; $node = [ 'done' => ['ring' => 'bg-success text-white', 'line' => 'bg-success', 'label' => 'text-text'], 'current' => [ 'ring' => 'border-2 border-primary bg-primary/10 text-primary', 'line' => 'bg-border', 'label' => 'text-text', ], 'upcoming' => [ 'ring' => 'border-2 border-border bg-surface text-muted', 'line' => 'bg-border', 'label' => 'text-muted', ], ]; @endphp
{{ $withdrawal->member?->member_number }}
{{ $canBypassSchedule ? 'Di luar jadwal — pencairan akan dicatat sebagai pengecualian' : 'Belum waktunya dicairkan' }}
{{ $scheduleBlock['pesan'] }}
@if ($canBypassSchedule)Kamu memegang izin melewati jadwal. Bila diteruskan, pencairan ini tercatat di Log Aktivitas sebagai Pencairan di Luar Jadwal beserta alasannya.
@elsePengajuan ini tidak dapat disetujui maupun dicairkan sampai jadwalnya terbuka. Bila anggota sudah keluar atau meninggal, perbarui statusnya lebih dulu — keduanya dikecualikan dari jadwal.
@endif{{ $withdrawal->is_reversal ? 'Nominal Dikoreksi' : 'Nominal Pencairan' }}
{{ $withdrawal->is_reversal ? '+' : '−' }}Rp {{ number_format((float) ($isRefund && !$withdrawal->is_reversal ? $refundTotal : $withdrawal->amount), 0, ',', '.') }}
@if ($isRefund && !$withdrawal->is_reversal)SWP Rp {{ number_format((float) $refundSwp, 0, ',', '.') }} · Tab. Berjangka Rp {{ number_format((float) $refundTab, 0, ',', '.') }}
@endif{{ $step['label'] }}
@if ($step['state'] === 'current') Menunggu @endif{{ $step['desc'] }}
@if ($step['time']){{ $step['time']->translatedFormat('d M Y · H.i') }} WIB{{ $step['who'] ? ' · ' . $step['who'] : '' }}
@endif{{ $meta['desc'] }}
Membuat transaksi-lawan; saldo simpanan tersesuaikan. Baris asli tidak dihapus.