@extends('layouts.master') @php $fromProses = $fromProses ?? false; $pfx = $fromProses ? 'proses-pengiriman' : 'permintaan-pengeluaran'; $sjPdfUrl = route("$pfx.surat-jalan-pdf", $ppb->id); $sjLotPdfUrl = route("$pfx.surat-jalan-lot-pdf", $ppb->id); $ttLotPdfUrl = route("$pfx.tanda-terima-lot-pdf",$ppb->id); $labelUrl = route("$pfx.cetak-label", $ppb->id); $aktivitasUrl = route("$pfx.cetak-aktivitas", $ppb->id); @endphp @section('title', ($fromProses ? 'Proses Pengiriman' : 'Permintaan Barang') . ' — ' . $ppb->nomor) @section('styles') @endsection @section('content')

{{ $ppb->nomor }}

@if($fromProses) Mutasi Barang → Proses Pengiriman → Detail @else Mutasi Barang → Permintaan Barang → Detail @endif
@if($ppb->isDraft() || $ppb->isDikembalikan()) @if(!$fromProses) @can('pengiriman_barang.edit') Edit
@csrf
@csrf @method('DELETE')
@endcan @endif @elseif($ppb->isDiajukan()) @can('proses_pengiriman.process') Proses Permintaan @endcan @elseif($ppb->isDiproses()) @can('proses_pengiriman.process') Verifikasi Barang @endcan @elseif($ppb->isSelesai() || $ppb->isSelesaiKurangLengkap()) @endif @if($fromProses) Kembali @else Kembali @endif
{{-- Alert dikembalikan/ditolak --}} @if($ppb->isDikembalikan() || $ppb->isDitolak())
{{ $ppb->isDitolak() ? 'Permintaan Ditolak' : 'Permintaan Dikembalikan' }} @if($ppb->dikembalikan_at) {{ $ppb->dikembalikan_at->format('d-m-Y H:i') }} oleh {{ $ppb->dikembalikanOleh?->nama }} @endif
{{ $ppb->catatan_pengembalian }}
@else {{-- Timeline Status --}} @php $steps = [ ['key'=>'draft', 'label'=>'Draft', 'icon'=>'bx-file-blank', 'at'=>null], ['key'=>'diajukan', 'label'=>'Diajukan', 'icon'=>'bx-send', 'at'=>$ppb->diajukan_at], ['key'=>'diproses', 'label'=>'Diproses', 'icon'=>'bx-loader-alt', 'at'=>$ppb->diproses_at], ['key'=>'verifikasi','label'=>'Verifikasi', 'icon'=>'bx-scan', 'at'=>$ppb->selesai_at], ['key'=>'selesai', 'label'=>'Selesai', 'icon'=>'bx-check', 'at'=>$ppb->selesai_at], ]; $statusOrder = ['draft'=>0,'diajukan'=>1,'diproses'=>2,'verifikasi'=>3,'selesai'=>4]; $statusToOrder = ['draft'=>0,'diajukan'=>1,'diproses'=>2,'selesai'=>4]; $curOrder = $statusToOrder[$ppb->status] ?? 0; @endphp
@foreach($steps as $s) @php $sOrder = $statusOrder[$s['key']]; $cls = $sOrder < $curOrder ? 'done' : ($sOrder === $curOrder ? 'active' : ''); @endphp
{{ $s['label'] }}
@if($s['at'])
{{ $s['at']->format('d-m-Y H:i') }}
@endif
@endforeach
@endif
{{-- Info Header --}}
Informasi Permintaan
@if($ppb->diprosesOleh) @endif @if($ppb->catatan) @endif
Nomor: {{ $ppb->nomor }}
Tanggal: {{ $ppb->tanggal->translatedFormat('d F Y') }}
Faskes / Tujuan: {{ $ppb->nama_faskes ?? '—' }}
Dibuat Oleh: {{ $ppb->dibuatOleh?->nama ?? '—' }}
Diproses Oleh: {{ $ppb->diprosesOleh->nama }}
Status : {{ ucfirst($ppb->status) }}
Catatan: {{ $ppb->catatan }}
{{-- Histori Aktivitas --}}
Histori Aktivitas
@php $statusIcon = [ 'diajukan' => ['icon'=>'bx-send', 'cls'=>'th-diajukan'], 'diproses' => ['icon'=>'bx-loader-alt', 'cls'=>'th-diproses'], 'selesai' => ['icon'=>'bx-check-circle','cls'=>'th-selesai'], 'dikembalikan'=> ['icon'=>'bx-undo', 'cls'=>'th-dikembalikan'], 'ditolak' => ['icon'=>'bx-x-circle', 'cls'=>'th-ditolak'], ]; $statusLabel = [ 'diajukan' => 'Diajukan', 'diproses' => 'Diproses', 'selesai' => 'Selesai', 'dikembalikan'=> 'Dikembalikan', 'ditolak' => 'Ditolak', ]; @endphp
{{-- Dibuat (dari created_at, selalu ada) --}}
Dibuat
{{ $ppb->dibuatOleh?->nama ?? '—' }} · {{ $ppb->created_at->translatedFormat('d M Y, H:i') }}
{{-- Log dinamis --}} @foreach($ppb->logs as $log) @php $s = $statusIcon[$log->status] ?? ['icon'=>'bx-circle','cls'=>'th-dibuat']; @endphp
{{ $statusLabel[$log->status] ?? ucfirst($log->status) }}
{{ $log->olehUser?->nama ?? '—' }} · {{ $log->created_at->translatedFormat('d M Y, H:i') }}
@if($log->catatan) @php $cCls = $log->status === 'ditolak' ? 'th-catatan-ditolak' : ($log->status === 'dikembalikan' ? 'th-catatan-dikembalikan' : ''); @endphp
{{ $log->catatan }}
@endif
@endforeach
{{-- Tabel Items --}}
Daftar Barang
@if($ppb->isSelesai() || $ppb->isSelesaiKurangLengkap() || $ppb->isDiproses()) @endif @forelse($ppb->items as $no => $item) @if($ppb->isSelesai() || $ppb->isSelesaiKurangLengkap() || $ppb->isDiproses()) @endif @empty @endforelse
No Kode / Nama Barang Merek Ukuran Qty DimintaQty DipenuhiSatuan Keterangan
{{ $no + 1 }} @php $jenisNie = $item->barang?->jenis_nie ?? $item->barang?->merekBarang?->jenis_nie; $noNie = $item->barang?->no_nie ?? $item->barang?->merekBarang?->no_nie; @endphp {{ $item->nama_barang }} @if($item->kode_barang)
{{ $item->kode_barang }}
@endif @if($item->barang->manufaktur)
{{ $item->barang->manufaktur }}
@endif @if($jenisNie || $noNie)
{{ $jenisNie }}{{ $jenisNie && $noNie ? ' · ' : '' }}{{ $noNie }}
@endif
{{ $item->barang->merekBarang->nama ?? '—' }} {{ $item->barang->ukuran ?? '—' }} {{ number_format($item->qty) }} @if($item->qty_dipenuhi !== null) @php $hasLots = $item->lots->isNotEmpty(); $qtyShow = $hasLots ? $item->lots->sum('qty') : $item->qty_dipenuhi; $lotJson = $hasLots ? htmlspecialchars(json_encode($item->lots->map(fn($l) => [ 'no_lot' => $l->stok->no_lot ?? '—', 'no_serial' => $l->stok->no_serial ?? '—', 'ed' => $l->stok->tanggal_kedaluwarsa ? $l->stok->tanggal_kedaluwarsa->format('d-m-Y') : '—', 'qty' => $l->qty, ])->values()->all()), ENT_QUOTES, 'UTF-8') : ''; $style = $qtyShow < $item->qty ? 'background:#fef9c3;color:#854d0e' : ($qtyShow == $item->qty ? 'background:#d1fae5;color:#065f46' : 'background:#dbeafe;color:#1d4ed8'); @endphp @if($hasLots) {{ number_format($qtyShow) }} @else {{ number_format($qtyShow) }} @endif @else — @endif {{ $item->satuan }} {{ $item->catatan ?? '' }}
Tidak ada item.
{{-- Foto Pengiriman --}} @if($fromProses)
Foto Pengiriman
{{ $ppb->fotos->count() }} foto
@if($ppb->fotos->isEmpty())
Belum ada foto yang diupload.
@else
@foreach($ppb->fotos as $foto)
Foto {{ $loop->iteration }} @if($foto->keterangan)
{{ $foto->keterangan }}
@endif
@endforeach
@endif
@endif {{-- Daftar Nomor SJ (hanya mode per lot) --}} @if($ppb->isPerLot() && $ppb->suratJalanLots->isNotEmpty())
Nomor Surat Jalan per Unit
{{ $ppb->suratJalanLots->count() }} dokumen
@foreach($ppb->suratJalanLots as $i => $sj) @endforeach
# Nomor SJ Nama Barang No. LOT No. Serial Tgl. ED Status
{{ $i + 1 }} {{ $sj->nomor_sj }} {{ $sj->item?->nama_barang ?? '—' }} {{ $sj->stok?->no_lot ?? '—' }} {{ $sj->stok?->no_serial ?? '—' }} {{ $sj->stok?->tanggal_kedaluwarsa?->format('d/m/Y') ?? '—' }} @if($sj->status === 'terkirim') Terkirim @elseif($sj->status === 'dipakai') Dipakai @elseif($sj->status === 'terjual') Terjual @endif
@endif
{{-- Modal Detail LOT --}} {{-- Modal Kembalikan --}} {{-- Modal Rollback Pemenuhan --}} {{-- Modal Tolak --}} {{-- Modal Riwayat Aktivitas --}} {{-- ══ Modal Preview Surat Jalan PDF ══ --}} @endsection @section('scripts') @endsection