@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('content') @push('js') @endpush @php use Carbon\Carbon; $kategoriCollection = collect($kategoriPerizinan ?? []); $jenisCollection = collect($jenisIzin ?? []); $defaultBiayaCollection = collect($defaultBiaya ?? []); $karyawanCollection = collect($karyawanPemohon ?? []); $rincianTujuanCollection = collect($rincianTujuan ?? []); $anggaranCollection = collect($anggaranDataForJs ?? []); $tanggalRaw = $tanggalArray ?? []; if (is_string($tanggalRaw)) { $decodedTanggal = json_decode($tanggalRaw, true); $tanggalCollection = collect(is_array($decodedTanggal) ? $decodedTanggal : []); } elseif (is_array($tanggalRaw)) { $tanggalCollection = collect($tanggalRaw); } else { $tanggalCollection = collect(); } $kategoriItem = $kategoriCollection->firstWhere('id', data_get($permohonanPerizinan, 'kategori_perizinan_id')); $jenisItem = $jenisCollection->firstWhere('id', data_get($permohonanPerizinan, 'jenis_izin_id')); $kategoriName = data_get($kategoriItem, 'nama', '-'); $jenisName = data_get($jenisItem, 'nama', '-'); $jamKeluar = data_get($permohonanPerizinan, 'jam_keluar') ? Carbon::parse(data_get($permohonanPerizinan, 'jam_keluar'))->format('d-m-Y H:i') : '-'; $jamMasuk = data_get($permohonanPerizinan, 'jam_masuk') ? Carbon::parse(data_get($permohonanPerizinan, 'jam_masuk'))->format('d-m-Y H:i') : '-'; $submittedAt = data_get($permohonanPerizinan, 'created_at'); $submittedAtFormatted = $submittedAt ? Carbon::parse($submittedAt)->format('d-m-Y H:i') : '-'; $updatedAt = data_get($permohonanPerizinan, 'updated_at'); $updatedAtFormatted = $updatedAt ? Carbon::parse($updatedAt)->format('d-m-Y H:i') : '-'; $totalHari = data_get($permohonanPerizinan, 'total_hari'); if (!$totalHari) { $totalHari = $tanggalCollection->count(); } $defaultBiayaMap = $defaultBiayaCollection->keyBy('id'); $notaByEmployee = collect($notaReimburse ?? []) ->map(function ($rows) { $rowCollection = collect($rows); return $rowCollection ->groupBy(function ($item) { return data_get($item, 'tanggal_pengeluaran'); }) ->filter(function ($items, $date) { return filled($date); }) ->sortKeysDesc() ->map(function ($items) { return collect($items)->sortBy('id'); }); }) ->filter(function ($group) { return $group instanceof \Illuminate\Support\Collection && $group->isNotEmpty(); }); $isKategoriIzin = (string) data_get($permohonanPerizinan, 'kategori_perizinan_id') === '1'; $isKategoriTugas = (string) data_get($permohonanPerizinan, 'kategori_perizinan_id') === '2'; @endphp @include('layouts.navbars.auth.topnav', ['title' => 'Detail Pengajuan Permohonan'])
Detail Pengaju
{{-- Menampilkan NIK dan Nama pengaju --}}
Ringkasan Pengajuan
ID Permohonan {{ data_get($permohonanPerizinan, 'id', '-') }}
ID Reimburse {{ $permohonanReimburseId ?? '-' }}
Kategori Permohonan {{ $kategoriName }}
@if ($isKategoriIzin)
Jenis Izin {{ $jenisName }}
@endif @if ($isKategoriTugas)
Tipe Tugas {{ data_get($permohonanPerizinan, 'tipe_tugas', '-') }}
Tujuan Tugas {{ data_get($permohonanPerizinan, 'tujuan_tugas', '-') }}
@endif
Jam Keluar / Berangkat {{ $jamKeluar }}
Jam Masuk / Kepulangan {{ $jamMasuk }}
Total Hari {{ $totalHari ?: '-' }}
Status Post {{ $isPosted ?? false ? 'Sudah Post' : 'Belum Post' }}
Tanggal Pengajuan {{ $submittedAtFormatted }}
Terakhir Diperbarui {{ $updatedAtFormatted }}
Alasan / Deskripsi

{{ data_get($permohonanPerizinan, 'alasan') ?: '-' }}

