@extends('layouts.app') @section('title', 'HRD & Payroll') @section('breadcrumb') HRD Payroll @endsection @section('content')

HRD & Payroll

Kelola data karyawan, absensi, dan penggajian

{{-- Summary Stats --}}
@php $hrdStats = [ ['label'=>'Total Karyawan', 'val'=>$stats['total'] ?? 48, 'icon'=>'bi-people-fill', 'color'=>'#1B4FD8','bg'=>'#EEF3FF'], ['label'=>'Karyawan Tetap', 'val'=>$stats['tetap'] ?? 35, 'icon'=>'bi-person-badge-fill','color'=>'#059669','bg'=>'#D1FAE5'], ['label'=>'Kontrak', 'val'=>$stats['kontrak'] ?? 10, 'icon'=>'bi-person-lines-fill','color'=>'#D97706','bg'=>'#FEF3C7'], ['label'=>'Total Gaji/Bln', 'val'=>'Rp '.number_format($stats['total_gaji'] ?? 285000000, 0, ',', '.'), 'icon'=>'bi-cash-stack','color'=>'#7C3AED','bg'=>'#EDE9FE'], ]; @endphp @foreach($hrdStats as $s)
{{ $s['label'] }}
{{ $s['val'] }}
@endforeach
{{-- Tab Navigation --}}
{{-- ===== PAYROLL TAB ===== --}}
Slip Gaji — {{ now()->isoFormat('MMMM YYYY') }}
{{ $payrollStatus === 'done' ? 'Sudah Diproses' : 'Belum Diproses' }}
@foreach($payrollData as $p) @php $totalPendapatan = $p->gaji_pokok + $p->tunjangan + ($p->lembur ?? 0) + ($p->bonus ?? 0); $totalPotongan = ($p->potongan ?? 0) + ($p->bpjs_tk ?? 0) + ($p->bpjs_ks ?? 0) + ($p->pph21 ?? 0); $gajiBersih = $totalPendapatan - $totalPotongan; @endphp @endforeach
Karyawan Jabatan Gaji Pokok Tunjangan Lembur Bonus Potongan BPJS TK BPJS KS PPh 21 Gaji Bersih Aksi
{{ strtoupper(substr($p->employee->name ?? 'U', 0, 2)) }}
{{ $p->employee->name ?? '-' }}
{{ $p->employee->nip ?? '-' }}
{{ $p->employee->jabatan ?? '-' }} {{ number_format($p->gaji_pokok, 0, ',', '.') }} {{ number_format($p->tunjangan, 0, ',', '.') }} {{ number_format($p->lembur ?? 0, 0, ',', '.') }} {{ number_format($p->bonus ?? 0, 0, ',', '.') }} {{ number_format($p->potongan ?? 0, 0, ',', '.') }} {{ number_format($p->bpjs_tk ?? 0, 0, ',', '.') }} {{ number_format($p->bpjs_ks ?? 0, 0, ',', '.') }} {{ number_format($p->pph21 ?? 0, 0, ',', '.') }} Rp {{ number_format($gajiBersih, 0, ',', '.') }}
TOTAL {{ number_format($totals['gaji_pokok'] ?? 0, 0, ',', '.') }} {{ number_format($totals['tunjangan'] ?? 0, 0, ',', '.') }} {{ number_format($totals['lembur'] ?? 0, 0, ',', '.') }} {{ number_format($totals['bonus'] ?? 0, 0, ',', '.') }} {{ number_format($totals['potongan'] ?? 0, 0, ',', '.') }} {{ number_format($totals['bpjs_tk'] ?? 0, 0, ',', '.') }} {{ number_format($totals['bpjs_ks'] ?? 0, 0, ',', '.') }} {{ number_format($totals['pph21'] ?? 0, 0, ',', '.') }} Rp {{ number_format($totals['bersih'] ?? 0, 0, ',', '.') }}
{{-- ===== KARYAWAN TAB ===== --}}
@foreach($employees as $emp)
{{ strtoupper(substr($emp->name, 0, 2)) }}
{{ $emp->name }}
{{ $emp->jabatan }} • {{ $emp->departemen }}
{{ $emp->nip }}
{{ ucfirst($emp->status) }}
Tgl Masuk
{{ $emp->tgl_masuk?->format('d/m/Y') }}
Status
{{ ucfirst($emp->tipe_karyawan) }}
Gaji Pokok
Rp {{ number_format($emp->gaji_pokok, 0, ',', '.') }}
@endforeach
{{-- ===== ABSENSI TAB ===== --}}
Rekap Absensi
@foreach($absensiRekap as $absensi) @php $pct = $absensi->hari_kerja > 0 ? round($absensi->hadir / $absensi->hari_kerja * 100) : 0; $color = $pct >= 90 ? '#059669' : ($pct >= 75 ? '#D97706' : '#DC2626'); @endphp @endforeach
Karyawan Departemen Hari Kerja Hadir Sakit Izin Alpha Lembur (Jam) Kehadiran
{{ $absensi->employee->name ?? '-' }}
{{ $absensi->employee->jabatan ?? '-' }}
{{ $absensi->employee->departemen ?? '-' }} {{ $absensi->hari_kerja }} {{ $absensi->hadir }} {{ $absensi->sakit }} {{ $absensi->izin }} {{ $absensi->alpha }} {{ $absensi->lembur_jam }}
{{ $pct }}%
@endsection @push('scripts') @endpush