# 📄 Manajemen Kontrak Karyawan

Menu ini digunakan untuk mengelola **riwayat kontrak karyawan**, baik itu kontrak awal, perpanjangan, hingga perubahan status seperti **mutasi, promosi, rotasi, atau resign**.

---

## 📋 List Data Kontrak

Menu: `/Contract`

Setiap user memiliki akses untuk melihat **data kontrak miliknya sendiri**, sedangkan **HR** atau user dengan permission khusus dapat melihat semua kontrak.

### 🔎 Fitur Filtering:
- Berdasarkan **jenis kontrak** (PKWT, PKWTT, Magang, dll)

---

## ➕ Tambah Kontrak

Menu: `Contract → Add Contract`

Fitur ini digunakan untuk:
- Menambah kontrak baru
- Memperpanjang masa kerja
- Melakukan **transfer jabatan** seperti:
  - ✳️ *Mutasi*
  - 📈 *Promosi*
  - 🔄 *Rotasi*
- Mengubah status karyawan menjadi **`Resign`**

### 🛑 Akses Terbatas:
- Hanya dapat dilakukan oleh user dengan role tertentu, seperti **HR**.
- Karyawan biasa **tidak memiliki** akses tambah kontrak.

---

## ✏️ Edit & ❌ Delete Kontrak

- Hanya dapat dilakukan jika status kontrak masih **`Pending`**.
- Tidak berlaku untuk kontrak yang sudah **Aktif** atau **Disetujui**.
- Akses edit/delete hanya tersedia untuk user dengan permission (contoh: HR).

> ⚠️ Karyawan tidak dapat melakukan edit maupun delete kontraknya sendiri.

---

## 🔍 Detail & 📎 File Kontrak

### 👁️ Detail Kontrak
- Klik ikon **`Eye`** di list data kontrak untuk melihat **riwayat dan perubahan** kontrak.
- Menampilkan info seperti:
  - Tanggal mulai dan akhir
  - Posisi
  - Jenis kontrak
  - Keterangan perubahan

### 📄 File Kontrak
- Klik **`Kode Kontrak`** untuk membuka file PDF dokumen kontrak yang telah di-*generate* secara otomatis.
- File ini bisa di-*download* atau di-*print* untuk keperluan administrasi.

---

## ✅ Approval Kontrak

- Setiap penambahan atau perubahan kontrak **harus melalui proses approval**.
- Proses hanya dapat dilakukan oleh **Approver**, seperti:
  - HR
  - Personalia (jika memiliki hak akses)

> 🔐 Status akan berubah menjadi:
> - `Approved` setelah disetujui
> - `Rejected` jika ditolak
> - `Pending` saat masih menunggu persetujuan

---

## 🛠️ Developer Notes

- Data kontrak tersimpan di tabel `contracts`
- Approval sistem terintegrasi dengan approval engine (menggunakan relasi user → approval_line)
- File PDF dikonversi secara otomatis dari template Blade

---

## 📘 Best Practice

- 🧾 Selalu isi semua kolom kontrak dengan lengkap dan sesuai fakta kerja.
- 🔒 Pastikan hanya user dengan akses khusus yang bisa membuat atau mengubah kontrak.
- 📁 Simpan hasil file kontrak di sistem yang aman dan terorganisir.

---

> 📝 *Dokumentasi ini dirancang untuk mempermudah tim HR dan developer dalam memahami serta menggunakan fitur kontrak secara efisien.*

📝 **Terakhir diperbarui**: 19 Juni 2025
✍️ **Dokumentasi oleh**: Tim Development