Daftar Karyawan Terlibat
@forelse ($karyawanCollection as $employee) @empty @endforelse
NIK Nama Departemen Jabatan
{{ data_get($employee, 'nik', '-') }} {{ data_get($employee, 'nama', '-') }} {{ data_get($employee, 'departemen', '-') }} {{ data_get($employee, 'jabatan', '-') }}
Tidak ada data karyawan.
@if ($tanggalCollection->isNotEmpty())
Daftar Tanggal Pengajuan
@foreach ($tanggalCollection as $index => $tanggal) @php try { $tanggalCarbon = Carbon::createFromFormat('d-m-Y', $tanggal); } catch (\Throwable $e) { $tanggalCarbon = null; } @endphp @endforeach
No Hari Tanggal
{{ $index + 1 }} {{ $tanggalCarbon ? $tanggalCarbon->locale('id')->translatedFormat('l') : '-' }} {{ $tanggalCarbon ? $tanggalCarbon->format('d-m-Y') : $tanggal }}
@endif
Rincian Tujuan Perjalanan
@if ($rincianTujuanCollection->isEmpty())

Tidak ada rincian tujuan yang tercatat.

@else
@foreach ($rincianTujuanCollection as $tujuan) @php $mulai = data_get($tujuan, 'tanggal_mulai'); $akhir = data_get($tujuan, 'tanggal_berakhir'); try { $mulaiFormatted = $mulai ? Carbon::parse($mulai)->format('d-m-Y') : null; } catch (\Throwable $e) { $mulaiFormatted = $mulai; } try { $akhirFormatted = $akhir ? Carbon::parse($akhir)->format('d-m-Y') : null; } catch (\Throwable $e) { $akhirFormatted = $akhir; } $periode = $mulaiFormatted && $akhirFormatted ? ($mulaiFormatted === $akhirFormatted ? $mulaiFormatted : $mulaiFormatted . ' s/d ' . $akhirFormatted) : ($mulaiFormatted ?: ($akhirFormatted ?: '-')); $karyawanTujuan = collect(data_get($tujuan, 'karyawan', [])); @endphp @endforeach
Tujuan Status Periode Jumlah Hari Karyawan Mengikuti Keterangan
{{ data_get($tujuan, 'tujuan', '-') }} {{ strtoupper(data_get($tujuan, 'status', '-')) }} {{ $periode }} {{ data_get($tujuan, 'jumlah_hari', '-') }} @if ($karyawanTujuan->isEmpty()) - @else
@foreach ($karyawanTujuan as $emp) {{ data_get($emp, 'nama', data_get($emp, 'nik')) }} @endforeach
@endif
{{ data_get($tujuan, 'keterangan', '-') }}
@endif
Rincian Anggaran
@php $anggaranEmployees = $anggaranCollection->keys(); $globalAnggaranTotals = []; @endphp
@foreach ($karyawanCollection as $employee) @php $nik = data_get($employee, 'nik'); $employeeInfo = $employee; $anggaranData = $anggaranCollection->get($nik, []); $defaultEntries = collect(data_get($anggaranData, 'default', [])); $lainEntries = collect(data_get($anggaranData, 'lain', [])); $hasAnggaran = $defaultEntries->isNotEmpty() || $lainEntries->isNotEmpty(); @endphp
{{ data_get($employeeInfo, 'nama', $nik) }} ({{ $nik }})
@if (!$hasAnggaran)

Tidak ada anggaran untuk karyawan ini.

