@if (session('status')) @endif @error('issue') @enderror @error('redeem') @enderror @error('lost') @enderror @if ($printUrl)

Voucher {{ $lastIssued['code'] ?? '' }} berhasil diterbitkan

{{ $lastIssued['santri'] ?? '' }} · Rp {{ number_format($lastIssued['nominal'] ?? 0,0,',','.') }}. QR, nominal, identitas, penerbit, dan waktu tercantum pada struk.

Cetak Ulang
@endif

Kantin afiliasi

{{ $title }}

{{ $section === 'ringkasan' ? 'Pantau kewajiban dan pilih pekerjaan voucher yang akan dilakukan.' : ($section === 'terbitkan' ? 'Terbitkan voucher fisik untuk digunakan di kantin eksternal.' : ($section === 'pencairan' ? 'Periksa QR dan selesaikan penukaran voucher eksternal.' : 'Tangani voucher hilang dan telusuri seluruh riwayat voucher.')) }}

Belum dicairkan{{ $outstandingCount }} voucher · Rp {{ number_format($outstandingValue, 0, ',', '.') }}
@if($section === 'ringkasan')

Penerbitan

Terbitkan voucher baru

Verifikasi kartu, saldo, limit harian, dan sidik jari santri.

Buka penerbitan →

Pencairan

Scan dan cairkan QR

Validasi keaslian voucher sebelum uang diserahkan kepada kantin eksternal.

Buka pencairan →

Pengelolaan

Hilang dan riwayat

Blokir voucher hilang, proses penyelesaian, dan periksa jejak transaksi.

Buka pengelolaan →
@endif @if($section === 'terbitkan')
1

Terbitkan voucher

Saldo dipotong setelah dua tahap verifikasi.

Buat voucher untuk transaksi di kantin eksternal

Kartu, nominal, saldo, limit harian, dan sidik jari diperiksa dalam satu modal agar halaman tetap ringkas.

@endif @if($section === 'pencairan')
2

Cairkan voucher

Sistem memeriksa keaslian dan riwayat QR.

Otomatis

Daftar pencairan

{{ $queuedVouchers->count() }} voucher siap dikonfirmasi

Rp {{ number_format($queuedVouchers->sum('nominal'),0,',','.') }}
@forelse($queuedVouchers as $voucher)

{{ $voucher->santri->nama }}

{{ strtoupper(substr($voucher->uuid,0,8)) }} · Rp {{ number_format($voucher->nominal,0,',','.') }}

@empty
Belum ada voucher dalam batch.
@endforelse

Seluruh batch diproses atomik: jika satu voucher gagal, tidak ada saldo yang berubah.

@endif @if($section === 'pengelolaan') @if($showLostLookup || $lostCandidates->isNotEmpty())

Voucher hilang & sengketa

Blokir segera, tunggu 7 hari, lalu ganti voucher atau kembalikan saldo.

@forelse($lostCandidates as $voucher)

{{ strtoupper(substr($voucher->uuid,0,8)) }}

{{ $voucher->statusLabel() }}

{{ $voucher->santri->nama }}

Rp {{ number_format($voucher->nominal,0,',','.') }}Terbit {{ $voucher->issued_at->format('d/m/Y H:i') }}Berlaku {{ $voucher->expires_at?->format('d/m/Y H:i') ?? '—' }}
@if($voucher->status === 'dilaporkan_hilang')

Diblokir {{ $voucher->lost_reported_at?->format('d/m/Y H:i') }} · penyelesaian {{ $voucher->resolution_available_at?->format('d/m/Y H:i') }}

@endif
@if($voucher->status === 'diterbitkan') @elseif($voucher->resolution_available_at?->isPast()) Buat Pengganti Refund Saldo @else Masa tunggu berjalan @endif
@empty @endforelse
@endif

Riwayat voucher

Jejak penerbitan, pencairan, kehilangan, penggantian, dan refund tersimpan permanen.

@forelse($vouchers as $voucher)

{{ strtoupper(substr($voucher->uuid, 0, 8)) }}

{{ $voucher->santri->nama }}

{{ $voucher->issued_at->format('d/m/Y H:i') }}

Rp {{ number_format($voucher->nominal, 0, ',', '.') }}

{{ $voucher->statusLabel() }}
@if($voucher->redeemed_at)
Dicairkan {{ $voucher->redeemed_at->format('d/m/Y H:i') }}{{ $voucher->merchant_name ? ' oleh '.$voucher->merchant_name : '' }}
@endif
@empty@endforelse
{{ $vouchers->links('vendor.pagination.table-footer') }}
@endif @if($section === 'terbitkan')
@if(!$santri)
@else

{{ $santri->nama }}

NIS {{ $santri->nis }}

Saldo

Rp {{ number_format($santri->saldo?->saldo ?? 0,0,',','.') }}

Saldo minimum

Rp {{ number_format($voucherSaldoMinimum,0,',','.') }}

Terpakai hari ini

Rp {{ number_format($voucherLimitInfo['terpakai'] ?? 0,0,',','.') }}

Sisa limit

{{ ($voucherLimitInfo['limit'] ?? null) === null ? 'Tanpa batas' : 'Rp '.number_format($voucherLimitInfo['sisa'],0,',','.') }}

Rp
@if($voucherBlockingReason)
Voucher tidak dapat diterbitkan{{ $voucherBlockingReason }}
@endif
@endif
@endif @if($section === 'pengelolaan' && $lostVoucher)
Setelah dikonfirmasi, voucher {{ strtoupper(substr($lostVoucher->uuid,0,8)) }} tidak dapat dicairkan. Penggantian atau refund baru tersedia setelah 7 hari.

Santri

{{ $lostVoucher->santri->nama }}

NIS {{ $lostVoucher->santri->nis }}

Nominal

Rp {{ number_format($lostVoucher->nominal,0,',','.') }}

Terbit {{ $lostVoucher->issued_at->format('d/m/Y H:i') }}

@endif