@php $tahunBerjalan = date('Y'); $tahunUsulan = date('Y') + 1; $statusMap = [ 'menunggu_verifikasi' => [ 'label' => 'Menunggu Verifikasi', 'class' => 'bg-amber-100 text-amber-800 border-amber-200', ], 'proses_verifikasi' => [ 'label' => 'Menunggu Verifikasi', 'class' => 'bg-amber-100 text-amber-800 border-amber-200', ], 'menunggu_validasi' => [ 'label' => 'Lolos Verifikasi (Menunggu Validasi)', 'class' => 'bg-indigo-100 text-indigo-800 border-indigo-200', ], 'diverifikasi_staf' => [ 'label' => 'Lolos Verifikasi (Menunggu Validasi)', 'class' => 'bg-indigo-100 text-indigo-800 border-indigo-200', ], 'verifikasi_tertolak' => [ 'label' => 'Verifikasi Tertolak', 'class' => 'bg-rose-100 text-rose-800 border-rose-200', ], 'ditolak' => [ 'label' => 'Verifikasi Tertolak', 'class' => 'bg-rose-100 text-rose-800 border-rose-200', ], 'validasi_success' => [ 'label' => 'Validasi Disetujui', 'class' => 'bg-emerald-100 text-emerald-800 border-emerald-200', ], ]; $st = $statusMap[$usulan->status] ?? [ 'label' => str_replace('_', ' ', $usulan->status), 'class' => 'bg-slate-100 text-slate-700 border-slate-200', ]; $isPendingVerifikasi = in_array(strtolower($usulan->status ?? ''), ['menunggu_verifikasi', 'proses_verifikasi']); $bpkdSudahVerif = (bool) $usulan->is_verifikasi_bpkd; $bpadSudahVerif = (bool) $usulan->is_verifikasi_bpad; $alasanPenolakan = $usulan->catatan_penolakan ?? ($usulan->catatan_bpkd ?? ($usulan->catatan_bpad ?? null)); $penolakName = $usulan->rejectedByUser->name ?? null; $penolakRole = match ($usulan->rejected_by_role) { 'staff_bpkd' => 'Staff BPKD', 'staff_bpad' => 'Staff BPAD', 'ka_skpd' => 'Kepala SKPD', default => 'Verifikator', }; @endphp @extends('layouts.app') @section('title', 'Detail Verifikasi Usulan BPKD') @section('content')
{{-- Header & Back Button --}}

Detail Verifikasi Usulan SHS (BPKD)

Pemeriksaan komponen rekening belanja, kelayakan harga, dan penetapan verifikasi usulan.

Kembali
{{-- Main Detail Card --}}
{{-- Info Pengusul & Status --}}
Pengusul / SKPD

{{ $usulan->user->name ?? 'Staf SKPD' }}

NIP: {{ $usulan->user->nip ?? '-' }}

Tanggal Pengajuan

{{ $usulan->created_at->format('d F Y, H:i') }} WIB

Status Keseluruhan {{ $st['label'] }}
{{-- Status Verifikasi Dua Pintu (BPAD & BPKD) --}}
Status Verifikasi Dua Pintu
{{-- Status BPKD --}}

Verifikasi Staff BPKD

@if ($bpkdSudahVerif)

Oleh: {{ $usulan->verifikatorBpkd->name ?? 'Staff BPKD' }}

@else

Menunggu aksi Anda

@endif
@if ($bpkdSudahVerif) Disetujui @else Pending @endif
{{-- Status BPAD --}}

Verifikasi Staff BPAD

@if ($bpadSudahVerif)

Oleh: {{ $usulan->verifikatorBpad->name ?? 'Staff BPAD' }}

@else

Menunggu Verifikasi BPAD

@endif
@if ($bpadSudahVerif) Disetujui @else Pending @endif
{{-- Rincian Komponen Barang & Rekening --}}

Rincian Komponen Barang, Rekening & Anggaran

Kelompok Barang

{{ $usulan->nama_kelompok ?? '-' }}

Kode Rekening Belanja

{{ $usulan->kode_rekening ?? '-' }}

Kode Barang

{{ $usulan->kode_barang ?? '-' }}

Satuan & Tingkat TKDN

{{ $usulan->satuan ?? 'Unit' }} TKDN: {{ $usulan->tkdn ?? 0 }}%

Uraian Barang / Jasa

{{ $usulan->uraian_barang }}

Spesifikasi Detail

{{ $usulan->spesifikasi ?? '-' }}

{{-- Komparasi Harga --}}
Harga Penetapan {{ $tahunBerjalan }}

Rp {{ number_format($usulan->harga_2025 ?? 0, 0, ',', '.') }}

Usulan Harga Baru {{ $tahunUsulan }}

Rp {{ number_format($usulan->usulan_harga_2026 ?? 0, 0, ',', '.') }}

{{-- Audit Trail Penolakan --}} @if ($alasanPenolakan)
Catatan Penolakan:

Ditolak Oleh: {{ $penolakName ?? 'Verifikator' }} ({{ $penolakRole }})

"{{ $alasanPenolakan }}"

@endif {{-- Action Buttons & Status Banners --}}
Status Dokumen {{ $st['label'] }}
{{-- KONDISI 1: Belum diverifikasi BPKD dan status masih antrean --}} @if ($isPendingVerifikasi && !$bpkdSudahVerif)
@csrf
{{-- KONDISI 2: BPKD SUDAH verifikasi, tetapi BPAD BELUM --}} @elseif ($isPendingVerifikasi && $bpkdSudahVerif)
Persetujuan BPKD telah terkunci. Menunggu verifikasi dari Staff BPAD.
{{-- KONDISI 3: Keduanya lolos dan menuju Validasi Kepala SKPD --}} @elseif (in_array($usulan->status, ['menunggu_validasi', 'diverifikasi_staf']))
Usulan lolos verifikasi BPKD & BPAD. Sedang menunggu validasi Kepala SKPD.
{{-- KONDISI 4: Validasi Berhasil / Selesai --}} @elseif ($usulan->status === 'validasi_success')
Usulan telah divalidasi dan disahkan secara final oleh Kepala SKPD.
{{-- KONDISI 5: Tertolak --}} @else
Usulan berstatus tertolak dan dikembalikan ke pengusul.
@endif
{{-- Modal Tolak Usulan --}}

Alasan Penolakan (BPKD)

@csrf
@endsection