@else
@foreach ($defaultEntries as $biayaId => $entries) @foreach (collect($entries) as $entry) @php $jumlah = data_get($entry, 'jumlah'); $formattedJumlah = $jumlah !== null && $jumlah !== '' ? number_format( (float) $jumlah, 2, ',', '.', ) : '-'; $currency = data_get($entry, 'currency', 'IDR'); $biayaInfo = $defaultBiayaMap->get($biayaId); @endphp @endforeach @endforeach @foreach ($lainEntries as $entry) @php $jumlah = data_get($entry, 'jumlah'); $formattedJumlah = $jumlah !== null && $jumlah !== '' ? number_format( (float) $jumlah, 2, ',', '.', ) : '-'; $currency = data_get($entry, 'currency', 'IDR'); @endphp @endforeach
Deskripsi Kategori Jumlah Mata Uang
{{ data_get($biayaInfo, 'nama_biaya', 'Biaya Default') }} Default {{ $formattedJumlah }} {{ $currency }}
{{ data_get($entry, 'deskripsi', 'Biaya Lain') }} Lainnya {{ $formattedJumlah }} {{ $currency }}
{{-- Totals per employee (Anggaran) --}} @php $anggaranTotals = []; foreach ($defaultEntries as $biayaId => $entries) { foreach (collect($entries) as $entry) { $amount = (float) data_get($entry, 'jumlah', 0); $currency = data_get($entry, 'currency', 'IDR'); $anggaranTotals[$currency] = ($anggaranTotals[$currency] ?? 0) + $amount; $globalAnggaranTotals[$currency] = ($globalAnggaranTotals[$currency] ?? 0) + $amount; } } foreach ($lainEntries as $entry) { $amount = (float) data_get($entry, 'jumlah', 0); $currency = data_get($entry, 'currency', 'IDR'); $anggaranTotals[$currency] = ($anggaranTotals[$currency] ?? 0) + $amount; $globalAnggaranTotals[$currency] = ($globalAnggaranTotals[$currency] ?? 0) + $amount; } @endphp @if (!empty($anggaranTotals))
Total Anggaran {{ data_get($employeeInfo, 'nama', $nik) }}
@foreach ($anggaranTotals as $currency => $amt)
{{ $currency }}: {{ number_format($amt,2,',','.') }}
@endforeach
@endif @endif
@endforeach
@if (!empty($globalAnggaranTotals))
Total Anggaran Keseluruhan
@foreach ($globalAnggaranTotals as $currency => $amt)
{{ $currency }}: {{ number_format($amt,2,',','.') }}
@endforeach
@endif
Nota Reimburse
@php $globalNotaTotals = []; @endphp @if ($notaByEmployee->isEmpty())

Belum ada nota reimbursement yang tercatat.

@else
@foreach ($karyawanCollection as $karyawan) @php $nik = $karyawan->nik; $nama = $karyawan->nama; $notaTanggalGroup = $notaByEmployee->get($nik, collect()); @endphp
{{ $nama }} ({{ $nik }})
@php $notaTotalCount = $notaTanggalGroup ? $notaTanggalGroup->flatten()->count() : 0; @endphp {{ $notaTotalCount }} Nota
@if ($notaTanggalGroup->isEmpty())

Tidak ada nota reimbursement untuk karyawan ini.

@else {{-- Jika ada nota, tampilkan list tanggal + tabel seperti biasa --}} @foreach ($notaTanggalGroup as $tanggal => $items) @php try { $displayDate = Carbon::parse($tanggal)->format('d-m-Y'); } catch (\Throwable $e) { $displayDate = $tanggal; } @endphp
Tanggal: {{ $displayDate }}
@foreach ($items as $item) @php $jumlah = data_get($item, 'jumlah'); $formattedJumlah = $jumlah !== null && $jumlah !== '' ? number_format((float) $jumlah, 2, ',', '.') : '-'; @endphp @endforeach
Jenis Biaya Detail Jumlah Mata Uang Credit Private Catatan
{{ data_get($item, 'deskripsi', '-') }} {{ data_get($item, 'details', '-') }} {{ $formattedJumlah }} {{ data_get($item, 'mata_uang', 'IDR') }} {{ data_get($item, 'is_credit_use') ? 'Ya' : 'Tidak' }} {{ data_get($item, 'is_private_use') ? 'Ya' : 'Tidak' }} {{ data_get($item, 'keterangan', '-') }}
@endforeach {{-- Totals per employee (Nota Reimburse) --}} @php $notaTotals = []; foreach ($notaTanggalGroup as $tanggal => $items) { foreach (collect($items) as $item) { $amount = (float) data_get($item, 'jumlah', 0); $currency = data_get($item, 'mata_uang', 'IDR'); $notaTotals[$currency] = ($notaTotals[$currency] ?? 0) + $amount; $globalNotaTotals[$currency] = ($globalNotaTotals[$currency] ?? 0) + $amount; } } @endphp @if (!empty($notaTotals))
Total Reimburse {{ $nama }}
@foreach ($notaTotals as $currency => $amt)
{{ $currency }}: {{ number_format($amt,2,',','.') }}
@endforeach
@endif @endif
@endforeach
{{-- Global totals Nota Reimburse --}} @if (!empty($globalNotaTotals))
Total Reimburse Keseluruhan
@foreach ($globalNotaTotals as $currency => $amt)
{{ $currency }}: {{ number_format($amt,2,',','.') }}
@endforeach
@endif @endif
Exchange Transactions
@php $exchangeByEmployee = collect($exchangeTransactions ?? []); $globalExchangeTotals = ['awal' => [], 'exchanged' => []]; @endphp
@foreach ($karyawanCollection as $employee) @php $nik = data_get($employee, 'nik'); $employeeInfo = $employee; $exchanges = collect($exchangeByEmployee->get($nik, collect())); @endphp
{{ data_get($employeeInfo, 'nama', $nik) }} ({{ $nik }})
{{ $exchanges->count() }} Transaksi
@if ($exchanges->isEmpty())

