# 💵 Payroll

Fitur ini digunakan untuk **mengelola data Payroll Karyawan** dari awal hingga akhir.
Menu terdiri dari:

* Payroll
* Fee Employee
* Reimbursement
* Loan

---

## 👥 Submenu Payroll

### 📋 List Data Payroll

* Menampilkan data payroll masing-masing karyawan.
* User biasa hanya dapat melihat data payroll sendiri.
* User dengan **hak akses khusus** dapat melihat semua data payroll.

### ✏️ Edit & Delete Payroll

* Edit dan delete hanya dapat dilakukan bila status payroll **Pending**.
* Hanya dapat diakses oleh user dengan role khusus.

### 👁️ Detail & File Payroll

* Klik kode payroll untuk melihat rincian lengkap dari payroll.
* Klik icon **File** untuk mengunduh atau melihat slip gaji.

### ✅ Approval Payroll

* Alur persetujuan:

  ```
  HRD ➔ Finance ➔ Direktur
  ```
* Setelah semua pihak menyetujui, status berubah menjadi `Approved` dan dapat diakses oleh karyawan terkait.

---

### ➕ Tambah Payroll

Saat membuat data payroll:

* **Data diambil dari Employee Info**:

  * `Gaji Pokok`
  * `Gaji BPJS Kesehatan`
  * `Tunjangan` (berdasarkan job position)
  * `Tunjangan Transport` (berdasarkan job position)
  * `Tanggungan` (dari data karyawan)

---

#### 💰 Perhitungan Payroll

##### ⏳ Perhitungan Absensi

* **Jumlah Masuk** = Jumlah absensi masuk dari data Attendance.
* **Jumlah Cuti** = Jumlah request cuti yang disetujui.
* **Jumlah Izin** = Jumlah request izin yang disetujui.
* **Jumlah Sakit** = Jumlah request sakit yang disetujui.
* **Jumlah Alfa** = Jumlah absensi tidak masuk/ tidak absen.
* **Jumlah Terlambat** = Jumlah absensi terlambat (Clock-In > 08:15).
* **Potongan Alfa** = Jumlah Alfa × (Gaji Pokok + Tunjangan Jabatan / 26)
* **Potongan Terlambat** = Gaji Pokok × Persentase Total Terlambat

---

##### 🩺 BPJS Tenaga Kerja & Kesehatan

Data diambil dari menu **Company ➔ BPJS**:
    * JHT Perusahaan = Persentase JHT yang ditanggung oleh Perusahaan
    * JHT Karyawan =  Persentase JHT yang ditanggung oleh Karyawan
    * JKM = Persentase Jaminan Kematian
    * JKK = Persentase Jaminan Keselamatan Kerja
    * Pensiun Perusahaan = Persentase Pensiun yang ditanggung oleh Perusahaan
    * Pensiun Karyawan = Persentase Pensiun yang ditanggung oleh Karyawan

    * BPJS Kesehatan Perusahaan = Persentase BPJS Kesehatan yang ditanggung oleh Perusahaan
    * Minimal Iuran Pensiun = Nominal gaji yang digunakan sebagai batas minimal iuran pensiun
---

##### 📥 Perhitungan Penerimaan 

* **BPJS TK**:
    **Gaji BPJS Tenagakerja** = Data dari Emplyee Payroll Info
    **BPJS TK** = Tunjangan JHT Perusahaan + Tunjangan Jaminan Kematian + Tunjangan Jaminan Keselamatan Kerja.

    * JHT Perusahaan = Gaji BPJS Tenagakerja × Persentase JHT Perusahaan BPJS TK / 100.
    * Jaminan Kematian = Gaji BPJS Tenagakerja × Persentase JKM BPJS TK / 100.
    * Jaminan Keselamatan Kerja = Gaji BPJS Tenagakerja × Persentase JKK / 100.

* **BPJS Kesehatan**:

  * Gaji BPJS Kesehatan × Persentase BBPJS Kesehatan Perusahaan / 100.
* **BPJS Pensiun**:

  * Jika `Gaji BPJS Tenagakerja >= Batas Minimal Iuran Pensiun`:

    ```
    Penerimaan BPJS Pensiun = Batas Minimal Iuran Pensiun × Persentase Pensiun Perusahaan / 100
    Potongan BPJS Pensiun = Penerimaan BPJS Pensiun + (Batas Minimal Iuran Pensiun × Persentase Pensiun Karyawan)
    ```
  * Jika tidak:

    ```
    Penerimaan BPJS Pensiun =Gaji BPJS Kesehatan × Persentase Pensiun Perusahaan / 100
    Potongan BPJS Pensiun = Penerimaan BPJS Pensiun + (Gaji BPJS Kesehatan × Persentase Pensiun Karyawan).
    ```

* **SPJ** = Jumlah total SPJ karyawan dalam periode payroll.
* **Lemburan** = Jumlah total overtime dari data Lemburan.
* **Fee Retail** = Jumlah total Fee Retail dari data Fee Employee.
* **Fee Corporate** = Jumlah total Fee Corporate dari data Fee Employee.
* **DPLK** = Nominal dari data Payroll Info Employee.
* **Uang Makan** = Nominal dari data Payroll Info Employee.
* **Bonus 1/2** = Dapat diinput manual.

  * Keterangan Bonus 1/2 = Dapat diisi sesuai kebutuhan.

---

##### 📤 Perhitungan Potongan

* **BPJS TK** =

  ```
  Tunjangan JHT Karyawan + Tunjangan JHT Perusahaan + Tunjangan Jaminan Kematian + Tunjangan Keselamatan Kerja
  ```
* **BPJS Kesehatan** = Gaji BPJS Kesehatan × Persentase dari data Company BPJS.
* **BPJS Pensiun** = Lihat detail di [BPJS Tenaga Kerja & Kesehatan](#🩺-bpjs-tenaga-kerja--kesehatan).
* **DPLK** = Nominal dari data Payroll Info Employee.
* **Kasbon** = Jumlah data Loan untuk karyawan terkait.
* **PPH21** = Hitung sesuai dengan gaji bruto dan kategori pajak karyawan.
* **PPH23** = Nilai diinput manual.
* **Potongan 1/2** = Nilai diinput manual.

  * Keterangan dapat diisi sesuai kebutuhan.
* **Potongan Absensi** = Potongan Alfa + Potongan Terlambat.

---

##### 💳 Total Akhir

* **Bruto**:

  ```
  Gaji Pokok + Total Tunjangan + Transport + Total Penerimaan BPJS Tenagakerja + Total Penerimaan BPJS Kesehatan + Penerimaan SPJ + Penerimaan Lemburan + Fee Retail + Fee Corporate + Uang Makan + Total Bonus
  ```
* **Penerimaan**:

  ```
  Bruto + Penerimaan BPJS Pensiun + Penerimaan DPLK
  ```
* **Potongan**:

  ```
  Total Potongan + Fee Retail + Fee Corporate
  ```
* **Total Bersih**:

  ```
  Total Penerimaan - Total Potongan
  ```

---

### ⚡️ Catatan Penting

* Status `Pending` memungkinkan data payroll diubah/dihapus.
* Setelah status `Approved`, data tidak dapat diubah.
* User biasa hanya dapat mengakses data payroll pribadi.