Tidak ada transaksi exchange untuk karyawan ini.

@else
@foreach ($exchanges as $exchange) @php $jumlahAwal = data_get($exchange, 'jumlah_awal'); $formattedJumlahAwal = $jumlahAwal !== null && $jumlahAwal !== '' ? number_format((float) $jumlahAwal, 2, ',', '.') : '-'; $currencyAwal = data_get($exchange, 'currency_awal', 'IDR'); $jumlahExchanged = data_get($exchange, 'jumlah_exchanged'); $formattedJumlahExchanged = $jumlahExchanged !== null && $jumlahExchanged !== '' ? number_format((float) $jumlahExchanged, 2, ',', '.') : '-'; $currencyExchanged = data_get($exchange, 'currency_exchanged', 'USD'); $exchangeDate = data_get($exchange, 'exchange_date'); try { $displayExchangeDate = $exchangeDate ? Carbon::parse($exchangeDate)->format('d-m-Y') : '-'; } catch (\Throwable $e) { $displayExchangeDate = $exchangeDate ?: '-'; } @endphp @endforeach
Details/Keterangan Jumlah Awal Mata Uang Awal Jumlah Exchanged Mata Uang Exchanged Tanggal Exchange
{{ data_get($exchange, 'details', '-') }} {{ $formattedJumlahAwal }} {{ $currencyAwal }} {{ $formattedJumlahExchanged }} {{ $currencyExchanged }} {{ $displayExchangeDate }}
{{-- Totals per employee (Exchange) --}} @php $exchangeTotalsAwal = []; $exchangeTotalsExchanged = []; foreach ($exchanges as $exchange) { $amtAwal = (float) data_get($exchange, 'jumlah_awal', 0); $curAwal = data_get($exchange, 'currency_awal', 'IDR'); $exchangeTotalsAwal[$curAwal] = ($exchangeTotalsAwal[$curAwal] ?? 0) + $amtAwal; $globalExchangeTotals['awal'][$curAwal] = ($globalExchangeTotals['awal'][$curAwal] ?? 0) + $amtAwal; $amtEx = (float) data_get($exchange, 'jumlah_exchanged', 0); $curEx = data_get($exchange, 'currency_exchanged', 'USD'); $exchangeTotalsExchanged[$curEx] = ($exchangeTotalsExchanged[$curEx] ?? 0) + $amtEx; $globalExchangeTotals['exchanged'][$curEx] = ($globalExchangeTotals['exchanged'][$curEx] ?? 0) + $amtEx; } @endphp @if (!empty($exchangeTotalsAwal) || !empty($exchangeTotalsExchanged))
Total Exchange {{ data_get($employeeInfo, 'nama', $nik) }}
Jumlah Awal
@if(!empty($exchangeTotalsAwal)) @foreach ($exchangeTotalsAwal as $currency => $amt)
{{ $currency }}: {{ number_format($amt,2,',','.') }}
@endforeach @else
-
@endif
Jumlah Exchanged
@if(!empty($exchangeTotalsExchanged)) @foreach ($exchangeTotalsExchanged as $currency => $amt)
{{ $currency }}: {{ number_format($amt,2,',','.') }}
@endforeach @else
-
@endif
@endif @endif
@endforeach {{-- Global totals Exchange (inside card) --}} @if (!empty($globalExchangeTotals['awal']) || !empty($globalExchangeTotals['exchanged']))
Total Exchange Keseluruhan
Jumlah Awal
@foreach ($globalExchangeTotals['awal'] as $currency => $amt)
{{ $currency }}: {{ number_format($amt,2,',','.') }}
@endforeach
Jumlah Exchanged
@foreach ($globalExchangeTotals['exchanged'] as $currency => $amt)
{{ $currency }}: {{ number_format($amt,2,',','.') }}
@endforeach
@endif
Kembali @if ($authorize->approval == '1') {{-- Approval and Rejection Buttons --}} @php $status = $permohonanReimburseStatus; @endphp @if ($status != 'menyetujui' && $status != 'menolak') @endif @endif
{{-- JavaScript untuk fitur memberi keputusan --}} @endsection