-- phpMyAdmin SQL Dump
-- version 5.2.2
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Oct 13, 2026 at 07:33 AM
-- Server version: 11.8.9-MariaDB-log
-- PHP Version: 7.2.34

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `u929005145_panel`
--

-- --------------------------------------------------------

--
-- Table structure for table `absensi`
--

CREATE TABLE `absensi` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `tanggal` date NOT NULL,
  `jam_kerja_id` bigint(20) UNSIGNED DEFAULT NULL,
  `lokasi_absensi_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_masuk` time DEFAULT NULL,
  `lat_masuk` decimal(10,7) DEFAULT NULL,
  `long_masuk` decimal(10,7) DEFAULT NULL,
  `jarak_masuk_meter` int(10) UNSIGNED DEFAULT NULL,
  `foto_masuk` varchar(255) DEFAULT NULL COMMENT 'Path file foto selfie check-in',
  `jam_istirahat_mulai` time DEFAULT NULL COMMENT 'Jam mulai istirahat',
  `jam_istirahat_selesai` time DEFAULT NULL COMMENT 'Jam selesai istirahat',
  `status_istirahat` enum('belum','istirahat','selesai','dilewati') NOT NULL DEFAULT 'belum' COMMENT 'Status sesi istirahat pegawai',
  `face_matched_masuk` tinyint(1) DEFAULT NULL,
  `face_similarity_masuk` decimal(5,2) DEFAULT NULL,
  `status_masuk` enum('tepat_waktu','terlambat') DEFAULT NULL,
  `menit_terlambat` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `denda_masuk_id` bigint(20) UNSIGNED DEFAULT NULL,
  `denda_terlambat` decimal(12,2) NOT NULL DEFAULT 0.00,
  `denda_masuk` decimal(12,2) NOT NULL DEFAULT 0.00,
  `denda_pulang` decimal(12,2) NOT NULL DEFAULT 0.00,
  `denda_tidak_hadir` decimal(12,2) NOT NULL DEFAULT 0.00,
  `total_denda` decimal(12,2) NOT NULL DEFAULT 0.00,
  `jam_pulang` time DEFAULT NULL,
  `lat_pulang` decimal(10,7) DEFAULT NULL,
  `long_pulang` decimal(10,7) DEFAULT NULL,
  `jarak_pulang_meter` int(10) UNSIGNED DEFAULT NULL,
  `foto_pulang` varchar(255) DEFAULT NULL COMMENT 'Path file foto selfie check-out',
  `face_matched_pulang` tinyint(1) DEFAULT NULL,
  `face_similarity_pulang` decimal(5,2) DEFAULT NULL,
  `status_pulang` enum('normal','pulang_cepat') DEFAULT NULL,
  `menit_pulang_cepat` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `menit_denda_pulang` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `denda_pulang_id` bigint(20) UNSIGNED DEFAULT NULL,
  `denda_tidak_hadir_id` bigint(20) UNSIGNED DEFAULT NULL,
  `status_kehadiran` enum('hadir','izin','sakit','dinas','alfa') NOT NULL DEFAULT 'hadir',
  `direvisi` tinyint(1) NOT NULL DEFAULT 0,
  `catatan_revisi` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `absensi`
--

INSERT INTO `absensi` (`id`, `pegawai_id`, `tanggal`, `jam_kerja_id`, `lokasi_absensi_id`, `jam_masuk`, `lat_masuk`, `long_masuk`, `jarak_masuk_meter`, `foto_masuk`, `jam_istirahat_mulai`, `jam_istirahat_selesai`, `status_istirahat`, `face_matched_masuk`, `face_similarity_masuk`, `status_masuk`, `menit_terlambat`, `denda_masuk_id`, `denda_terlambat`, `denda_masuk`, `denda_pulang`, `denda_tidak_hadir`, `total_denda`, `jam_pulang`, `lat_pulang`, `long_pulang`, `jarak_pulang_meter`, `foto_pulang`, `face_matched_pulang`, `face_similarity_pulang`, `status_pulang`, `menit_pulang_cepat`, `menit_denda_pulang`, `denda_pulang_id`, `denda_tidak_hadir_id`, `status_kehadiran`, `direvisi`, `catatan_revisi`, `created_at`, `updated_at`) VALUES
(232, 3, '2026-10-13', 1, 2, '08:58:31', -7.1959974, 113.2444128, 12, 'absensi/3/absen_masuk_20261013_085831_mEpNWx.jpg', NULL, NULL, 'belum', 1, 58.00, 'terlambat', 58, 3, 0.00, 0.00, 0.00, 0.00, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'hadir', 0, NULL, '2026-10-13 01:58:31', '2026-10-13 01:58:31');

-- --------------------------------------------------------

--
-- Table structure for table `api_keys`
--

CREATE TABLE `api_keys` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nama` varchar(100) NOT NULL,
  `key` varchar(80) NOT NULL,
  `client_type` varchar(50) NOT NULL DEFAULT 'mobile_app',
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `rate_limit_per_minute` int(11) NOT NULL DEFAULT 120,
  `keterangan` text DEFAULT NULL,
  `last_used_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `api_keys`
--

INSERT INTO `api_keys` (`id`, `nama`, `key`, `client_type`, `status_aktif`, `rate_limit_per_minute`, `keterangan`, `last_used_at`, `created_at`, `updated_at`) VALUES
(1, 'Aplikasi Mobile Pegawai (Android/iOS)', 'SP-LIVE-9A8B7C6D5E4F3210', 'mobile_app', 1, 120, 'API Key resmi untuk integrasi aplikasi mobile Smart Presensi', NULL, '2026-10-05 04:14:17', '2026-10-05 04:14:17');

-- --------------------------------------------------------

--
-- Table structure for table `approval_pengajuan_progress`
--

CREATE TABLE `approval_pengajuan_progress` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `modul` varchar(50) NOT NULL,
  `pengajuan_id` bigint(20) UNSIGNED NOT NULL COMMENT 'ID dari pengajuan_izin, lembur_pegawai, atau kunjungan_dinas',
  `step_ke` tinyint(3) UNSIGNED NOT NULL DEFAULT 1,
  `total_step` tinyint(3) UNSIGNED NOT NULL DEFAULT 1,
  `pegawai_approver_id` bigint(20) UNSIGNED NOT NULL,
  `label_approver` varchar(100) DEFAULT NULL,
  `status` enum('menunggu','disetujui','ditolak') NOT NULL DEFAULT 'menunggu',
  `catatan` text DEFAULT NULL,
  `tanggal_aksi` datetime DEFAULT NULL,
  `is_current` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Step yang saat ini aktif menunggu aksi dari approver terkait',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `approval_pengajuan_progress`
--

INSERT INTO `approval_pengajuan_progress` (`id`, `modul`, `pengajuan_id`, `step_ke`, `total_step`, `pegawai_approver_id`, `label_approver`, `status`, `catatan`, `tanggal_aksi`, `is_current`, `created_at`, `updated_at`) VALUES
(7, 'izin', 41, 1, 2, 1, 'Chief Technology Officer', 'disetujui', 'gdsgdsgs', '2026-10-12 15:14:24', 0, '2026-10-12 08:14:08', '2026-10-12 08:14:24'),
(8, 'izin', 41, 2, 2, 4, 'Junior Mobile Engineer', 'menunggu', NULL, NULL, 1, '2026-10-12 08:14:08', '2026-10-12 08:14:24'),
(9, 'cuti', 42, 1, 1, 1, 'Chief Technology Officer', 'disetujui', 'sagfsasfaf', '2026-10-12 15:16:37', 0, '2026-10-12 08:16:16', '2026-10-12 08:16:37'),
(10, 'reimbursement', 2, 1, 2, 1, 'Atasan Langsung', 'disetujui', 'Disetujui atasan', '2026-10-12 22:29:11', 0, '2026-10-12 15:29:11', '2026-10-12 15:29:11'),
(11, 'reimbursement', 2, 2, 2, 2, 'Finance / HRD Manager', 'disetujui', 'Persetujuan finance selesai', '2026-10-12 22:29:11', 0, '2026-10-12 15:29:11', '2026-10-12 15:29:11');

-- --------------------------------------------------------

--
-- Table structure for table `cache`
--

CREATE TABLE `cache` (
  `key` varchar(255) NOT NULL,
  `value` mediumtext NOT NULL,
  `expiration` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `cache_locks`
--

CREATE TABLE `cache_locks` (
  `key` varchar(255) NOT NULL,
  `owner` varchar(255) NOT NULL,
  `expiration` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `denda_keterlambatan`
--

CREATE TABLE `denda_keterlambatan` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `golongan_denda` varchar(50) NOT NULL DEFAULT 'Reguler' COMMENT 'Grup/golongan skema denda (Reguler, Shift, Staff Khusus, dll)',
  `kategori_denda` enum('masuk','pulang','tidak_hadir') NOT NULL DEFAULT 'masuk',
  `menit_keterlambatan_awal` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `menit_keterlambatan_akhir` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `jenis_denda` enum('nominal_tetap','persen_gaji','potong_setengah_hari','potong_satu_hari') NOT NULL DEFAULT 'nominal_tetap',
  `nominal_denda` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT 'Nilai nominal rupiah atau persentase',
  `keterangan` varchar(200) DEFAULT NULL,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `denda_keterlambatan`
--

INSERT INTO `denda_keterlambatan` (`id`, `golongan_denda`, `kategori_denda`, `menit_keterlambatan_awal`, `menit_keterlambatan_akhir`, `jenis_denda`, `nominal_denda`, `keterangan`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 'Reguler', 'masuk', 1, 15, 'nominal_tetap', 15000.00, 'Terlambat Masuk 1 - 15 menit', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(2, 'Reguler', 'masuk', 16, 30, 'nominal_tetap', 30000.00, 'Terlambat Masuk 16 - 30 menit', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(3, 'Reguler', 'masuk', 31, 60, 'nominal_tetap', 60000.00, 'Terlambat Masuk 31 - 60 menit', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(4, 'Reguler', 'masuk', 61, 480, 'potong_setengah_hari', 0.00, 'Terlambat Masuk > 1 jam (potong 1/2 hari kerja)', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(5, 'Reguler', 'pulang', 1, 30, 'nominal_tetap', 20000.00, 'Pulang cepat / lewat batas akhir pulang 1 - 30 menit', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(6, 'Reguler', 'pulang', 31, 480, 'potong_setengah_hari', 0.00, 'Pulang cepat > 30 menit (potong 1/2 hari kerja)', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(50, 'Reguler', 'tidak_hadir', 0, 0, 'nominal_tetap', 50000.00, NULL, 1, '2026-10-12 05:09:00', '2026-10-12 05:09:00');

-- --------------------------------------------------------

--
-- Table structure for table `departemen`
--

CREATE TABLE `departemen` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kode_departemen` varchar(30) NOT NULL,
  `nama_departemen` varchar(100) NOT NULL,
  `tingkat` tinyint(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT '1: Direktorat, 2: Departemen Utama, 3: Departemen Pendukung',
  `parent_id` bigint(20) UNSIGNED DEFAULT NULL,
  `deskripsi` text DEFAULT NULL,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `departemen`
--

INSERT INTO `departemen` (`id`, `kode_departemen`, `nama_departemen`, `tingkat`, `parent_id`, `deskripsi`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 'DIR-TECH', 'Direktorat Teknologi & Produk', 1, NULL, 'Pengembangan inovasi digital dan ekosistem software', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(2, 'DIR-OPS', 'Direktorat Operasional & SDM', 1, NULL, 'Operasional kantor, logistik, dan manajemen sumber daya manusia', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(3, 'DEP-ENG', 'Departemen Rekayasa Perangkat Lunak', 2, 1, 'Engineering web, mobile app, cloud backend', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(4, 'DEP-HRD', 'Departemen Human Resource & GA', 2, 2, 'Rekrutmen, hubungan industrial, kompensasi & presensi', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36');

-- --------------------------------------------------------

--
-- Table structure for table `divisi`
--

CREATE TABLE `divisi` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `departemen_id` bigint(20) UNSIGNED NOT NULL,
  `kode_divisi` varchar(30) NOT NULL,
  `nama_divisi` varchar(100) NOT NULL,
  `tingkat` tinyint(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT '1: Divisi, 2: Sub-Divisi / Unit',
  `parent_id` bigint(20) UNSIGNED DEFAULT NULL,
  `deskripsi` text DEFAULT NULL,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `divisi`
--

INSERT INTO `divisi` (`id`, `departemen_id`, `kode_divisi`, `nama_divisi`, `tingkat`, `parent_id`, `deskripsi`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 3, 'DIV-DEV', 'Divisi Software Engineering', 1, NULL, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(2, 3, 'DIV-MOB', 'Sub-Divisi Mobile Application', 2, 1, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(3, 4, 'DIV-HR', 'Divisi Kepegawaian & Presensi', 1, NULL, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36');

-- --------------------------------------------------------

--
-- Table structure for table `failed_jobs`
--

CREATE TABLE `failed_jobs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `uuid` varchar(255) NOT NULL,
  `connection` text NOT NULL,
  `queue` text NOT NULL,
  `payload` longtext NOT NULL,
  `exception` longtext NOT NULL,
  `failed_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `hari_kerja`
--

CREATE TABLE `hari_kerja` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nama_pola_kerja` varchar(100) NOT NULL,
  `jam_kerja_senin_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_kerja_selasa_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_kerja_rabu_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_kerja_kamis_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_kerja_jumat_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_kerja_sabtu_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_kerja_minggu_id` bigint(20) UNSIGNED DEFAULT NULL,
  `keterangan` text DEFAULT NULL,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `hari_kerja`
--

INSERT INTO `hari_kerja` (`id`, `nama_pola_kerja`, `jam_kerja_senin_id`, `jam_kerja_selasa_id`, `jam_kerja_rabu_id`, `jam_kerja_kamis_id`, `jam_kerja_jumat_id`, `jam_kerja_sabtu_id`, `jam_kerja_minggu_id`, `keterangan`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 'Pola Standar 5 Hari Kerja (Senin - Jumat)', 1, 1, 1, 1, 1, NULL, NULL, 'Pola kerja kantor reguler akhir pekan libur', 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36');

-- --------------------------------------------------------

--
-- Table structure for table `hari_libur`
--

CREATE TABLE `hari_libur` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nama_libur` varchar(150) NOT NULL,
  `tanggal_libur` date NOT NULL,
  `cuti_bersama` tinyint(1) NOT NULL DEFAULT 0,
  `keterangan` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `hari_libur`
--

INSERT INTO `hari_libur` (`id`, `nama_libur`, `tanggal_libur`, `cuti_bersama`, `keterangan`, `created_at`, `updated_at`) VALUES
(1, 'Tahun Baru Masehi', '2026-01-01', 0, NULL, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(2, 'Hari Raya Idul Fitri 1447 H', '2026-03-20', 0, NULL, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(3, 'Cuti Bersama Idul Fitri', '2026-03-23', 1, NULL, '2026-10-04 18:43:36', '2026-10-04 18:43:36');

-- --------------------------------------------------------

--
-- Table structure for table `jabatan`
--

CREATE TABLE `jabatan` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kode_jabatan` varchar(30) NOT NULL,
  `nama_jabatan` varchar(100) NOT NULL,
  `tingkat_level` tinyint(3) UNSIGNED NOT NULL DEFAULT 6 COMMENT '1: Direksi, 2: VP/GM, 3: Manager, 4: Supervisor, 5: Senior Staff, 6: Staff, 7: Magang/Intern',
  `deskripsi` text DEFAULT NULL,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `jabatan`
--

INSERT INTO `jabatan` (`id`, `kode_jabatan`, `nama_jabatan`, `tingkat_level`, `deskripsi`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 'JAB-CTO', 'Chief Technology Officer', 1, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(2, 'JAB-EM', 'Engineering Manager', 3, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(3, 'JAB-TL', 'Lead Mobile Developer', 4, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(4, 'JAB-SE', 'Senior Mobile Developer', 5, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(5, 'JAB-JSE', 'Junior Mobile Engineer', 6, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(6, 'JAB-HRST', 'Staff Kepegawaian & Absensi', 6, NULL, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36');

-- --------------------------------------------------------

--
-- Table structure for table `jadwal_kenaikan_pangkat`
--

CREATE TABLE `jadwal_kenaikan_pangkat` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `judul` varchar(150) NOT NULL,
  `tahun_periode` year(4) NOT NULL,
  `gelombang` varchar(50) NOT NULL COMMENT 'Contoh: Periode April / Semester 1',
  `tgl_mulai_pendaftaran` date NOT NULL,
  `tgl_selesai_pendaftaran` date NOT NULL,
  `syarat_masa_kerja_bulan` smallint(5) UNSIGNED NOT NULL DEFAULT 12 COMMENT 'Minimal masa kerja untuk eligible',
  `keterangan` text DEFAULT NULL,
  `status` enum('draf','aktif','ditutup') NOT NULL DEFAULT 'draf',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `jadwal_kenaikan_pangkat`
--

INSERT INTO `jadwal_kenaikan_pangkat` (`id`, `judul`, `tahun_periode`, `gelombang`, `tgl_mulai_pendaftaran`, `tgl_selesai_pendaftaran`, `syarat_masa_kerja_bulan`, `keterangan`, `status`, `created_at`, `updated_at`) VALUES
(1, 'Periode Promosi & Mutasi Semester Genap 2026', '2026', 'Gelombang I (Oktober)', '2026-09-25', '2026-10-25', 12, 'Pengajuan promosi pegawai berkinerja minimal Baik (Rating 4+)', 'aktif', '2026-10-04 18:43:37', '2026-10-04 18:43:37');

-- --------------------------------------------------------

--
-- Table structure for table `jam_kerja`
--

CREATE TABLE `jam_kerja` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kode_jam_kerja` varchar(30) NOT NULL,
  `nama_jam_kerja` varchar(100) NOT NULL,
  `tipe_kerja` enum('penuh_waktu','paruh_waktu') NOT NULL DEFAULT 'penuh_waktu',
  `lintas_hari` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'True jika jam shift melewati tengah malam (overnight)',
  `batasi_absen` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Apakah absensi dibatasi ketat (tidak bisa absen jika melewati batas jam)',
  `jam_awal_masuk` time DEFAULT NULL COMMENT 'Waktu mulai tombol absen masuk dibuka',
  `jam_akhir_masuk` time DEFAULT NULL COMMENT 'Batas akhir masuk (patokan keterlambatan)',
  `jam_awal_pulang` time DEFAULT NULL COMMENT 'Waktu mulai tombol absen pulang dibuka',
  `jam_akhir_pulang` time DEFAULT NULL COMMENT 'Batas akhir absen pulang ditutup',
  `jam_masuk` time NOT NULL,
  `jam_pulang` time NOT NULL,
  `buka_absen_masuk_menit` smallint(5) UNSIGNED NOT NULL DEFAULT 60 COMMENT 'Berapa menit sebelum jam masuk absensi dibuka',
  `tutup_absen_pulang_menit` smallint(5) UNSIGNED NOT NULL DEFAULT 180 COMMENT 'Berapa menit setelah jam pulang absensi masih dibuka',
  `jam_mulai_istirahat` time DEFAULT NULL,
  `jam_selesai_istirahat` time DEFAULT NULL,
  `toleransi_terlambat_menit` smallint(5) UNSIGNED NOT NULL DEFAULT 15 COMMENT 'Batas toleransi menit sebelum dianggap terlambat',
  `keterangan` text DEFAULT NULL,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `jam_kerja`
--

INSERT INTO `jam_kerja` (`id`, `kode_jam_kerja`, `nama_jam_kerja`, `tipe_kerja`, `lintas_hari`, `batasi_absen`, `jam_awal_masuk`, `jam_akhir_masuk`, `jam_awal_pulang`, `jam_akhir_pulang`, `jam_masuk`, `jam_pulang`, `buka_absen_masuk_menit`, `tutup_absen_pulang_menit`, `jam_mulai_istirahat`, `jam_selesai_istirahat`, `toleransi_terlambat_menit`, `keterangan`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 'JK-REG', 'Jam Kantor Reguler (08:00 - 17:00)', 'penuh_waktu', 0, 0, '06:00:00', '09:00:00', '17:00:00', '18:00:00', '08:00:00', '17:00:00', 60, 180, '12:00:00', '13:00:00', 0, 'Jam kerja operasional standar Senin s.d Jumat', 1, '2026-10-04 18:43:36', '2026-10-07 07:00:55'),
(2, 'JK-PAGI', 'Shift Pagi (07:00 - 15:00)', 'penuh_waktu', 0, 0, '06:00:00', '07:00:00', '15:00:00', '17:00:00', '07:00:00', '15:00:00', 60, 180, NULL, NULL, 10, NULL, 1, '2026-10-04 18:43:36', '2026-10-05 06:44:33'),
(3, 'JK-SIANG', 'Shift Siang (15:00 - 23:00)', 'penuh_waktu', 0, 0, '14:00:00', '15:00:00', '23:00:00', '01:00:00', '15:00:00', '23:00:00', 60, 180, NULL, NULL, 10, NULL, 1, '2026-10-04 18:43:36', '2026-10-05 06:44:33'),
(4, 'JK-MLM', 'Shift Malam Lintas Hari (22:00 - 06:00)', 'penuh_waktu', 1, 0, '21:00:00', '22:00:00', '06:00:00', '08:00:00', '22:00:00', '06:00:00', 60, 120, NULL, NULL, 10, 'Shift malam operasi server monitoring 24/7 lintas hari', 1, '2026-10-04 18:43:36', '2026-10-05 06:44:33'),
(5, 'JK-PART', 'Paruh Waktu Pagi (08:00 - 12:00)', 'paruh_waktu', 0, 0, '07:30:00', '08:00:00', '12:00:00', '13:00:00', '08:00:00', '12:00:00', 60, 180, NULL, NULL, 10, NULL, 1, '2026-10-04 18:43:36', '2026-10-05 06:44:33');

-- --------------------------------------------------------

--
-- Table structure for table `jobs`
--

CREATE TABLE `jobs` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `queue` varchar(255) NOT NULL,
  `payload` longtext NOT NULL,
  `attempts` tinyint(3) UNSIGNED NOT NULL,
  `reserved_at` int(10) UNSIGNED DEFAULT NULL,
  `available_at` int(10) UNSIGNED NOT NULL,
  `created_at` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `job_batches`
--

CREATE TABLE `job_batches` (
  `id` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `total_jobs` int(11) NOT NULL,
  `pending_jobs` int(11) NOT NULL,
  `failed_jobs` int(11) NOT NULL,
  `failed_job_ids` longtext NOT NULL,
  `options` mediumtext DEFAULT NULL,
  `cancelled_at` int(11) DEFAULT NULL,
  `created_at` int(11) NOT NULL,
  `finished_at` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `kenaikan_pangkat`
--

CREATE TABLE `kenaikan_pangkat` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `jadwal_kenaikan_pangkat_id` bigint(20) UNSIGNED DEFAULT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `departemen_lama_id` bigint(20) UNSIGNED NOT NULL,
  `divisi_lama_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jabatan_lama_id` bigint(20) UNSIGNED NOT NULL,
  `lokasi_lama_id` bigint(20) UNSIGNED DEFAULT NULL,
  `atasan_lama_id` bigint(20) UNSIGNED DEFAULT NULL,
  `gaji_pokok_lama` decimal(15,2) DEFAULT NULL,
  `departemen_baru_id` bigint(20) UNSIGNED NOT NULL,
  `divisi_baru_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jabatan_baru_id` bigint(20) UNSIGNED NOT NULL,
  `lokasi_baru_id` bigint(20) UNSIGNED DEFAULT NULL,
  `atasan_baru_id` bigint(20) UNSIGNED DEFAULT NULL,
  `gaji_pokok_baru` decimal(15,2) DEFAULT NULL,
  `jenis_perubahan` enum('promosi','mutasi','rotasi','demosi') NOT NULL DEFAULT 'promosi',
  `tanggal_efektif` date NOT NULL,
  `tanggal_sk` date DEFAULT NULL,
  `nomor_sk` varchar(100) DEFAULT NULL,
  `dokumen_sk` varchar(255) DEFAULT NULL,
  `catatan` text DEFAULT NULL,
  `alasan_penolakan` text DEFAULT NULL,
  `status` enum('diajukan','diverifikasi','disetujui','ditolak','dibatalkan') NOT NULL DEFAULT 'diajukan',
  `disetujui_oleh_user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `waktu_approval` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kenaikan_pangkat`
--

INSERT INTO `kenaikan_pangkat` (`id`, `jadwal_kenaikan_pangkat_id`, `pegawai_id`, `departemen_lama_id`, `divisi_lama_id`, `jabatan_lama_id`, `lokasi_lama_id`, `atasan_lama_id`, `gaji_pokok_lama`, `departemen_baru_id`, `divisi_baru_id`, `jabatan_baru_id`, `lokasi_baru_id`, `atasan_baru_id`, `gaji_pokok_baru`, `jenis_perubahan`, `tanggal_efektif`, `tanggal_sk`, `nomor_sk`, `dokumen_sk`, `catatan`, `alasan_penolakan`, `status`, `disetujui_oleh_user_id`, `waktu_approval`, `created_at`, `updated_at`) VALUES
(1, 1, 3, 3, 2, 4, NULL, NULL, NULL, 3, 2, 3, NULL, NULL, NULL, 'promosi', '2026-11-04', NULL, NULL, NULL, 'Promosi menjadi Tech Lead Mobile App atas pencapaian arsitektur app', NULL, 'diverifikasi', NULL, NULL, '2026-10-04 18:43:37', '2026-10-04 18:43:37'),
(2, NULL, 1, 1, 1, 1, 1, NULL, 5000000.00, 2, 1, 2, 2, NULL, 7500000.00, 'promosi', '2026-10-12', '2026-10-12', 'SK/TEST/PROMOSI/20261012/001', NULL, 'Uji coba promosi dan mutasi lokasi cabang pegawai', NULL, 'disetujui', 1, '2026-10-12 16:38:44', '2026-10-12 16:38:44', '2026-10-12 16:38:44');

-- --------------------------------------------------------

--
-- Table structure for table `komponen_gaji`
--

CREATE TABLE `komponen_gaji` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kode_komponen` varchar(50) NOT NULL,
  `nama_komponen` varchar(100) NOT NULL,
  `jenis` enum('tunjangan','potongan') NOT NULL COMMENT 'Tunjangan menambah, potongan mengurangi',
  `tipe_nilai` enum('tetap','lembur_otomatis','denda_otomatis','denda_tidak_hadir_otomatis') NOT NULL DEFAULT 'tetap',
  `nilai_default` decimal(14,2) NOT NULL DEFAULT 0.00,
  `keterangan` varchar(255) DEFAULT NULL,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `komponen_gaji`
--

INSERT INTO `komponen_gaji` (`id`, `kode_komponen`, `nama_komponen`, `jenis`, `tipe_nilai`, `nilai_default`, `keterangan`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 'TJ-LEMBUR', 'Upah Lembur Karyawan', 'tunjangan', 'lembur_otomatis', 0.00, 'Dihitung otomatis dari akumulasi total lembur yang disetujui pada periode berjalan', 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(2, 'POT-DENDA', 'Potongan Denda Keterlambatan', 'potongan', 'denda_otomatis', 0.00, 'Dipotong otomatis dari akumulasi denda keterlambatan absensi pada periode berjalan', 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(3, 'TJ-TRANSPORT', 'Tunjangan Transportasi', 'tunjangan', 'tetap', 500000.00, 'Tunjangan transportasi bulanan tetap', 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(4, 'TJ-MAKAN', 'Uang Makan Bulanan', 'tunjangan', 'tetap', 600000.00, 'Subsidi uang makan karyawan per bulan', 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(5, 'TJ-JABATAN', 'Tunjangan Jabatan', 'tunjangan', 'tetap', 750000.00, 'Tunjangan fungsional jabatan', 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(6, 'POT-BPJS-KES', 'Iuran BPJS Kesehatan', 'potongan', 'tetap', 65000.00, 'Potongan wajib iuran BPJS Kesehatan bulanan', 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(7, 'POT-BPJS-TK', 'Iuran BPJS Ketenagakerjaan (JHT)', 'potongan', 'tetap', 120000.00, 'Potongan Jaminan Hari Tua Ketenagakerjaan bulanan', 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(8, 'POT-TIDAK-HADIR', 'Potongan Denda Tidak Hadir (Alfa)', 'potongan', 'denda_tidak_hadir_otomatis', 0.00, 'Potongan denda otomatis untuk hari tidak hadir (alpa) saat absensi dikunci', 1, '2026-10-12 05:02:48', '2026-10-12 05:02:48');

-- --------------------------------------------------------

--
-- Table structure for table `konfigurasi_cuti`
--

CREATE TABLE `konfigurasi_cuti` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kuota_tahunan_default` smallint(5) UNSIGNED NOT NULL DEFAULT 12 COMMENT 'Jatah kuota cuti tahunan standar per karyawan',
  `ijinkan_minus` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Apakah karyawan boleh mengajukan cuti jika kuota habis',
  `periode_tahun` smallint(5) UNSIGNED NOT NULL DEFAULT 2026 COMMENT 'Tahun periode aktif',
  `catatan_kebijakan` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `konfigurasi_cuti`
--

INSERT INTO `konfigurasi_cuti` (`id`, `kuota_tahunan_default`, `ijinkan_minus`, `periode_tahun`, `catatan_kebijakan`, `created_at`, `updated_at`) VALUES
(1, 12, 0, 2026, 'Standar kuota cuti tahunan perusahaan 12 hari kerja per tahun anggaran.', '2026-10-12 07:49:27', '2026-10-12 08:04:39');

-- --------------------------------------------------------

--
-- Table structure for table `kunci_laporan_absensi`
--

CREATE TABLE `kunci_laporan_absensi` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `bulan` tinyint(3) UNSIGNED NOT NULL COMMENT 'Bulan 1 - 12',
  `tahun` smallint(5) UNSIGNED NOT NULL COMMENT 'Tahun periode',
  `tanggal_kunci` datetime NOT NULL,
  `dikunci_oleh_user_id` bigint(20) UNSIGNED NOT NULL,
  `total_pegawai` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `total_kehadiran` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `total_denda_masuk` decimal(14,2) NOT NULL DEFAULT 0.00,
  `total_denda_pulang` decimal(14,2) NOT NULL DEFAULT 0.00,
  `total_denda_tidak_hadir` decimal(14,2) NOT NULL DEFAULT 0.00,
  `grand_total_denda` decimal(14,2) NOT NULL DEFAULT 0.00,
  `status_kunci` enum('terkunci','dibuka') NOT NULL DEFAULT 'terkunci',
  `catatan` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kunci_laporan_absensi`
--

INSERT INTO `kunci_laporan_absensi` (`id`, `bulan`, `tahun`, `tanggal_kunci`, `dikunci_oleh_user_id`, `total_pegawai`, `total_kehadiran`, `total_denda_masuk`, `total_denda_pulang`, `total_denda_tidak_hadir`, `grand_total_denda`, `status_kunci`, `catatan`, `created_at`, `updated_at`) VALUES
(47, 10, 2026, '2026-10-12 12:45:56', 1, 6, 8, 1090000.00, 560000.00, 6250000.00, 7900000.00, 'terkunci', NULL, '2026-10-12 05:45:56', '2026-10-12 05:45:57');

-- --------------------------------------------------------

--
-- Table structure for table `kunjungan_dinas`
--

CREATE TABLE `kunjungan_dinas` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `kota_tujuan` varchar(100) NOT NULL,
  `instansi_tujuan` varchar(150) NOT NULL,
  `keperluan` text NOT NULL,
  `tanggal_mulai` date NOT NULL,
  `tanggal_selesai` date NOT NULL,
  `anggaran_biaya` decimal(14,2) NOT NULL DEFAULT 0.00,
  `geotag_lat` decimal(10,7) DEFAULT NULL COMMENT 'Koordinat saat check-in dinas di lokasi',
  `geotag_long` decimal(10,7) DEFAULT NULL,
  `foto_kegiatan` varchar(255) DEFAULT NULL,
  `dokumen_surat_tugas` varchar(255) DEFAULT NULL COMMENT 'File surat tugas dinas luar',
  `status` enum('menunggu','disetujui','selesai','ditolak') NOT NULL DEFAULT 'menunggu',
  `approval_step_current` tinyint(3) UNSIGNED NOT NULL DEFAULT 1,
  `approval_step_total` tinyint(3) UNSIGNED NOT NULL DEFAULT 0,
  `disetujui_oleh_pegawai_id` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kunjungan_dinas`
--

INSERT INTO `kunjungan_dinas` (`id`, `pegawai_id`, `kota_tujuan`, `instansi_tujuan`, `keperluan`, `tanggal_mulai`, `tanggal_selesai`, `anggaran_biaya`, `geotag_lat`, `geotag_long`, `foto_kegiatan`, `dokumen_surat_tugas`, `status`, `approval_step_current`, `approval_step_total`, `disetujui_oleh_pegawai_id`, `created_at`, `updated_at`) VALUES
(1, 1, 'Bandung', 'Institut Teknologi Bandung & Telkom University', 'Kerjasama riset AI & evaluasi implementasi sistem cloud kampus', '2026-10-08', '2026-10-10', 7500000.00, NULL, NULL, NULL, NULL, 'disetujui', 1, 0, 1, '2026-10-04 18:43:37', '2026-10-04 18:43:37'),
(2, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, NULL, 'menunggu', 1, 0, NULL, '2026-10-05 04:46:23', '2026-10-05 04:46:23'),
(3, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, NULL, 'menunggu', 1, 0, NULL, '2026-10-05 04:46:37', '2026-10-05 04:46:37'),
(4, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, NULL, 'menunggu', 1, 0, NULL, '2026-10-05 04:47:23', '2026-10-05 04:47:23'),
(5, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, NULL, 'menunggu', 1, 0, NULL, '2026-10-05 04:47:52', '2026-10-05 04:47:52'),
(6, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, NULL, 'menunggu', 1, 0, NULL, '2026-10-05 04:48:03', '2026-10-05 04:48:03'),
(7, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, NULL, 'menunggu', 1, 0, NULL, '2026-10-05 04:51:17', '2026-10-05 04:51:17'),
(8, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, NULL, 'menunggu', 1, 0, NULL, '2026-10-05 04:57:31', '2026-10-05 04:57:31'),
(9, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, 'dokumen_dinas/dinas_3_1791176379_v390Bgl4.pdf', 'menunggu', 1, 0, NULL, '2026-10-05 04:59:39', '2026-10-05 04:59:39'),
(10, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, 'dokumen_dinas/dinas_3_1791176472_T4fm2maR.pdf', 'menunggu', 1, 0, NULL, '2026-10-05 05:01:12', '2026-10-05 05:01:12'),
(11, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, 'dokumen_dinas/dinas_3_1791176923_IwIoWolC.pdf', 'menunggu', 1, 0, NULL, '2026-10-05 05:08:43', '2026-10-05 05:08:43'),
(12, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, 'dokumen_dinas/dinas_3_1791182530_MS0m2cse.pdf', 'menunggu', 1, 0, NULL, '2026-10-05 06:42:10', '2026-10-05 06:42:10'),
(13, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, 'dokumen_dinas/dinas_3_1791182589_BHEIZUt1.pdf', 'menunggu', 1, 0, NULL, '2026-10-05 06:43:09', '2026-10-05 06:43:09'),
(14, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, 'dokumen_dinas/dinas_3_1791182607_sJtYPu1i.pdf', 'menunggu', 1, 0, NULL, '2026-10-05 06:43:27', '2026-10-05 06:43:27'),
(15, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, 'dokumen_dinas/dinas_3_1791182633_mnfAAM13.pdf', 'menunggu', 1, 0, NULL, '2026-10-05 06:43:53', '2026-10-05 06:43:53'),
(16, 3, 'Yogyakarta', 'Universitas Gadjah Mada', 'Sosialisasi dan integrasi API smart presensi kampus', '2026-10-15', '2026-10-17', 3500000.00, NULL, NULL, NULL, 'dokumen_dinas/dinas_3_1791182673_7vGTC9Hx.pdf', 'menunggu', 1, 0, NULL, '2026-10-05 06:44:33', '2026-10-05 06:44:33');

-- --------------------------------------------------------

--
-- Table structure for table `kuota_cuti_pegawai`
--

CREATE TABLE `kuota_cuti_pegawai` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `tahun` smallint(5) UNSIGNED NOT NULL DEFAULT 2026,
  `kuota_utama` int(11) NOT NULL DEFAULT 12 COMMENT 'Jatah kuota tahunan dasar',
  `kuota_tambahan` int(11) NOT NULL DEFAULT 0 COMMENT 'Tambahan kuota (reward, carry-over, dispensasi khusus)',
  `kuota_terpakai` int(11) NOT NULL DEFAULT 0 COMMENT 'Total hari cuti yang telah disetujui',
  `catatan` varchar(255) DEFAULT NULL COMMENT 'Keterangan penyesuaian khusus oleh HRD',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kuota_cuti_pegawai`
--

INSERT INTO `kuota_cuti_pegawai` (`id`, `pegawai_id`, `tahun`, `kuota_utama`, `kuota_tambahan`, `kuota_terpakai`, `catatan`, `created_at`, `updated_at`) VALUES
(1, 1, 2026, 12, 0, 0, NULL, '2026-10-12 07:49:27', '2026-10-12 07:49:27'),
(2, 3, 2026, 12, 0, 0, NULL, '2026-10-12 07:49:27', '2026-10-12 07:49:27'),
(3, 4, 2026, 12, 0, 0, NULL, '2026-10-12 07:49:27', '2026-10-12 07:49:27'),
(4, 5, 2026, 12, 0, 0, NULL, '2026-10-12 07:49:27', '2026-10-12 07:49:27'),
(5, 7, 2026, 12, 0, 1, NULL, '2026-10-12 07:49:27', '2026-10-12 08:16:37');

-- --------------------------------------------------------

--
-- Table structure for table `laporan_absensi_terkunci`
--

CREATE TABLE `laporan_absensi_terkunci` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kunci_laporan_id` bigint(20) UNSIGNED NOT NULL,
  `absensi_id` bigint(20) UNSIGNED DEFAULT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `tanggal` date NOT NULL,
  `jam_kerja_id` bigint(20) UNSIGNED DEFAULT NULL,
  `lokasi_absensi_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_masuk` time DEFAULT NULL,
  `lat_masuk` decimal(10,7) DEFAULT NULL,
  `long_masuk` decimal(10,7) DEFAULT NULL,
  `jarak_masuk_meter` int(10) UNSIGNED DEFAULT NULL,
  `foto_masuk` varchar(255) DEFAULT NULL,
  `status_masuk` enum('tepat_waktu','terlambat') DEFAULT NULL,
  `menit_terlambat` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `denda_masuk_id` bigint(20) UNSIGNED DEFAULT NULL,
  `jam_pulang` time DEFAULT NULL,
  `lat_pulang` decimal(10,7) DEFAULT NULL,
  `long_pulang` decimal(10,7) DEFAULT NULL,
  `jarak_pulang_meter` int(10) UNSIGNED DEFAULT NULL,
  `foto_pulang` varchar(255) DEFAULT NULL,
  `status_pulang` enum('normal','pulang_cepat') DEFAULT NULL,
  `menit_pulang_cepat` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `menit_denda_pulang` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `denda_pulang_id` bigint(20) UNSIGNED DEFAULT NULL,
  `denda_tidak_hadir_id` bigint(20) UNSIGNED DEFAULT NULL,
  `status_kehadiran` enum('hadir','izin','sakit','dinas','alfa') NOT NULL DEFAULT 'hadir',
  `direvisi` tinyint(1) NOT NULL DEFAULT 0,
  `catatan_revisi` text DEFAULT NULL,
  `nominal_denda_masuk` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT 'Nominal denda keterlambatan masuk terkunci',
  `nominal_denda_pulang` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT 'Nominal denda pelanggaran pulang terkunci',
  `nominal_denda_tidak_hadir` decimal(12,2) NOT NULL DEFAULT 0.00,
  `total_nominal_denda` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT 'Total denda masuk + pulang terkunci',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `laporan_absensi_terkunci`
--

INSERT INTO `laporan_absensi_terkunci` (`id`, `kunci_laporan_id`, `absensi_id`, `pegawai_id`, `tanggal`, `jam_kerja_id`, `lokasi_absensi_id`, `jam_masuk`, `lat_masuk`, `long_masuk`, `jarak_masuk_meter`, `foto_masuk`, `status_masuk`, `menit_terlambat`, `denda_masuk_id`, `jam_pulang`, `lat_pulang`, `long_pulang`, `jarak_pulang_meter`, `foto_pulang`, `status_pulang`, `menit_pulang_cepat`, `menit_denda_pulang`, `denda_pulang_id`, `denda_tidak_hadir_id`, `status_kehadiran`, `direvisi`, `catatan_revisi`, `nominal_denda_masuk`, `nominal_denda_pulang`, `nominal_denda_tidak_hadir`, `total_nominal_denda`, `created_at`, `updated_at`) VALUES
(437, 47, NULL, 2, '2026-10-05', NULL, NULL, '07:54:12', NULL, NULL, NULL, NULL, NULL, 0, NULL, '13:44:33', -6.2255880, 106.8093120, 0, 'absensi/2/absen_pulang_20261005_134433_BeJ31q.jpg', 'pulang_cepat', 196, 196, 6, NULL, 'hadir', 0, NULL, 0.00, 560000.00, 0.00, 560000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(438, 47, NULL, 1, '2026-10-05', NULL, NULL, '08:00:00', NULL, NULL, NULL, NULL, 'tepat_waktu', 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'hadir', 0, NULL, 0.00, 0.00, 0.00, 0.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(439, 47, NULL, 3, '2026-10-05', 1, 2, '13:46:50', -7.1958500, 113.2443987, 11, 'absensi/3/absen_masuk_20261005_134650_adlCwF.jpg', 'terlambat', 346, 4, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'hadir', 0, NULL, 330000.00, 0.00, 0.00, 330000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(440, 47, NULL, 5, '2026-10-05', 2, 2, '15:33:11', -7.1958500, 113.2443987, 11, 'absensi/5/absen_masuk_20261005_153311_winvj1.jpg', 'terlambat', 513, 4, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'hadir', 0, NULL, 100000.00, 0.00, 0.00, 100000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(441, 47, NULL, 5, '2026-10-06', 1, 45, '01:56:17', -7.1979613, 113.2495917, 13, 'absensi/5/absen_masuk_20261006_015617_WZWRmm.jpg', 'tepat_waktu', 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'hadir', 0, NULL, 0.00, 0.00, 0.00, 0.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(442, 47, NULL, 2, '2026-10-07', 1, 45, '15:49:25', -7.1979534, 113.2495860, 12, 'absensi/2/absen_masuk_20261007_154925_rsRPBv.jpg', 'terlambat', 469, 4, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'hadir', 0, NULL, 560000.00, 0.00, 0.00, 560000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(443, 47, NULL, 5, '2026-10-07', 1, 45, '20:43:26', -7.1979606, 113.2496066, 14, 'absensi/5/absen_masuk_20261007_204326_UYAKqq.jpg', 'terlambat', 763, 4, '01:27:08', -7.1979566, 113.2495962, 13, 'absensi/5/absen_pulang_20261008_012708_9XoauC.jpg', 'pulang_cepat', 933, 933, NULL, NULL, 'hadir', 0, NULL, 100000.00, 0.00, 0.00, 100000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(444, 47, NULL, 5, '2026-10-08', 1, 45, '07:06:36', -7.1979617, 113.2495813, 11, 'absensi/5/absen_masuk_20261008_070636_1iOdWH.jpg', 'tepat_waktu', 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'hadir', 0, NULL, 0.00, 0.00, 0.00, 0.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(445, 47, NULL, 1, '2026-10-01', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(446, 47, NULL, 1, '2026-10-02', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(447, 47, NULL, 1, '2026-10-06', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(448, 47, NULL, 1, '2026-10-07', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(449, 47, NULL, 1, '2026-10-08', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'dinas', 0, 'Tercatat dari pengajuan resmi', 0.00, 0.00, 0.00, 0.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(450, 47, NULL, 1, '2026-10-09', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, 'dinas', 0, 'Tercatat dari pengajuan resmi', 0.00, 0.00, 0.00, 0.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(451, 47, NULL, 1, '2026-10-12', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(452, 47, NULL, 3, '2026-10-01', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(453, 47, NULL, 3, '2026-10-02', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(454, 47, NULL, 3, '2026-10-03', 2, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(455, 47, NULL, 3, '2026-10-04', 3, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(456, 47, NULL, 3, '2026-10-06', 4, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(457, 47, NULL, 3, '2026-10-08', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(458, 47, NULL, 3, '2026-10-09', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(459, 47, NULL, 3, '2026-10-10', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(460, 47, NULL, 3, '2026-10-11', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(461, 47, NULL, 3, '2026-10-12', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(462, 47, NULL, 4, '2026-10-01', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(463, 47, NULL, 4, '2026-10-02', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(464, 47, NULL, 4, '2026-10-03', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(465, 47, NULL, 4, '2026-10-04', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(466, 47, NULL, 4, '2026-10-05', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(467, 47, NULL, 4, '2026-10-06', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(468, 47, NULL, 4, '2026-10-07', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(469, 47, NULL, 4, '2026-10-08', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(470, 47, NULL, 4, '2026-10-09', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(471, 47, NULL, 4, '2026-10-10', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(472, 47, NULL, 4, '2026-10-11', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(473, 47, NULL, 4, '2026-10-12', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(474, 47, NULL, 5, '2026-10-04', 4, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(475, 47, NULL, 5, '2026-10-09', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(476, 47, NULL, 5, '2026-10-10', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(477, 47, NULL, 5, '2026-10-11', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(478, 47, NULL, 5, '2026-10-12', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(479, 47, NULL, 7, '2026-10-01', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(480, 47, NULL, 7, '2026-10-02', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:56', '2026-10-12 05:45:56'),
(481, 47, NULL, 7, '2026-10-05', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(482, 47, NULL, 7, '2026-10-06', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(483, 47, NULL, 7, '2026-10-07', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(484, 47, NULL, 7, '2026-10-08', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(485, 47, NULL, 7, '2026-10-09', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(486, 47, NULL, 7, '2026-10-12', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(487, 47, NULL, 1, '2026-10-13', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(488, 47, NULL, 1, '2026-10-14', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(489, 47, NULL, 1, '2026-10-15', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(490, 47, NULL, 1, '2026-10-16', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(491, 47, NULL, 1, '2026-10-19', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(492, 47, NULL, 1, '2026-10-20', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(493, 47, NULL, 1, '2026-10-21', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(494, 47, NULL, 1, '2026-10-22', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(495, 47, NULL, 1, '2026-10-23', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(496, 47, NULL, 1, '2026-10-26', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(497, 47, NULL, 1, '2026-10-27', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(498, 47, NULL, 1, '2026-10-28', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(499, 47, NULL, 1, '2026-10-29', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(500, 47, NULL, 1, '2026-10-30', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(501, 47, NULL, 3, '2026-10-13', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(502, 47, NULL, 3, '2026-10-14', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(503, 47, NULL, 3, '2026-10-15', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(504, 47, NULL, 3, '2026-10-16', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(505, 47, NULL, 3, '2026-10-17', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(506, 47, NULL, 3, '2026-10-18', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(507, 47, NULL, 3, '2026-10-19', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(508, 47, NULL, 3, '2026-10-20', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(509, 47, NULL, 3, '2026-10-21', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(510, 47, NULL, 3, '2026-10-22', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(511, 47, NULL, 3, '2026-10-23', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(512, 47, NULL, 3, '2026-10-24', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(513, 47, NULL, 3, '2026-10-25', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(514, 47, NULL, 3, '2026-10-26', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(515, 47, NULL, 3, '2026-10-27', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(516, 47, NULL, 3, '2026-10-28', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(517, 47, NULL, 3, '2026-10-29', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(518, 47, NULL, 3, '2026-10-30', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(519, 47, NULL, 3, '2026-10-31', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(520, 47, NULL, 4, '2026-10-13', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(521, 47, NULL, 4, '2026-10-14', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(522, 47, NULL, 4, '2026-10-15', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(523, 47, NULL, 4, '2026-10-16', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(524, 47, NULL, 4, '2026-10-17', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(525, 47, NULL, 4, '2026-10-18', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(526, 47, NULL, 4, '2026-10-19', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(527, 47, NULL, 4, '2026-10-20', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(528, 47, NULL, 4, '2026-10-21', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(529, 47, NULL, 4, '2026-10-22', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(530, 47, NULL, 4, '2026-10-23', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(531, 47, NULL, 4, '2026-10-24', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(532, 47, NULL, 4, '2026-10-25', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(533, 47, NULL, 4, '2026-10-26', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(534, 47, NULL, 4, '2026-10-27', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(535, 47, NULL, 4, '2026-10-28', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(536, 47, NULL, 4, '2026-10-29', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(537, 47, NULL, 4, '2026-10-30', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(538, 47, NULL, 4, '2026-10-31', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(539, 47, NULL, 5, '2026-10-13', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(540, 47, NULL, 5, '2026-10-14', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(541, 47, NULL, 5, '2026-10-15', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(542, 47, NULL, 5, '2026-10-16', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(543, 47, NULL, 5, '2026-10-17', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(544, 47, NULL, 5, '2026-10-18', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(545, 47, NULL, 5, '2026-10-19', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(546, 47, NULL, 5, '2026-10-20', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(547, 47, NULL, 5, '2026-10-21', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(548, 47, NULL, 5, '2026-10-22', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(549, 47, NULL, 5, '2026-10-23', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(550, 47, NULL, 5, '2026-10-24', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(551, 47, NULL, 5, '2026-10-25', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(552, 47, NULL, 5, '2026-10-26', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(553, 47, NULL, 5, '2026-10-27', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(554, 47, NULL, 5, '2026-10-28', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(555, 47, NULL, 5, '2026-10-29', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(556, 47, NULL, 5, '2026-10-30', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(557, 47, NULL, 5, '2026-10-31', 1, 45, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(558, 47, NULL, 7, '2026-10-13', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(559, 47, NULL, 7, '2026-10-14', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(560, 47, NULL, 7, '2026-10-15', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(561, 47, NULL, 7, '2026-10-16', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(562, 47, NULL, 7, '2026-10-19', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(563, 47, NULL, 7, '2026-10-20', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(564, 47, NULL, 7, '2026-10-21', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(565, 47, NULL, 7, '2026-10-22', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(566, 47, NULL, 7, '2026-10-23', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(567, 47, NULL, 7, '2026-10-26', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(568, 47, NULL, 7, '2026-10-27', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(569, 47, NULL, 7, '2026-10-28', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(570, 47, NULL, 7, '2026-10-29', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57'),
(571, 47, NULL, 7, '2026-10-30', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, 50, 'alfa', 0, 'Otomatis dicatat alfa saat closing payroll (tidak hadir)', 0.00, 0.00, 50000.00, 50000.00, '2026-10-12 05:45:57', '2026-10-12 05:45:57');

-- --------------------------------------------------------

--
-- Table structure for table `lembur_pegawai`
--

CREATE TABLE `lembur_pegawai` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `absensi_id` bigint(20) UNSIGNED DEFAULT NULL,
  `tanggal_lembur` date NOT NULL,
  `jam_mulai` time NOT NULL,
  `jam_selesai` time NOT NULL,
  `durasi_jam` decimal(4,2) NOT NULL,
  `keterangan_tugas` text NOT NULL,
  `upah_per_jam` decimal(12,2) NOT NULL DEFAULT 0.00,
  `total_upah_lembur` decimal(12,2) NOT NULL DEFAULT 0.00,
  `status` enum('menunggu','disetujui','ditolak') NOT NULL DEFAULT 'menunggu',
  `approval_step_current` tinyint(3) UNSIGNED NOT NULL DEFAULT 1,
  `approval_step_total` tinyint(3) UNSIGNED NOT NULL DEFAULT 0,
  `catatan_approval` text DEFAULT NULL,
  `disetujui_oleh_pegawai_id` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `lembur_pegawai`
--

INSERT INTO `lembur_pegawai` (`id`, `pegawai_id`, `absensi_id`, `tanggal_lembur`, `jam_mulai`, `jam_selesai`, `durasi_jam`, `keterangan_tugas`, `upah_per_jam`, `total_upah_lembur`, `status`, `approval_step_current`, `approval_step_total`, `catatan_approval`, `disetujui_oleh_pegawai_id`, `created_at`, `updated_at`) VALUES
(1, 3, NULL, '2026-10-04', '18:00:00', '21:00:00', 3.00, 'Perbaikan hotfix integrasi geofencing GPS mobile absensi release v1.0.5', 75000.00, 225000.00, 'disetujui', 1, 0, NULL, 2, '2026-10-04 18:43:37', '2026-10-04 18:43:37'),
(2, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:46:23', '2026-10-05 04:46:23'),
(3, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:47:23', '2026-10-05 04:47:23'),
(4, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:47:53', '2026-10-05 04:47:53'),
(5, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:48:03', '2026-10-05 04:48:03'),
(6, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:51:17', '2026-10-05 04:51:17'),
(7, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:57:31', '2026-10-05 04:57:31'),
(8, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:58:10', '2026-10-05 04:58:10'),
(9, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:59:39', '2026-10-05 04:59:39'),
(10, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 05:01:12', '2026-10-05 05:01:12'),
(11, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 05:08:43', '2026-10-05 05:08:43'),
(12, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:42:10', '2026-10-05 06:42:10'),
(13, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:43:09', '2026-10-05 06:43:09'),
(14, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:43:28', '2026-10-05 06:43:28'),
(15, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:43:53', '2026-10-05 06:43:53'),
(16, 3, NULL, '2026-10-05', '17:30:00', '20:30:00', 3.00, 'Penyelesaian sprint closing database absensi', 75000.00, 225000.00, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:44:33', '2026-10-05 06:44:33');

-- --------------------------------------------------------

--
-- Table structure for table `lokasi_absensi`
--

CREATE TABLE `lokasi_absensi` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kode_lokasi` varchar(30) NOT NULL,
  `nama_lokasi` varchar(100) NOT NULL,
  `alamat` text NOT NULL,
  `latitude` decimal(10,7) NOT NULL,
  `longitude` decimal(10,7) NOT NULL,
  `radius_meter` int(10) UNSIGNED NOT NULL DEFAULT 50 COMMENT 'Radius toleransi dalam meter',
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `lokasi_absensi`
--

INSERT INTO `lokasi_absensi` (`id`, `kode_lokasi`, `nama_lokasi`, `alamat`, `latitude`, `longitude`, `radius_meter`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 'LOC-HQ', 'Kantor Pusat Jakarta', 'Gedung Menara Sudirman Lt. 18, Jl. Jend. Sudirman Kav. 60, Jakarta Selatan', -6.2255880, 106.8093120, 100, 1, '2026-10-04 18:43:36', '2026-10-04 18:43:36'),
(2, 'LOC-BDG', 'Hub Digital Bandung', 'Jl. Ir. H. Juanda No. 108, Dago, Bandung', -7.1959090, 113.2444780, 100, 1, '2026-10-04 18:43:36', '2026-10-04 19:27:29'),
(45, 'PMD1', 'Jl. Pemuda', 'Pemuda, Simpang Kiri, Subulussalam, Aceh, 24782, Indonesia', -7.1979470, 113.2494790, 100, 1, '2026-10-05 18:20:51', '2026-10-05 18:22:57'),
(46, 'pdam-s', 'PDAM Sampang', 'PDAM, Jalan Rajawali, Sampang, East Java, 69211, Indonesia', -7.1959090, 113.2444780, 100, 1, '2026-10-06 02:17:57', '2026-10-06 02:17:57');

-- --------------------------------------------------------

--
-- Table structure for table `migrations`
--

CREATE TABLE `migrations` (
  `id` int(10) UNSIGNED NOT NULL,
  `migration` varchar(255) NOT NULL,
  `batch` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `migrations`
--

INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES
(1, '0001_01_01_000000_create_users_table', 1),
(2, '0001_01_01_000001_create_cache_table', 1),
(3, '0001_01_01_000002_create_jobs_table', 1),
(4, '2026_10_05_000001_create_master_kepegawaian_tables', 1),
(5, '2026_10_05_000002_create_pengaturan_absensi_tables', 1),
(6, '2026_10_05_000003_create_pegawai_and_pendidikan_tables', 1),
(7, '2026_10_05_000004_create_kenaikan_pangkat_tables', 1),
(8, '2026_10_05_000005_create_penjadwalan_kerja_table', 1),
(9, '2026_10_05_000006_create_absensi_and_revisi_tables', 1),
(10, '2026_10_05_000007_create_pengajuan_dan_laporan_tables', 1),
(11, '2026_10_05_000008_update_jam_kerja_and_denda_structure', 1),
(12, '2026_10_05_000009_add_flagging_denda_to_pegawai_and_denda_table', 2),
(13, '2026_10_05_000010_update_relasi_denda_absensi_dan_kunci_laporan', 3),
(14, '2026_10_05_024034_add_token_to_sesi_perangkat_table', 4),
(15, '2026_10_05_030000_create_api_keys_table', 5),
(16, '2026_10_05_040000_add_dokumen_surat_tugas_to_kunjungan_dinas', 6),
(17, '2026_10_05_050000_add_batasi_absen_to_jam_kerja_table', 7),
(18, '2026_10_05_060000_create_pengaturan_lembur_table', 8),
(19, '2026_10_06_000001_add_face_recognition_to_pegawai_and_absensi', 9),
(20, '2026_10_06_000002_add_wajib_face_recognition_to_pegawai_table', 10),
(21, '2026_10_06_100000_create_penggajian_tables', 11),
(22, '2026_10_06_110000_create_pengajuan_masalah_table', 12),
(23, '2026_10_06_120000_create_roles_and_permissions_tables', 13),
(24, '2026_10_06_141210_add_bank_account_columns_to_pegawai_table', 14),
(25, '2026_10_06_000003_add_istirahat_to_absensi_table', 15),
(26, '2026_10_07_000001_create_penugasan_tables', 16),
(27, '2026_10_07_000002_add_dokumen_online_to_penugasan', 17),
(28, '2026_10_07_000003_add_tautan_eksternal_to_penugasan', 18),
(29, '2026_10_12_000001_add_denda_tidak_hadir_support', 19),
(30, '2026_10_12_000002_create_approval_bertingkat_tables', 20),
(31, '2026_10_12_000003_create_pengumuman_tables', 21),
(32, '2026_10_12_000004_create_kuota_cuti_tables', 22),
(33, '2026_10_12_000005_create_reimbursement_tables', 23),
(34, '2026_10_12_000006_create_pengaturan_monitoring_table', 24),
(35, '2026_10_12_231129_create_pinjaman_pegawai_tables', 25),
(36, '2026_10_12_233500_update_kenaikan_pangkat_add_mutasi_promosi_fields', 26);

-- --------------------------------------------------------

--
-- Table structure for table `password_reset_tokens`
--

CREATE TABLE `password_reset_tokens` (
  `email` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `pegawai`
--

CREATE TABLE `pegawai` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `nip` varchar(50) NOT NULL,
  `nik` varchar(20) NOT NULL,
  `nama_lengkap` varchar(150) NOT NULL,
  `jenis_kelamin` enum('L','P') NOT NULL DEFAULT 'L',
  `tempat_lahir` varchar(100) DEFAULT NULL,
  `tanggal_lahir` date DEFAULT NULL,
  `agama` enum('Islam','Kristen','Katolik','Hindu','Buddha','Konghucu','Lainnya') NOT NULL DEFAULT 'Islam',
  `status_nikah` enum('belum_menikah','menikah','cerai') NOT NULL DEFAULT 'belum_menikah',
  `golongan_darah` varchar(5) DEFAULT NULL,
  `no_telepon` varchar(25) DEFAULT NULL,
  `email` varchar(100) NOT NULL,
  `alamat` text DEFAULT NULL,
  `foto_profil` varchar(255) DEFAULT NULL,
  `face_descriptor` longtext DEFAULT NULL COMMENT 'Array 128-float face embedding vector',
  `face_photo_path` varchar(255) DEFAULT NULL COMMENT 'Path foto pendaftaran wajah',
  `face_registered_at` timestamp NULL DEFAULT NULL,
  `nama_kontak_darurat` varchar(100) DEFAULT NULL,
  `hubungan_kontak_darurat` varchar(50) DEFAULT NULL,
  `telepon_kontak_darurat` varchar(25) DEFAULT NULL,
  `departemen_id` bigint(20) UNSIGNED NOT NULL,
  `divisi_id` bigint(20) UNSIGNED NOT NULL,
  `jabatan_id` bigint(20) UNSIGNED NOT NULL,
  `atasan_id` bigint(20) UNSIGNED DEFAULT NULL,
  `status_kerja` enum('tetap','kontrak','probation','magang') NOT NULL DEFAULT 'tetap',
  `tanggal_masuk` date NOT NULL,
  `tanggal_selesai_kontrak` date DEFAULT NULL,
  `gaji_pokok` decimal(14,2) NOT NULL DEFAULT 0.00,
  `nama_bank` varchar(50) DEFAULT NULL,
  `nomor_rekening` varchar(50) DEFAULT NULL,
  `atas_nama_rekening` varchar(150) DEFAULT NULL,
  `tipe_jadwal` enum('tetap','shift_rutin','fleksibel_roster') NOT NULL DEFAULT 'tetap',
  `lokasi_absensi_id` bigint(20) UNSIGNED DEFAULT NULL,
  `hari_kerja_id` bigint(20) UNSIGNED DEFAULT NULL,
  `ijinkan_wfa` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Jika true, toleransi absensi di luar geofence',
  `kunci_perangkat` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Single device lock untuk mencegah titip absen',
  `wajib_face_recognition` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Saklar On/Off Face Recognition khusus per Pegawai',
  `flag_denda` enum('aktif','bebas_denda','hanya_masuk','hanya_pulang') NOT NULL DEFAULT 'aktif' COMMENT 'Flagging pengenaan denda pada pegawai',
  `golongan_denda` varchar(50) NOT NULL DEFAULT 'Reguler' COMMENT 'Menentukan pegawai ini masuk ke skema/golongan denda mana',
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pegawai`
--

INSERT INTO `pegawai` (`id`, `user_id`, `nip`, `nik`, `nama_lengkap`, `jenis_kelamin`, `tempat_lahir`, `tanggal_lahir`, `agama`, `status_nikah`, `golongan_darah`, `no_telepon`, `email`, `alamat`, `foto_profil`, `face_descriptor`, `face_photo_path`, `face_registered_at`, `nama_kontak_darurat`, `hubungan_kontak_darurat`, `telepon_kontak_darurat`, `departemen_id`, `divisi_id`, `jabatan_id`, `atasan_id`, `status_kerja`, `tanggal_masuk`, `tanggal_selesai_kontrak`, `gaji_pokok`, `nama_bank`, `nomor_rekening`, `atas_nama_rekening`, `tipe_jadwal`, `lokasi_absensi_id`, `hari_kerja_id`, `ijinkan_wfa`, `kunci_perangkat`, `wajib_face_recognition`, `flag_denda`, `golongan_denda`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 3, 'NIP-2020-001', '3171011204850001', 'Budi Santoso, M.Kom', 'L', 'Jakarta', '1985-04-12', 'Islam', 'menikah', 'O', '081288990011', 'budi.santoso@smartpresensi.com', 'Jl. Tebet Barat Raya No. 45, Jakarta Selatan', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, 1, 2, NULL, 'tetap', '2020-01-02', NULL, 7500000.00, 'BCA', '7310567890', 'Budi Santoso, M.Kom', 'tetap', 2, 1, 0, 1, 1, 'hanya_masuk', 'Shift', 1, '2026-10-04 18:43:36', '2026-10-13 05:57:37'),
(2, 4, 'NIP-2021-015', '3273011508890002', 'Ahmad Fauzi, S.T', 'L', 'Bandung', '1989-08-15', 'Islam', 'menikah', 'A', '081399887722', 'ahmad.fauzi@smartpresensi.com', 'Jl. Kebon Jeruk No. 12, Jakarta Barat', NULL, '[-0.1618935465812683,0.10575945675373077,0.046488530933856964,-0.038299016654491425,-0.019882261753082275,-0.046086300164461136,-0.1041075736284256,-0.1633165329694748,0.13544690608978271,-0.09817008674144745,0.21038517355918884,-0.0029864441603422165,-0.2275870442390442,-0.12920626997947693,-0.022680295631289482,0.1772799789905548,-0.12202762812376022,-0.1255549192428589,0.01965472847223282,-0.07802718877792358,0.10147231072187424,-0.05437111109495163,0.013258138671517372,0.08045004308223724,-0.12135981023311615,-0.3759269416332245,-0.10252980142831802,-0.1254996359348297,-0.018231358379125595,-0.057205431163311005,-0.004049092996865511,-0.04730864614248276,-0.17988398671150208,-0.02535971626639366,0.009088326245546341,0.09718378633260727,-0.0007686316384933889,0.0011311735725030303,0.18880294263362885,0.0021153399720788,-0.1875057816505432,-0.055771827697753906,0.02829740196466446,0.24668513238430023,0.15362021327018738,0.06707913428544998,0.08318914473056793,-0.032988134771585464,0.10329212993383408,-0.19574818015098572,0.1132221594452858,0.09692661464214325,0.10198026150465012,0.05339467152953148,0.026250001043081284,-0.15574641525745392,-0.021188437938690186,0.13845239579677582,-0.23350167274475098,0.1037646159529686,0.06905263662338257,-0.103723905980587,-0.09603380411863327,0.035140227526426315,0.2708812654018402,0.15606455504894257,-0.2003818303346634,-0.11613151431083679,0.17736205458641052,-0.13822630047798157,0.0039544119499623775,0.03038743883371353,-0.13589806854724884,-0.22763536870479584,-0.32578858733177185,0.13076089322566986,0.4209018349647522,0.13236653804779053,-0.19236308336257935,-0.037804704159498215,-0.04715171828866005,0.025835281237959862,0.10476767271757126,0.12885266542434692,-0.009006784297525883,0.021585533395409584,-0.056695204228162766,0.01851641573011875,0.13552765548229218,0.013444489799439907,-0.06762447953224182,0.2337849885225296,-0.046168506145477295,0.06788093596696854,-0.023208891972899437,0.14546817541122437,-0.10726378113031387,-0.026261627674102783,-0.10904283821582794,-0.04402140900492668,0.044911473989486694,0.009075906127691269,0.042113471776247025,0.11080510914325714,-0.14119216799736023,0.13766923546791077,-0.01838294044137001,-0.0022808958310633898,-0.048661138862371445,0.056593235582113266,-0.1289265751838684,-0.09867299348115921,0.09811768680810928,-0.20633941888809204,0.20782582461833954,0.2115626037120819,0.05964119732379913,0.15712156891822815,0.08972399681806564,0.029188968241214752,0.0848766639828682,-0.0794760212302208,-0.14683464169502258,-0.045979056507349014,0.051654502749443054,-0.017874130979180336,0.079783596098423,-3.100002140854485e-5]', 'face_master/master_face_2_20261007_154728_J7PnG2.jpg', '2026-10-07 08:47:28', NULL, NULL, NULL, 3, 1, 2, 1, 'tetap', '2021-03-01', NULL, 28000000.00, NULL, NULL, NULL, 'tetap', 45, 1, 1, 0, 1, 'aktif', 'Reguler', 1, '2026-10-04 18:43:37', '2026-10-13 01:16:27'),
(3, 5, 'NIP-2022-042', '3174092002950003', 'Rizky Pratama', 'L', 'Bogor', '1995-02-20', 'Islam', 'belum_menikah', 'B', '081211223344', 'rizky.pratama@smartpresensi.com', 'Jl. Margonda Raya No. 102, Depok', NULL, '[-0.12891706824302673,0.08026883751153946,0.022047359496355057,-0.07592745870351791,-0.025848064571619034,-0.05655849352478981,-0.059992242604494095,-0.125355064868927,0.11806784570217133,-0.06785489618778229,0.25926730036735535,-0.04868384450674057,-0.21028420329093933,-0.11827567964792252,0.03362823277711868,0.19270001351833344,-0.16787467896938324,-0.10836178064346313,-0.04603147506713867,-0.0813099667429924,0.030580054968595505,-0.030384458601474762,0.0014757391763851047,0.10282959789037704,-0.14034579694271088,-0.35453248023986816,-0.09135455638170242,-0.14113199710845947,0.02342679724097252,-0.06450973451137543,-0.037128813564777374,-0.016614291816949844,-0.18117175996303558,-0.0976783037185669,0.06171471253037453,0.06865465641021729,-0.04180510342121124,-0.013064535334706306,0.19748643040657043,0.015597538091242313,-0.1596396267414093,-0.02702432870864868,0.06611968576908112,0.2771702706813812,0.17287327349185944,0.11368538439273834,0.051345132291316986,-0.05653651803731918,0.10092401504516602,-0.17852386832237244,0.0939103364944458,0.09248866885900497,0.07112075388431549,0.0818312019109726,-0.009252862073481083,-0.1594187319278717,0.015498245134949684,0.16358482837677002,-0.2646949291229248,0.1112603098154068,0.06872417032718658,-0.10676956921815872,-0.08453481644392014,0.0102680753916502,0.3149845004081726,0.10700099170207977,-0.20175319910049438,-0.10206346958875656,0.16777580976486206,-0.09195142239332199,-0.010693944059312344,0.03173345699906349,-0.16749286651611328,-0.2183142453432083,-0.3168467879295349,0.10704559832811356,0.4200022518634796,0.10542111843824387,-0.1894884705543518,-0.02525860071182251,-0.03743033856153488,-0.01400937233120203,0.11451872438192368,0.13775873184204102,-0.012738995254039764,-0.029510725289583206,-0.02789798192679882,0.028033534064888954,0.14744378626346588,0.015331871807575226,-0.04793480038642883,0.22307728230953217,-0.05903945118188858,0.05334984511137009,-0.00549361202865839,0.11680959910154343,-0.1300991177558899,-0.025463048368692398,-0.11585147678852081,-0.07180549949407578,0.0632455050945282,-0.0014251188840717077,0.047507692128419876,0.13433371484279633,-0.14692215621471405,0.16913540661334991,0.010644657537341118,0.012457597069442272,-0.018850069493055344,0.040582966059446335,-0.0851362869143486,-0.10499071329832077,0.1183135062456131,-0.20647911727428436,0.22286875545978546,0.2245500534772873,0.09608223289251328,0.12578776478767395,0.07549674808979034,0.010166856460273266,0.0491485670208931,-0.023034727200865746,-0.20495255291461945,-0.013442379422485828,0.08483392000198364,-0.03693520277738571,0.13842956721782684,0.0015634080627933145]', 'face_master/master_face_3_20261013_085820_5eoaXH.jpg', '2026-10-13 01:58:20', 'Bambang Supriyanto', 'Ayah Kandung', '081344556677', 3, 2, 4, 5, 'tetap', '2022-06-15', NULL, 16500000.00, NULL, NULL, NULL, 'tetap', 2, 1, 0, 1, 1, 'aktif', 'Reguler', 1, '2026-10-04 18:43:37', '2026-10-13 02:03:01'),
(4, 6, 'NIP-2023-088', '3276020509980004', 'Dimas Wicaksono', 'L', 'Surabaya', '1998-09-05', 'Islam', 'belum_menikah', 'AB', '081255667788', 'dimas.wicaksono@smartpresensi.com', 'Jl. Cilandak KKO No. 33, Jakarta Selatan', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 3, 1, 5, 5, 'kontrak', '2023-08-01', '2027-07-31', 10500000.00, NULL, NULL, NULL, 'tetap', 1, 1, 0, 1, 1, 'aktif', 'Reguler', 1, '2026-10-04 18:43:37', '2026-10-13 01:24:10'),
(5, 8, '10001', '1029334874783334', 'Ikhlasul Amal', 'L', 'Sampang', '2026-10-05', 'Islam', 'belum_menikah', 'A', NULL, 'cemalanjello69@gmail.com', NULL, 'foto_pegawai/e4OWMJ3J99iKg5Av4bESpt74uBHtK38mfQ41dKRC.png', '[-0.14331230521202087,0.10676122456789017,0.05345233902335167,-0.012455062009394169,-0.019614363089203835,-0.02222921885550022,-0.09176471084356308,-0.1424754112958908,0.1677342802286148,-0.08620721846818924,0.2384483367204666,-0.013075103051960468,-0.17440663278102875,-0.12257423996925354,0.015614076517522335,0.20143671333789825,-0.13649871945381165,-0.1503252387046814,-0.02738981880247593,-0.10226710885763168,0.04661836475133896,-0.06362014263868332,-0.01712053455412388,0.09201885014772415,-0.1774814873933792,-0.33383381366729736,-0.05455528572201729,-0.14771577715873718,-0.011689419858157635,-0.09879949688911438,-0.0563572458922863,-0.0303158238530159,-0.18931235373020172,-0.04497525840997696,0.018240222707390785,0.07546906918287277,-0.02390757016837597,0.0036590436939150095,0.1901448667049408,0.013820803724229336,-0.1581057757139206,-0.0278706606477499,0.02168603055179119,0.2533063292503357,0.17473138868808746,0.06952075660228729,0.06812229007482529,-0.01112204696983099,0.10062330961227417,-0.19311676919460297,0.07639287412166595,0.08967603743076324,0.1425764411687851,0.053264640271663666,0.010449601337313652,-0.17384512722492218,-0.05364005267620087,0.11895880103111267,-0.24704931676387787,0.12319770455360413,0.06113725155591965,-0.11926503479480743,-0.13861465454101562,0.014869151636958122,0.2947298586368561,0.17453612387180328,-0.1959446519613266,-0.11634106189012527,0.1797846257686615,-0.09174264222383499,-0.0018611751729622483,0.013859902508556843,-0.1281711608171463,-0.24008634686470032,-0.31248000264167786,0.11655761301517487,0.40224897861480713,0.11107584089040756,-0.2359970510005951,-0.0336860716342926,-0.03541836142539978,0.0305690485984087,0.051988985389471054,0.11583516746759415,-0.03207745775580406,0.018059849739074707,-0.04029892757534981,0.021367555484175682,0.11337738484144211,0.02416323684155941,-0.04558136686682701,0.20591725409030914,-0.060379382222890854,0.024859145283699036,-0.03841182962059975,0.10637903213500977,-0.11171212792396545,-0.0164918415248394,-0.09460829943418503,-0.06553789228200912,0.04236243665218353,0.025003956630825996,0.0647776648402214,0.10148433595895767,-0.1384696513414383,0.15304945409297943,-0.018609238788485527,0.00869924109429121,-0.04915904626250267,0.08471963554620743,-0.11798974126577377,-0.0981559157371521,0.10433608293533325,-0.2317158281803131,0.18570202589035034,0.20546124875545502,0.05470512434840202,0.14891891181468964,0.06979866325855255,0.03373344987630844,0.07737027853727341,-0.0032854697201400995,-0.1654237061738968,-0.04248260334134102,0.04603938013315201,-0.038911014795303345,0.09427535533905029,0.03231160715222359]', 'face_master/master_face_5_20261006_015605_rN2Pdh.jpg', '2026-10-05 18:56:05', NULL, NULL, NULL, 1, 2, 5, 1, 'tetap', '2026-09-01', NULL, 5000000.00, NULL, NULL, NULL, 'fleksibel_roster', 45, 1, 0, 1, 1, 'aktif', 'Reguler', 1, '2026-10-05 06:49:57', '2026-10-13 01:31:02'),
(7, 10, '01032026', '0293387443311233', 'Ahmad Sahroni', 'L', 'Imam Bonjol', '2026-10-12', 'Islam', 'cerai', 'A', NULL, 'ahmadsahroni@gmail.com', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, 5, NULL, 'tetap', '2026-10-12', NULL, 0.00, NULL, NULL, NULL, 'tetap', 1, 1, 0, 1, 1, 'aktif', 'Reguler', 1, '2026-10-12 05:37:46', '2026-10-13 01:16:49');

-- --------------------------------------------------------

--
-- Table structure for table `pegawai_komponen_gaji`
--

CREATE TABLE `pegawai_komponen_gaji` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `komponen_gaji_id` bigint(20) UNSIGNED NOT NULL,
  `nominal` decimal(14,2) NOT NULL DEFAULT 0.00,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pegawai_komponen_gaji`
--

INSERT INTO `pegawai_komponen_gaji` (`id`, `pegawai_id`, `komponen_gaji_id`, `nominal`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 1, 3, 500000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(2, 1, 4, 600000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(3, 1, 5, 750000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(4, 1, 6, 65000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(5, 1, 7, 120000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(6, 2, 3, 500000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(7, 2, 4, 600000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(8, 2, 5, 750000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(9, 2, 6, 65000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(10, 2, 7, 120000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(11, 3, 3, 500000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(12, 3, 4, 600000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(13, 3, 5, 750000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(14, 3, 6, 65000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(15, 3, 7, 120000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(16, 4, 3, 500000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(17, 4, 4, 600000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(18, 4, 5, 750000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(19, 4, 6, 65000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(20, 4, 7, 120000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(21, 5, 3, 500000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(22, 5, 4, 600000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(23, 5, 5, 750000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(24, 5, 6, 65000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43'),
(25, 5, 7, 120000.00, 1, '2026-10-06 01:57:43', '2026-10-06 01:57:43');

-- --------------------------------------------------------

--
-- Table structure for table `pendidikan_pegawai`
--

CREATE TABLE `pendidikan_pegawai` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `jenjang` enum('SMA','SMK','D1','D2','D3','D4','S1','S2','S3') NOT NULL DEFAULT 'S1',
  `nama_institusi` varchar(150) NOT NULL,
  `jurusan` varchar(100) NOT NULL,
  `tahun_lulus` year(4) NOT NULL,
  `nilai_ipk` decimal(4,2) DEFAULT NULL,
  `berkas_ijazah` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pendidikan_pegawai`
--

INSERT INTO `pendidikan_pegawai` (`id`, `pegawai_id`, `jenjang`, `nama_institusi`, `jurusan`, `tahun_lulus`, `nilai_ipk`, `berkas_ijazah`, `created_at`, `updated_at`) VALUES
(1, 3, 'S1', 'Universitas Indonesia', 'Ilmu Komputer', '2017', 3.78, NULL, '2026-10-04 18:43:37', '2026-10-04 18:43:37'),
(2, 2, 'S1', 'Institut Teknologi Bandung', 'Teknik Informatika', '2011', 3.82, NULL, '2026-10-04 18:43:37', '2026-10-04 18:43:37'),
(3, 5, 'S1', 'Unira', 'Tehnik informasi', '2022', 3.80, NULL, '2026-10-05 06:49:57', '2026-10-05 06:49:57'),
(4, 7, 'S1', 'Universitas Trunojoyo', 'Tehnik informasi', '2018', 3.80, NULL, '2026-10-12 05:37:46', '2026-10-12 05:37:46');

-- --------------------------------------------------------

--
-- Table structure for table `pengajuan_izin`
--

CREATE TABLE `pengajuan_izin` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `jenis_izin` enum('cuti_tahunan','sakit','melahirkan','alasan_penting') NOT NULL DEFAULT 'cuti_tahunan',
  `tanggal_mulai` date NOT NULL,
  `tanggal_selesai` date NOT NULL,
  `total_hari` smallint(5) UNSIGNED NOT NULL DEFAULT 1,
  `alasan` text NOT NULL,
  `dokumen_pendukung` varchar(255) DEFAULT NULL COMMENT 'Surat dokter / bukti izin',
  `status` enum('menunggu','disetujui_atasan','disetujui_hrd','ditolak') NOT NULL DEFAULT 'menunggu',
  `approval_step_current` tinyint(3) UNSIGNED NOT NULL DEFAULT 1,
  `approval_step_total` tinyint(3) UNSIGNED NOT NULL DEFAULT 0,
  `disetujui_oleh_pegawai_id` bigint(20) UNSIGNED DEFAULT NULL,
  `catatan_approval` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pengajuan_izin`
--

INSERT INTO `pengajuan_izin` (`id`, `pegawai_id`, `jenis_izin`, `tanggal_mulai`, `tanggal_selesai`, `total_hari`, `alasan`, `dokumen_pendukung`, `status`, `approval_step_current`, `approval_step_total`, `disetujui_oleh_pegawai_id`, `catatan_approval`, `created_at`, `updated_at`) VALUES
(1, 4, 'sakit', '2026-10-05', '2026-10-06', 2, 'Demam tinggi dan radang tenggorokan sesuai rujukan dokter klinik', 'surat_dokter/surat_sakit_dimas.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-04 18:43:37', '2026-10-04 18:43:37'),
(2, 3, 'cuti_tahunan', '2026-10-10', '2026-10-12', 3, 'Keperluan keluarga di luar kota', NULL, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:47:52', '2026-10-05 04:47:52'),
(3, 3, 'cuti_tahunan', '2026-10-10', '2026-10-12', 3, 'Keperluan keluarga di luar kota', NULL, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:48:03', '2026-10-05 04:48:03'),
(4, 3, 'cuti_tahunan', '2026-10-10', '2026-10-12', 3, 'Keperluan keluarga di luar kota', NULL, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:51:17', '2026-10-05 04:51:17'),
(5, 3, 'cuti_tahunan', '2026-10-10', '2026-10-12', 3, 'Keperluan keluarga di luar kota', NULL, 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:57:31', '2026-10-05 04:57:31'),
(6, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791176379_1CRnjHYQ.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 04:59:39', '2026-10-05 04:59:39'),
(7, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791176407_eFNDTTIi.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 05:00:07', '2026-10-05 05:00:07'),
(8, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791176434_ZDhK4gbg.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 05:00:34', '2026-10-05 05:00:34'),
(9, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791176472_E6uiD6ZR.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 05:01:12', '2026-10-05 05:01:12'),
(10, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791176923_X23VrqJq.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 05:08:43', '2026-10-05 05:08:43'),
(11, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791182530_MicUuyBO.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:42:10', '2026-10-05 06:42:10'),
(12, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791182589_gpSexjWI.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:43:09', '2026-10-05 06:43:09'),
(13, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791182607_ex9dyDQv.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:43:27', '2026-10-05 06:43:27'),
(14, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791182633_BzQrgbUu.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:43:53', '2026-10-05 06:43:53'),
(15, 3, 'sakit', '2026-10-07', '2026-10-08', 2, 'Pemeriksaan rawat jalan dan istirahat dokter', 'dokumen_izin/izin_3_1791182673_uQSRogO2.pdf', 'menunggu', 1, 0, NULL, NULL, '2026-10-05 06:44:33', '2026-10-05 06:44:33'),
(41, 7, 'sakit', '2026-10-12', '2026-10-12', 1, 'fsafsadsfsadsa', NULL, 'menunggu', 1, 0, NULL, NULL, '2026-10-12 08:14:08', '2026-10-12 08:14:08'),
(42, 7, 'cuti_tahunan', '2026-10-12', '2026-10-12', 1, 'fsafsafsagafsaf', NULL, 'disetujui_hrd', 1, 0, 1, 'sagfsasfaf', '2026-10-12 08:16:16', '2026-10-12 08:16:37');

-- --------------------------------------------------------

--
-- Table structure for table `pengajuan_masalah`
--

CREATE TABLE `pengajuan_masalah` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nomor_tiket` varchar(60) NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `kategori_masalah` enum('gagal_absen_masuk','gagal_absen_pulang','gps_tidak_terdeteksi','kamera_face_error','sistem_error','lainnya') NOT NULL DEFAULT 'gagal_absen_masuk',
  `judul` varchar(150) NOT NULL,
  `tanggal_kejadian` date NOT NULL,
  `jam_kejadian` time DEFAULT NULL,
  `deskripsi` text NOT NULL,
  `foto_bukti` varchar(255) DEFAULT NULL COMMENT 'Screenshot atau bukti kendala',
  `status` enum('menunggu','diproses','selesai','ditolak') NOT NULL DEFAULT 'menunggu',
  `tindakan_admin` enum('koreksi_absensi','tambah_absensi','hanya_laporan','tidak_ada') DEFAULT NULL COMMENT 'koreksi_absensi: revisi absen ada, tambah_absensi: tambah absen baru, hanya_laporan: tanpa ubah absen',
  `absensi_id` bigint(20) UNSIGNED DEFAULT NULL,
  `catatan_admin` text DEFAULT NULL COMMENT 'Tanggapan / catatan verifikasi admin ke karyawan',
  `diproses_oleh_user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `tanggal_diproses` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `pengajuan_reimbursement`
--

CREATE TABLE `pengajuan_reimbursement` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nomor_pengajuan` varchar(50) NOT NULL COMMENT 'Nomor unik invoice klaim, contoh: RMB-202610-0001',
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `reimbursement_jenis_id` bigint(20) UNSIGNED NOT NULL,
  `tanggal_pengajuan` date NOT NULL COMMENT 'Tanggal form pengajuan dibuat',
  `tanggal_kuitansi` date NOT NULL COMMENT 'Tanggal transaksi kuitansi / nota bukti',
  `nominal` decimal(15,2) NOT NULL COMMENT 'Nominal biaya yang diajukan oleh karyawan',
  `nominal_disetujui` decimal(15,2) DEFAULT NULL COMMENT 'Nominal akhir yang disetujui setelah diverifikasi',
  `keterangan` text NOT NULL COMMENT 'Rincian atau alasan pengajuan klaim',
  `bukti_nota` varchar(255) DEFAULT NULL COMMENT 'Path file foto / berkas nota bukti transaksi',
  `status` enum('menunggu','disetujui','ditolak','dicairkan') NOT NULL DEFAULT 'menunggu' COMMENT 'Status siklus klaim',
  `approval_step_current` tinyint(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Urutan step approval yang sedang aktif',
  `approval_step_total` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Total step approval bertingkat (0 = langsung persetujuan admin)',
  `disetujui_oleh_id` bigint(20) UNSIGNED DEFAULT NULL,
  `catatan_admin` text DEFAULT NULL COMMENT 'Catatan verifikator / approver',
  `tanggal_approval` datetime DEFAULT NULL COMMENT 'Waktu keputusan approval',
  `tanggal_pencairan` datetime DEFAULT NULL COMMENT 'Waktu pembayaran / transfer dicairkan ke pegawai',
  `catatan_pencairan` text DEFAULT NULL COMMENT 'Bukti / referensi nomor transfer pencairan',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pengajuan_reimbursement`
--

INSERT INTO `pengajuan_reimbursement` (`id`, `nomor_pengajuan`, `pegawai_id`, `reimbursement_jenis_id`, `tanggal_pengajuan`, `tanggal_kuitansi`, `nominal`, `nominal_disetujui`, `keterangan`, `bukti_nota`, `status`, `approval_step_current`, `approval_step_total`, `disetujui_oleh_id`, `catatan_admin`, `tanggal_approval`, `tanggal_pencairan`, `catatan_pencairan`, `created_at`, `updated_at`) VALUES
(1, 'RMB-202610-0001', 1, 1, '2026-10-12', '2026-10-12', 350000.00, NULL, 'Klaim resep obat rawat jalan dan kacamata', NULL, 'menunggu', 1, 0, NULL, NULL, NULL, NULL, NULL, '2026-10-12 15:28:51', '2026-10-12 15:28:51'),
(2, 'RMB-202610-0002', 7, 2, '2026-10-12', '2026-10-12', 275000.00, 275000.00, 'Klaim bensin dan tol kunjungan dinas cabang', NULL, 'disetujui', 2, 2, NULL, 'Persetujuan finance selesai', '2026-10-12 22:29:11', NULL, NULL, '2026-10-12 15:29:11', '2026-10-12 15:29:11');

-- --------------------------------------------------------

--
-- Table structure for table `pengaturan_approval`
--

CREATE TABLE `pengaturan_approval` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `modul` varchar(50) NOT NULL,
  `nama_alur` varchar(100) NOT NULL,
  `is_bertingkat` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Jika false: langsung approval admin. Jika true: alur bertingkat mobile',
  `deskripsi` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pengaturan_approval`
--

INSERT INTO `pengaturan_approval` (`id`, `modul`, `nama_alur`, `is_bertingkat`, `deskripsi`, `created_at`, `updated_at`) VALUES
(1, 'izin', 'Alur Approval Izin Kerja', 1, 'Alur persetujuan permohonan izin tidak masuk kerja', '2026-10-12 05:50:59', '2026-10-12 08:06:25'),
(2, 'cuti', 'Alur Approval Cuti Karyawan', 1, 'Alur persetujuan permohonan cuti tahunan / melahirkan', '2026-10-12 05:50:59', '2026-10-12 08:14:49'),
(3, 'lembur', 'Alur Approval Lembur Pegawai', 0, 'Alur persetujuan surat perintah / permohonan kerja lembur', '2026-10-12 05:50:59', '2026-10-12 05:50:59'),
(4, 'dinas', 'Alur Approval Kunjungan Dinas', 0, 'Alur persetujuan tugas perjalanan dinas luar kantor', '2026-10-12 05:50:59', '2026-10-12 05:50:59'),
(5, 'reimbursement', 'Alur Approval Reimbursement', 1, 'Pengaturan persetujuan bertingkat modul klaim reimbursement', '2026-10-12 15:18:28', '2026-10-12 15:29:11');

-- --------------------------------------------------------

--
-- Table structure for table `pengaturan_approval_step`
--

CREATE TABLE `pengaturan_approval_step` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pengaturan_approval_id` bigint(20) UNSIGNED NOT NULL,
  `step_ke` tinyint(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Urutan step approval: 1, 2, 3...',
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `label_approver` varchar(100) DEFAULT NULL COMMENT 'Contoh: Atasan Langsung, Kepala Divisi, HR Manager',
  `keterangan` varchar(200) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pengaturan_approval_step`
--

INSERT INTO `pengaturan_approval_step` (`id`, `pengaturan_approval_id`, `step_ke`, `pegawai_id`, `label_approver`, `keterangan`, `created_at`, `updated_at`) VALUES
(5, 1, 1, 1, 'Chief Technology Officer', NULL, '2026-10-12 08:07:23', '2026-10-12 08:07:23'),
(6, 1, 2, 4, 'Junior Mobile Engineer', NULL, '2026-10-12 08:09:08', '2026-10-12 08:09:08'),
(7, 2, 1, 1, 'Chief Technology Officer', NULL, '2026-10-12 08:15:03', '2026-10-12 08:15:03'),
(8, 5, 1, 1, 'Atasan Langsung', NULL, '2026-10-12 15:29:11', '2026-10-12 15:29:11'),
(9, 5, 2, 2, 'Finance / HRD Manager', NULL, '2026-10-12 15:29:11', '2026-10-12 15:29:11');

-- --------------------------------------------------------

--
-- Table structure for table `pengaturan_lembur`
--

CREATE TABLE `pengaturan_lembur` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kode_aturan` varchar(30) NOT NULL,
  `nama_aturan` varchar(100) NOT NULL,
  `upah_per_jam` decimal(12,2) NOT NULL DEFAULT 75000.00,
  `tipe_hari` enum('semua_hari','hari_kerja','hari_libur') NOT NULL DEFAULT 'semua_hari',
  `pengali_hari_libur` decimal(4,2) NOT NULL DEFAULT 1.50 COMMENT 'Pengali upah jika lembur di hari libur',
  `keterangan` text DEFAULT NULL,
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pengaturan_lembur`
--

INSERT INTO `pengaturan_lembur` (`id`, `kode_aturan`, `nama_aturan`, `upah_per_jam`, `tipe_hari`, `pengali_hari_libur`, `keterangan`, `status_aktif`, `created_at`, `updated_at`) VALUES
(1, 'LMB-DEF', 'Tarif Lembur Standar Perusahaan', 5000.00, 'semua_hari', 1.00, 'Tarif standar kompensasi lembur karyawan per jam', 1, '2026-10-05 08:27:52', '2026-10-05 08:31:43');

-- --------------------------------------------------------

--
-- Table structure for table `pengaturan_monitoring`
--

CREATE TABLE `pengaturan_monitoring` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `fitur_absensi_bawahan_mobile` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Flag on/off fitur riwayat absensi bawahan untuk atasan di mobile app',
  `keterangan` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pengaturan_monitoring`
--

INSERT INTO `pengaturan_monitoring` (`id`, `fitur_absensi_bawahan_mobile`, `keterangan`, `created_at`, `updated_at`) VALUES
(1, 1, 'Konfigurasi akses fitur monitoring riwayat absensi bawahan oleh atasan di mobile', '2026-10-12 15:47:26', '2026-10-12 15:59:38');

-- --------------------------------------------------------

--
-- Table structure for table `penggajian`
--

CREATE TABLE `penggajian` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nomor_slip` varchar(60) NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `bulan` tinyint(4) NOT NULL COMMENT '1-12',
  `tahun` smallint(6) NOT NULL,
  `tanggal_hitung` date NOT NULL,
  `gaji_pokok` decimal(14,2) NOT NULL DEFAULT 0.00,
  `total_tunjangan` decimal(14,2) NOT NULL DEFAULT 0.00,
  `total_potongan` decimal(14,2) NOT NULL DEFAULT 0.00,
  `gaji_bersih` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT 'gaji_pokok + total_tunjangan - total_potongan',
  `total_jam_lembur` decimal(8,2) NOT NULL DEFAULT 0.00,
  `total_upah_lembur` decimal(14,2) NOT NULL DEFAULT 0.00,
  `total_menit_terlambat` int(11) NOT NULL DEFAULT 0,
  `total_denda_keterlambatan` decimal(14,2) NOT NULL DEFAULT 0.00,
  `total_denda_tidak_hadir` decimal(14,2) NOT NULL DEFAULT 0.00,
  `total_kehadiran` int(11) NOT NULL DEFAULT 0,
  `total_tidak_hadir` int(11) NOT NULL DEFAULT 0,
  `status_pembayaran` enum('draft','disetujui','dibayar') NOT NULL DEFAULT 'disetujui',
  `tanggal_bayar` date DEFAULT NULL,
  `metode_pembayaran` varchar(50) NOT NULL DEFAULT 'Transfer Bank',
  `catatan` text DEFAULT NULL,
  `user_id_pembuat` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `penggajian`
--

INSERT INTO `penggajian` (`id`, `nomor_slip`, `pegawai_id`, `bulan`, `tahun`, `tanggal_hitung`, `gaji_pokok`, `total_tunjangan`, `total_potongan`, `gaji_bersih`, `total_jam_lembur`, `total_upah_lembur`, `total_menit_terlambat`, `total_denda_keterlambatan`, `total_denda_tidak_hadir`, `total_kehadiran`, `total_tidak_hadir`, `status_pembayaran`, `tanggal_bayar`, `metode_pembayaran`, `catatan`, `user_id_pembuat`, `created_at`, `updated_at`) VALUES
(1, 'SLIP/202610/0001', 1, 10, 2026, '2026-10-12', 5000000.00, 1850000.00, 1135000.00, 5715000.00, 0.00, 0.00, 0, 0.00, 950000.00, 1, 19, 'disetujui', NULL, 'Transfer Bank', NULL, 1, '2026-10-06 02:04:10', '2026-10-12 05:43:55'),
(2, 'SLIP/202610/0002', 2, 10, 2026, '2026-10-06', 28000000.00, 1850000.00, 185000.00, 29665000.00, 0.00, 0.00, 0, 0.00, 0.00, 1, 0, 'disetujui', NULL, 'Transfer Bank', NULL, 1, '2026-10-06 02:04:10', '2026-10-06 02:04:10'),
(3, 'SLIP/202610/0003', 3, 10, 2026, '2026-10-12', 16500000.00, 2075000.00, 1965000.00, 16610000.00, 3.00, 225000.00, 346, 330000.00, 1450000.00, 1, 29, 'disetujui', NULL, 'Transfer Bank', NULL, 1, '2026-10-06 02:04:10', '2026-10-12 05:43:55'),
(4, 'SLIP/202610/0004', 4, 10, 2026, '2026-10-12', 10500000.00, 1850000.00, 1735000.00, 10615000.00, 0.00, 0.00, 0, 0.00, 1550000.00, 0, 31, 'disetujui', NULL, 'Transfer Bank', NULL, 1, '2026-10-06 02:04:10', '2026-10-12 05:43:55'),
(5, 'SLIP/202610/0005', 5, 10, 2026, '2026-10-12', 5000000.00, 1850000.00, 1585000.00, 5265000.00, 0.00, 0.00, 1276, 200000.00, 1200000.00, 4, 24, 'disetujui', '2026-10-06', 'Transfer Bank BCA', NULL, 1, '2026-10-06 02:04:10', '2026-10-12 05:43:55'),
(6, 'SLIP/202610/0007', 7, 10, 2026, '2026-10-12', 0.00, 0.00, 1100000.00, 0.00, 0.00, 0.00, 0, 0.00, 1100000.00, 0, 22, 'disetujui', NULL, 'Transfer Bank', NULL, 1, '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(7, 'SLIP/202611/0001', 1, 11, 2026, '2026-10-12', 5000000.00, 1850000.00, 1235000.00, 5615000.00, 0.00, 0.00, 0, 0.00, 0.00, 0, 0, 'disetujui', NULL, 'Transfer Bank', NULL, 1, '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(8, 'SLIP/202611/0005', 5, 11, 2026, '2026-10-12', 5000000.00, 1850000.00, 185000.00, 6665000.00, 0.00, 0.00, 0, 0.00, 0.00, 0, 0, 'disetujui', NULL, 'Transfer Bank', NULL, 1, '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(9, 'SLIP/202611/0007', 7, 11, 2026, '2026-10-12', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0, 0.00, 0.00, 0, 0, 'disetujui', NULL, 'Transfer Bank', NULL, 1, '2026-10-12 16:18:43', '2026-10-12 16:18:43');

-- --------------------------------------------------------

--
-- Table structure for table `penggajian_detail`
--

CREATE TABLE `penggajian_detail` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `penggajian_id` bigint(20) UNSIGNED NOT NULL,
  `komponen_gaji_id` bigint(20) UNSIGNED DEFAULT NULL,
  `nama_komponen` varchar(100) NOT NULL,
  `jenis` enum('tunjangan','potongan') NOT NULL,
  `tipe_nilai` enum('tetap','lembur_otomatis','denda_otomatis','denda_tidak_hadir_otomatis') NOT NULL DEFAULT 'tetap',
  `nominal` decimal(14,2) NOT NULL DEFAULT 0.00,
  `keterangan` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `penggajian_detail`
--

INSERT INTO `penggajian_detail` (`id`, `penggajian_id`, `komponen_gaji_id`, `nama_komponen`, `jenis`, `tipe_nilai`, `nominal`, `keterangan`, `created_at`, `updated_at`) VALUES
(32, 2, 3, 'Tunjangan Transportasi', 'tunjangan', 'tetap', 500000.00, 'Tunjangan transportasi bulanan tetap', '2026-10-06 02:09:49', '2026-10-06 02:09:49'),
(33, 2, 4, 'Uang Makan Bulanan', 'tunjangan', 'tetap', 600000.00, 'Subsidi uang makan karyawan per bulan', '2026-10-06 02:09:49', '2026-10-06 02:09:49'),
(34, 2, 5, 'Tunjangan Jabatan', 'tunjangan', 'tetap', 750000.00, 'Tunjangan fungsional jabatan', '2026-10-06 02:09:49', '2026-10-06 02:09:49'),
(35, 2, 6, 'Iuran BPJS Kesehatan', 'potongan', 'tetap', 65000.00, 'Potongan wajib iuran BPJS Kesehatan bulanan', '2026-10-06 02:09:49', '2026-10-06 02:09:49'),
(36, 2, 7, 'Iuran BPJS Ketenagakerjaan (JHT)', 'potongan', 'tetap', 120000.00, 'Potongan Jaminan Hari Tua Ketenagakerjaan bulanan', '2026-10-06 02:09:49', '2026-10-06 02:09:49'),
(80, 1, 8, 'Potongan Denda Tidak Hadir (Alfa)', 'potongan', 'denda_tidak_hadir_otomatis', 950000.00, 'Akumulasi tidak hadir 19 hari tanpa keterangan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(81, 1, 3, 'Tunjangan Transportasi', 'tunjangan', 'tetap', 500000.00, 'Tunjangan transportasi bulanan tetap', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(82, 1, 4, 'Uang Makan Bulanan', 'tunjangan', 'tetap', 600000.00, 'Subsidi uang makan karyawan per bulan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(83, 1, 5, 'Tunjangan Jabatan', 'tunjangan', 'tetap', 750000.00, 'Tunjangan fungsional jabatan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(84, 1, 6, 'Iuran BPJS Kesehatan', 'potongan', 'tetap', 65000.00, 'Potongan wajib iuran BPJS Kesehatan bulanan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(85, 1, 7, 'Iuran BPJS Ketenagakerjaan (JHT)', 'potongan', 'tetap', 120000.00, 'Potongan Jaminan Hari Tua Ketenagakerjaan bulanan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(86, 3, 1, 'Upah Lembur Karyawan', 'tunjangan', 'lembur_otomatis', 225000.00, 'Total lembur 3 jam (disetujui)', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(87, 3, 2, 'Potongan Denda Keterlambatan', 'potongan', 'denda_otomatis', 330000.00, 'Akumulasi keterlambatan 346 menit', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(88, 3, 8, 'Potongan Denda Tidak Hadir (Alfa)', 'potongan', 'denda_tidak_hadir_otomatis', 1450000.00, 'Akumulasi tidak hadir 29 hari tanpa keterangan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(89, 3, 3, 'Tunjangan Transportasi', 'tunjangan', 'tetap', 500000.00, 'Tunjangan transportasi bulanan tetap', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(90, 3, 4, 'Uang Makan Bulanan', 'tunjangan', 'tetap', 600000.00, 'Subsidi uang makan karyawan per bulan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(91, 3, 5, 'Tunjangan Jabatan', 'tunjangan', 'tetap', 750000.00, 'Tunjangan fungsional jabatan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(92, 3, 6, 'Iuran BPJS Kesehatan', 'potongan', 'tetap', 65000.00, 'Potongan wajib iuran BPJS Kesehatan bulanan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(93, 3, 7, 'Iuran BPJS Ketenagakerjaan (JHT)', 'potongan', 'tetap', 120000.00, 'Potongan Jaminan Hari Tua Ketenagakerjaan bulanan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(94, 4, 8, 'Potongan Denda Tidak Hadir (Alfa)', 'potongan', 'denda_tidak_hadir_otomatis', 1550000.00, 'Akumulasi tidak hadir 31 hari tanpa keterangan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(95, 4, 3, 'Tunjangan Transportasi', 'tunjangan', 'tetap', 500000.00, 'Tunjangan transportasi bulanan tetap', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(96, 4, 4, 'Uang Makan Bulanan', 'tunjangan', 'tetap', 600000.00, 'Subsidi uang makan karyawan per bulan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(97, 4, 5, 'Tunjangan Jabatan', 'tunjangan', 'tetap', 750000.00, 'Tunjangan fungsional jabatan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(98, 4, 6, 'Iuran BPJS Kesehatan', 'potongan', 'tetap', 65000.00, 'Potongan wajib iuran BPJS Kesehatan bulanan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(99, 4, 7, 'Iuran BPJS Ketenagakerjaan (JHT)', 'potongan', 'tetap', 120000.00, 'Potongan Jaminan Hari Tua Ketenagakerjaan bulanan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(100, 5, 2, 'Potongan Denda Keterlambatan', 'potongan', 'denda_otomatis', 200000.00, 'Akumulasi keterlambatan 1276 menit', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(101, 5, 8, 'Potongan Denda Tidak Hadir (Alfa)', 'potongan', 'denda_tidak_hadir_otomatis', 1200000.00, 'Akumulasi tidak hadir 24 hari tanpa keterangan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(102, 5, 3, 'Tunjangan Transportasi', 'tunjangan', 'tetap', 500000.00, 'Tunjangan transportasi bulanan tetap', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(103, 5, 4, 'Uang Makan Bulanan', 'tunjangan', 'tetap', 600000.00, 'Subsidi uang makan karyawan per bulan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(104, 5, 5, 'Tunjangan Jabatan', 'tunjangan', 'tetap', 750000.00, 'Tunjangan fungsional jabatan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(105, 5, 6, 'Iuran BPJS Kesehatan', 'potongan', 'tetap', 65000.00, 'Potongan wajib iuran BPJS Kesehatan bulanan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(106, 5, 7, 'Iuran BPJS Ketenagakerjaan (JHT)', 'potongan', 'tetap', 120000.00, 'Potongan Jaminan Hari Tua Ketenagakerjaan bulanan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(107, 6, 8, 'Potongan Denda Tidak Hadir (Alfa)', 'potongan', 'denda_tidak_hadir_otomatis', 1100000.00, 'Akumulasi tidak hadir 22 hari tanpa keterangan', '2026-10-12 05:43:55', '2026-10-12 05:43:55'),
(108, 7, 3, 'Tunjangan Transportasi', 'tunjangan', 'tetap', 500000.00, 'Tunjangan transportasi bulanan tetap', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(109, 7, 4, 'Uang Makan Bulanan', 'tunjangan', 'tetap', 600000.00, 'Subsidi uang makan karyawan per bulan', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(110, 7, 5, 'Tunjangan Jabatan', 'tunjangan', 'tetap', 750000.00, 'Tunjangan fungsional jabatan', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(111, 7, 6, 'Iuran BPJS Kesehatan', 'potongan', 'tetap', 65000.00, 'Potongan wajib iuran BPJS Kesehatan bulanan', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(112, 7, 7, 'Iuran BPJS Ketenagakerjaan (JHT)', 'potongan', 'tetap', 120000.00, 'Potongan Jaminan Hari Tua Ketenagakerjaan bulanan', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(113, 7, NULL, 'Potongan Pinjaman Pegawai (PINJ/202610/0001)', 'potongan', 'tetap', 1050000.00, 'Cicilan pinjaman pegawai dipotong otomatis dari slip gaji (PINJ/202610/0001)', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(114, 8, 3, 'Tunjangan Transportasi', 'tunjangan', 'tetap', 500000.00, 'Tunjangan transportasi bulanan tetap', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(115, 8, 4, 'Uang Makan Bulanan', 'tunjangan', 'tetap', 600000.00, 'Subsidi uang makan karyawan per bulan', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(116, 8, 5, 'Tunjangan Jabatan', 'tunjangan', 'tetap', 750000.00, 'Tunjangan fungsional jabatan', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(117, 8, 6, 'Iuran BPJS Kesehatan', 'potongan', 'tetap', 65000.00, 'Potongan wajib iuran BPJS Kesehatan bulanan', '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(118, 8, 7, 'Iuran BPJS Ketenagakerjaan (JHT)', 'potongan', 'tetap', 120000.00, 'Potongan Jaminan Hari Tua Ketenagakerjaan bulanan', '2026-10-12 16:18:43', '2026-10-12 16:18:43');

-- --------------------------------------------------------

--
-- Table structure for table `pengumuman`
--

CREATE TABLE `pengumuman` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `judul` varchar(200) NOT NULL,
  `ringkasan` varchar(255) DEFAULT NULL,
  `konten` longtext NOT NULL,
  `tipe` enum('informasi','penting','mendesak','acara') NOT NULL DEFAULT 'informasi',
  `target_audience` enum('semua','spesifik') NOT NULL DEFAULT 'semua',
  `gambar` varchar(255) DEFAULT NULL COMMENT 'Path flyer atau banner ilustrasi',
  `lampiran_dokumen` varchar(255) DEFAULT NULL COMMENT 'Path berkas surat edaran / PDF',
  `tanggal_mulai` date NOT NULL,
  `tanggal_selesai` date DEFAULT NULL,
  `is_pinned` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Sematkan pengumuman di urutan teratas',
  `is_aktif` tinyint(1) NOT NULL DEFAULT 1,
  `created_by_user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pengumuman`
--

INSERT INTO `pengumuman` (`id`, `judul`, `ringkasan`, `konten`, `tipe`, `target_audience`, `gambar`, `lampiran_dokumen`, `tanggal_mulai`, `tanggal_selesai`, `is_pinned`, `is_aktif`, `created_by_user_id`, `created_at`, `updated_at`) VALUES
(1, 'Pemberitahuan Kebijakan Jam Kerja & Presensi Digital Terintegrasi', 'Mulai tanggal 12 Oktober 2026, seluruh presensi wajib menggunakan aplikasi mobile Smart Presensi dengan verifikasi GPS.', 'Yth. Seluruh Karyawan & Staf Perusahaan,\n\nDalam rangka meningkatkan efisiensi operasional dan akurasi pencatatan kehadiran, manajemen memberlakukan kebijakan baru terkait presensi kehadiran digital berbasis GPS dan foto selfie.\n\nBeberapa poin penting:\n1. Setiap karyawan diharapkan melakukan clock-in sebelum batas toleransi jam kerja.\n2. Keterlambatan dan ketidakhadiran tanpa keterangan akan terhitung denda sesuai regulasi perusahaan.\n3. Pengajuan izin, cuti, dinas luar, dan lembur dapat dilakukan langsung melalui aplikasi mobile.\n\nDemikian pengumuman ini disampaikan untuk menjadi perhatian bersama. Terima kasih atas kerja sama dan dedikasi rekan-rekan sekalian.\n\nSalam,\nManajemen HRD', 'penting', 'semua', NULL, NULL, '2026-10-11', '2026-11-11', 1, 1, 1, '2026-10-12 07:41:09', '2026-10-12 07:41:09'),
(2, 'Undangan Briefing Khusus Evaluasi Operasional & Penugasan Kuartal 4', 'Diharapkan hadir pada rapat koordinasi internal divisi operasional hari Kamis pukul 09.00 WIB di Ruang Rapat Utama.', 'Halo Rekan-rekan Tim Terpilih,\n\nAnda diundang untuk menghadiri pertemuan koordinasi khusus mengenai tindak lanjut penugasan kerja dan evaluasi KPI kuartal 4.\n\nJadwal:\n- Hari/Tanggal: Kamis, 15 Oktober 2026\n- Waktu: 09:00 - 11:30 WIB\n- Tempat: Ruang Rapat Eksekutif Lt. 2\n\nHarap membawa laporan progres penugasan masing-masing. Terima kasih atas perhatian dan kehadirannya tepat waktu.\n\nSalam,\nKepala Divisi', 'acara', 'spesifik', NULL, NULL, '2026-10-12', '2026-10-26', 0, 1, 1, '2026-10-12 07:41:09', '2026-10-12 07:41:09');

-- --------------------------------------------------------

--
-- Table structure for table `pengumuman_pegawai`
--

CREATE TABLE `pengumuman_pegawai` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pengumuman_id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `is_dibaca` tinyint(1) NOT NULL DEFAULT 0,
  `dibaca_pada` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pengumuman_pegawai`
--

INSERT INTO `pengumuman_pegawai` (`id`, `pengumuman_id`, `pegawai_id`, `is_dibaca`, `dibaca_pada`, `created_at`, `updated_at`) VALUES
(1, 2, 1, 1, '2026-10-12 07:43:52', '2026-10-12 07:41:09', '2026-10-12 07:43:52'),
(2, 2, 3, 0, NULL, '2026-10-12 07:41:09', '2026-10-12 07:41:09'),
(3, 1, 1, 1, '2026-10-12 07:43:50', '2026-10-12 07:41:45', '2026-10-12 07:43:50'),
(4, 1, 7, 1, '2026-10-12 08:05:45', '2026-10-12 08:05:45', '2026-10-12 08:05:45'),
(5, 1, 2, 1, '2026-10-12 16:03:06', '2026-10-12 16:03:06', '2026-10-12 16:03:06'),
(6, 1, 5, 1, '2026-10-13 01:23:23', '2026-10-13 01:23:23', '2026-10-13 01:23:23');

-- --------------------------------------------------------

--
-- Table structure for table `penjadwalan_kerja`
--

CREATE TABLE `penjadwalan_kerja` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `tanggal` date NOT NULL,
  `jam_kerja_id` bigint(20) UNSIGNED DEFAULT NULL,
  `hari_libur` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'True jika karyawan dijadwalkan off/libur di tanggal ini',
  `catatan` varchar(150) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `penugasan`
--

CREATE TABLE `penugasan` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `kode_penugasan` varchar(30) NOT NULL,
  `atasan_id` bigint(20) UNSIGNED NOT NULL,
  `judul` varchar(255) NOT NULL,
  `deskripsi` text DEFAULT NULL,
  `prioritas` enum('rendah','sedang','tinggi','mendesak') NOT NULL DEFAULT 'sedang',
  `tipe_media` varchar(50) NOT NULL DEFAULT 'dokumen',
  `tautan_eksternal` text DEFAULT NULL,
  `tanggal_mulai` date DEFAULT NULL,
  `tenggat_waktu` datetime DEFAULT NULL,
  `status` enum('draft','berjalan','menunggu_review','selesai','revisi') NOT NULL DEFAULT 'berjalan',
  `catatan_atasan` text DEFAULT NULL,
  `selesai_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `penugasan`
--

INSERT INTO `penugasan` (`id`, `kode_penugasan`, `atasan_id`, `judul`, `deskripsi`, `prioritas`, `tipe_media`, `tautan_eksternal`, `tanggal_mulai`, `tenggat_waktu`, `status`, `catatan_atasan`, `selesai_at`, `created_at`, `updated_at`) VALUES
(2, 'TSK-202610-001', 2, 'Tugas pembuatan dokumen gcg', NULL, 'sedang', 'spreadsheet', 'https://docs.google.com/spreadsheets/d/1Vt6W1NMTtWu_8yHW0ohdBJc-s6IpSQkgw64bu_5bi0M/edit?hl=id&gid=0#gid=0', '2026-10-07', NULL, 'berjalan', NULL, NULL, '2026-10-07 04:15:57', '2026-10-07 04:15:57');

-- --------------------------------------------------------

--
-- Table structure for table `penugasan_anggota`
--

CREATE TABLE `penugasan_anggota` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `penugasan_id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `peran` enum('penanggung_jawab','kolaborator') NOT NULL DEFAULT 'kolaborator',
  `status_kontribusi` enum('belum_mulai','sedang_mengerjakan','selesai') NOT NULL DEFAULT 'belum_mulai',
  `terakhir_dilihat_at` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `penugasan_anggota`
--

INSERT INTO `penugasan_anggota` (`id`, `penugasan_id`, `pegawai_id`, `peran`, `status_kontribusi`, `terakhir_dilihat_at`, `created_at`, `updated_at`) VALUES
(3, 2, 3, 'penanggung_jawab', 'belum_mulai', NULL, '2026-10-07 04:15:57', '2026-10-07 04:15:57'),
(4, 2, 4, 'kolaborator', 'belum_mulai', '2026-10-07 11:20:05', '2026-10-07 04:15:57', '2026-10-07 04:20:05');

-- --------------------------------------------------------

--
-- Table structure for table `penugasan_dokumen`
--

CREATE TABLE `penugasan_dokumen` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `penugasan_id` bigint(20) UNSIGNED NOT NULL,
  `diunggah_oleh` bigint(20) UNSIGNED NOT NULL,
  `nama_file_asli` varchar(255) NOT NULL,
  `path_file` varchar(255) NOT NULL,
  `ukuran_file` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  `tipe_file` varchar(50) DEFAULT NULL,
  `keterangan` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `penugasan_dokumen_online`
--

CREATE TABLE `penugasan_dokumen_online` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `penugasan_id` bigint(20) UNSIGNED NOT NULL,
  `konten_html` longtext DEFAULT NULL,
  `terakhir_diubah_oleh` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `penugasan_komentar`
--

CREATE TABLE `penugasan_komentar` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `penugasan_id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `pesan` text NOT NULL,
  `lampiran` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `penugasan_spreadsheet`
--

CREATE TABLE `penugasan_spreadsheet` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `penugasan_id` bigint(20) UNSIGNED NOT NULL,
  `data_sheet` longtext DEFAULT NULL,
  `terakhir_diubah_oleh` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `penugasan_spreadsheet`
--

INSERT INTO `penugasan_spreadsheet` (`id`, `penugasan_id`, `data_sheet`, `terakhir_diubah_oleh`, `created_at`, `updated_at`) VALUES
(1, 2, '[{\"name\":\"Sheet1\",\"freeze\":\"A1\",\"styles\":[],\"merges\":[],\"rows\":[{\"cells\":[{\"text\":\"No\"},{\"text\":\"Uraian Pekerjaan \\/ Indikator\"},{\"text\":\"Target \\/ Satuan\"},{\"text\":\"Realisasi\"},{\"text\":\"Keterangan\"}]}]}]', 2, '2026-10-07 04:15:57', '2026-10-07 04:15:57');

-- --------------------------------------------------------

--
-- Table structure for table `permissions`
--

CREATE TABLE `permissions` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nama` varchar(150) NOT NULL,
  `slug` varchar(100) NOT NULL,
  `modul` varchar(100) NOT NULL,
  `deskripsi` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `permissions`
--

INSERT INTO `permissions` (`id`, `nama`, `slug`, `modul`, `deskripsi`, `created_at`, `updated_at`) VALUES
(1, 'Lihat Dashboard', 'dashboard.view', 'Dashboard', 'Melihat ringkasan statistik, widget dan aktivitas presensi', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(2, 'Lihat Data Pegawai', 'pegawai.view', 'Master Data', 'Melihat daftar dan profil lengkap data pegawai', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(3, 'Tambah Pegawai', 'pegawai.create', 'Master Data', 'Mendaftarkan pegawai baru ke dalam sistem', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(4, 'Edit Data Pegawai', 'pegawai.edit', 'Master Data', 'Mengubah data pribadi, kepegawaian, dan foto pegawai', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(5, 'Hapus / Nonaktifkan Pegawai', 'pegawai.delete', 'Master Data', 'Menonaktifkan status aktif pegawai', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(6, 'Kelola Departemen', 'departemen.manage', 'Master Data', 'Menambah, mengubah, dan menghapus departemen', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(7, 'Kelola Divisi', 'divisi.manage', 'Master Data', 'Menambah, mengubah, dan menghapus divisi organisasi', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(8, 'Kelola Jabatan', 'jabatan.manage', 'Master Data', 'Menambah, mengubah, dan menghapus tingkat level jabatan', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(9, 'Lihat Usulan Pangkat', 'kenaikan_pangkat.view', 'Karir & Pangkat', 'Melihat daftar pengajuan kenaikan jabatan / pangkat', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(10, 'Kelola & Setujui Pangkat', 'kenaikan_pangkat.manage', 'Karir & Pangkat', 'Mengatur jadwal periode & menyetujui promosi jabatan', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(11, 'Kelola Lokasi Absensi', 'lokasi_absensi.manage', 'Pengaturan Absensi', 'Mengatur titik koordinat kantor, radius GPS dan geofencing', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(12, 'Kelola Jam Kerja', 'jam_kerja.manage', 'Pengaturan Absensi', 'Mengatur jadwal jam masuk, pulang, toleransi terlambat', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(13, 'Kelola Hari Kerja & Roster', 'hari_kerja.manage', 'Pengaturan Absensi', 'Mengatur pola hari kerja mingguan dan penjadwalan shift roster', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(14, 'Kelola Hari Libur', 'hari_libur.manage', 'Pengaturan Absensi', 'Menentukan tanggal libur nasional dan cuti bersama', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(15, 'Kelola Aturan Denda', 'denda.manage', 'Pengaturan Absensi', 'Mengatur tarif denda keterlambatan dan pulang cepat', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(16, 'Kelola Upah Lembur', 'upah_lembur.manage', 'Pengaturan Absensi', 'Mengatur formula pengali dan nominal upah lembur per jam', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(17, 'Kelola Sesi Perangkat', 'sesi_perangkat.manage', 'Pengaturan Absensi', 'Monitoring dan reset kunci IMEI / Device ID ponsel pegawai', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(18, 'Kelola API Key & Integrasi', 'api_key.manage', 'Pengaturan Absensi', 'Mengatur API Key untuk autentikasi aplikasi mobile', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(19, 'Monitoring Absensi Real-time', 'laporan.monitoring', 'Laporan & Presensi', 'Memantau presensi langsung hari ini beserta foto & GPS', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(20, 'Kelola Izin & Cuti', 'laporan.izin', 'Laporan & Presensi', 'Menyetujui/menolak izin, cuti sakit dan kuota cuti', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(21, 'Kelola Kunjungan Dinas', 'laporan.dinas', 'Laporan & Presensi', 'Menyetujui dan memantau tugas dinas luar kantor', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(22, 'Kelola Lembur Karyawan', 'laporan.lembur', 'Laporan & Presensi', 'Menyetujui surat perintah tugas lembur karyawan', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(23, 'Unduh & Rekap Laporan', 'laporan.rekap', 'Laporan & Presensi', 'Mengekspor rekapitulasi kehadiran bulanan ke Excel/PDF', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(24, 'Kunci Rekap Laporan', 'laporan.kunci', 'Laporan & Presensi', 'Mengunci data rekapitulasi absensi agar tidak bisa diubah', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(25, 'Lihat Tiket Kendala', 'masalah.view', 'Kendala & Masalah', 'Melihat daftar laporan kendala absensi dari karyawan', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(26, 'Proses & Putuskan Tindakan', 'masalah.process', 'Kendala & Masalah', 'Memutuskan tindakan: koreksi absensi, tambah absen, atau catat error', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(27, 'Kelola Master Komponen Gaji', 'penggajian.master', 'Penggajian & Payroll', 'Mengatur gaji pokok, tunjangan, dan potongan karyawan', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(28, 'Kalkulasi Gaji Bersih', 'penggajian.kalkulasi', 'Penggajian & Payroll', 'Menghitung lembur & denda otomatis dan generate payroll bulanan', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(29, 'Cetak & Lihat Slip Gaji', 'penggajian.slip', 'Penggajian & Payroll', 'Mencetak slip gaji format standar A4 / PDF resmi', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(30, 'Lihat Peran & Hak Akses', 'role.view', 'Manajemen Akses', 'Melihat daftar role dan matriks hak akses', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(31, 'Kelola Peran & Permission', 'role.manage', 'Manajemen Akses', 'Menambah, mengedit, dan mengatur izin akses role secara dinamis', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(32, 'Kelola Akun Admin', 'user_admin.manage', 'Manajemen Akses', 'Mengelola user administrator dan menetapkan role akun', '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(33, 'Kelola Alur Approval', 'pengaturan_approval.manage', 'Pengaturan Absensi', 'Mengatur alur persetujuan bertingkat untuk izin, cuti, lembur, dan dinas', '2026-10-12 05:54:10', '2026-10-12 05:54:10'),
(34, 'Lihat Pengumuman', 'pengumuman.view', 'Pengumuman', 'Melihat daftar dan detail pengumuman perusahaan', '2026-10-12 07:30:54', '2026-10-12 07:30:54'),
(35, 'Kelola Pengumuman', 'pengumuman.manage', 'Pengumuman', 'Membuat, mengubah, mempublikasikan, dan menghapus pengumuman perusahaan', '2026-10-12 07:30:54', '2026-10-12 07:30:54'),
(36, 'Kelola Kuota Cuti Pegawai', 'kuota_cuti.manage', 'Pengaturan Absensi', 'Mengatur jatah kuota cuti tahunan perusahaan dan kuota per pegawai', '2026-10-12 07:49:27', '2026-10-12 07:49:27'),
(37, 'Kelola Jenis & Aturan Reimbursement', 'reimbursement.jenis', 'Klaim & Reimbursement', 'Menambah, mengubah, dan menghapus master jenis klaim serta aturan limit plafon', '2026-10-12 15:18:00', '2026-10-12 15:18:00'),
(38, 'Kelola & Approval Pengajuan Reimbursement', 'reimbursement.pengajuan', 'Klaim & Reimbursement', 'Melihat daftar pengajuan karyawan, memverifikasi bukti nota, dan memproses persetujuan atau pencairan klaim', '2026-10-12 15:18:00', '2026-10-12 15:18:00'),
(39, 'Melihat Data Pinjaman Pegawai', 'pinjaman.view', 'Simpan Pinjam', 'Melihat daftar pinjaman pegawai, sisa tagihan, dan riwayat angsuran', '2026-10-12 16:12:41', '2026-10-12 16:12:41'),
(40, 'Kelola Pinjaman & Pembayaran Cicilan', 'pinjaman.manage', 'Simpan Pinjam', 'Menambah data pinjaman pegawai, mengubah, menghapus, serta mencatat pembayaran cicilan/pelunasan', '2026-10-12 16:12:41', '2026-10-12 16:12:41'),
(41, 'Melihat Mutasi & Promosi Pegawai', 'mutasi.view', 'Mutasi & Promosi', 'Melihat daftar usulan, riwayat mutasi, promosi, rotasi, dan demosi pegawai', '2026-10-12 16:33:19', '2026-10-12 16:33:19'),
(42, 'Kelola & Eksekusi Mutasi / Promosi', 'mutasi.manage', 'Mutasi & Promosi', 'Mengajukan mutasi/promosi baru, menyetujui, menolak, mencetak SK, dan menerapkan ke master data pegawai', '2026-10-12 16:33:19', '2026-10-12 16:33:19');

-- --------------------------------------------------------

--
-- Table structure for table `pinjaman_angsuran`
--

CREATE TABLE `pinjaman_angsuran` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pinjaman_pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `nomor_transaksi` varchar(50) NOT NULL,
  `angsuran_ke` int(11) NOT NULL DEFAULT 1,
  `tanggal_bayar` date NOT NULL,
  `jumlah_bayar` decimal(14,2) NOT NULL,
  `metode_pembayaran` enum('tunai','potong_gaji','transfer') NOT NULL DEFAULT 'tunai',
  `penggajian_id` bigint(20) UNSIGNED DEFAULT NULL,
  `bukti_bayar` varchar(255) DEFAULT NULL,
  `keterangan` text DEFAULT NULL,
  `diterima_oleh` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pinjaman_angsuran`
--

INSERT INTO `pinjaman_angsuran` (`id`, `pinjaman_pegawai_id`, `nomor_transaksi`, `angsuran_ke`, `tanggal_bayar`, `jumlah_bayar`, `metode_pembayaran`, `penggajian_id`, `bukti_bayar`, `keterangan`, `diterima_oleh`, `created_at`, `updated_at`) VALUES
(1, 1, 'ANGS/202610/0001', 1, '2026-10-20', 1050000.00, 'tunai', NULL, NULL, 'Pembayaran cicilan pertama tunai di kantor', 1, '2026-10-12 16:18:42', '2026-10-12 16:18:42'),
(2, 1, 'ANGS/202610/0002', 2, '2026-11-30', 1050000.00, 'potong_gaji', 7, NULL, 'Dipotong otomatis dari Slip Gaji SLIP/202611/0001 periode 2026-11', 1, '2026-10-12 16:18:43', '2026-10-12 16:18:43'),
(3, 1, 'ANGS/202610/0003', 3, '2026-11-15', 1050000.00, 'transfer', NULL, NULL, 'Pelunasan sisa pinjaman via transfer', 1, '2026-10-12 16:18:43', '2026-10-12 16:18:43');

-- --------------------------------------------------------

--
-- Table structure for table `pinjaman_pegawai`
--

CREATE TABLE `pinjaman_pegawai` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nomor_pinjaman` varchar(50) NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `tanggal_pinjaman` date NOT NULL,
  `jumlah_pinjaman` decimal(14,2) NOT NULL COMMENT 'Pokok pinjaman',
  `persentase_fee` decimal(5,2) NOT NULL DEFAULT 0.00 COMMENT 'Fee persen (bunga/biaya layanan)',
  `nominal_fee` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT 'Nominal fee hasil persen',
  `total_pinjaman` decimal(14,2) NOT NULL COMMENT 'jumlah_pinjaman + nominal_fee',
  `tenor_bulan` int(11) NOT NULL DEFAULT 1 COMMENT 'Jangka waktu cicilan dalam bulan',
  `nominal_angsuran_per_bulan` decimal(14,2) NOT NULL DEFAULT 0.00 COMMENT 'Nominal cicilan per bulan',
  `mulai_cicil_bulan` varchar(7) NOT NULL COMMENT 'Format YYYY-MM contoh 2026-11',
  `keterangan` text DEFAULT NULL,
  `potong_gaji` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Flagging otomatis potong dari slip gaji atau tidak',
  `total_dibayar` decimal(14,2) NOT NULL DEFAULT 0.00,
  `sisa_pinjaman` decimal(14,2) NOT NULL DEFAULT 0.00,
  `status` enum('belum_lunas','sebagian','lunas','dibatalkan') NOT NULL DEFAULT 'belum_lunas',
  `created_by` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pinjaman_pegawai`
--

INSERT INTO `pinjaman_pegawai` (`id`, `nomor_pinjaman`, `pegawai_id`, `tanggal_pinjaman`, `jumlah_pinjaman`, `persentase_fee`, `nominal_fee`, `total_pinjaman`, `tenor_bulan`, `nominal_angsuran_per_bulan`, `mulai_cicil_bulan`, `keterangan`, `potong_gaji`, `total_dibayar`, `sisa_pinjaman`, `status`, `created_by`, `created_at`, `updated_at`) VALUES
(1, 'PINJ/202610/0001', 1, '2026-10-15', 3000000.00, 5.00, 150000.00, 3150000.00, 3, 1050000.00, '2026-11', 'Pinjaman darurat biaya perbaikan rumah', 1, 3150000.00, 0.00, 'lunas', 1, '2026-10-12 16:18:42', '2026-10-12 16:18:43');

-- --------------------------------------------------------

--
-- Table structure for table `reimbursement_jenis`
--

CREATE TABLE `reimbursement_jenis` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nama_jenis` varchar(100) NOT NULL COMMENT 'Nama jenis reimbursement, contoh: Kesehatan, Transportasi, Makan Lembur',
  `kode_jenis` varchar(50) DEFAULT NULL COMMENT 'Kode unik jenis klaim, contoh: MED, TRN, MEAL',
  `deskripsi` text DEFAULT NULL COMMENT 'Deskripsi penjelasan jenis klaim',
  `plafon_per_klaim` decimal(15,2) DEFAULT NULL COMMENT 'Batas maksimal nominal per satu kali klaim (null = tanpa batas)',
  `plafon_per_bulan` decimal(15,2) DEFAULT NULL COMMENT 'Batas maksimal akumulasi klaim per bulan (null = tanpa batas)',
  `plafon_per_tahun` decimal(15,2) DEFAULT NULL COMMENT 'Batas maksimal akumulasi klaim per tahun (null = tanpa batas)',
  `wajib_bukti_nota` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Flagging apakah wajib upload bukti nota kuitansi',
  `status_aktif` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Flagging status aktif atau nonaktif',
  `aturan` text DEFAULT NULL COMMENT 'Syarat & ketentuan atau aturan pengajuan klaim',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `reimbursement_jenis`
--

INSERT INTO `reimbursement_jenis` (`id`, `nama_jenis`, `kode_jenis`, `deskripsi`, `plafon_per_klaim`, `plafon_per_bulan`, `plafon_per_tahun`, `wajib_bukti_nota`, `status_aktif`, `aturan`, `created_at`, `updated_at`) VALUES
(1, 'Kesehatan & Medis', 'MED', 'Penggantian biaya rawat jalan, obat resep dokter, kacamata, dan pemeriksaan medis rutin.', 1000000.00, NULL, 5000000.00, 1, 1, '1. Wajib melampirkan kuitansi asli berstempel dan resep dokter.\n2. Pengajuan maksimal 14 hari kalender sejak tanggal kwitansi.\n3. Tidak mencakup kosmetik/vitamin tanpa indikasi medis.', '2026-10-12 15:18:00', '2026-10-12 15:18:00'),
(2, 'Transportasi & Operasional', 'TRN', 'Bahan bakar, tol, tiket transportasi umum, dan parkir untuk keperluan tugas dinas luar kantor.', 500000.00, 2000000.00, NULL, 1, 1, '1. Wajib melampirkan struk SPBU / e-toll / tiket resmi.\n2. Wajib mencantumkan rute perjalanan dan nama kegiatan pada kolom keterangan.\n3. Maksimal klaim 7 hari setelah kegiatan selesai.', '2026-10-12 15:18:00', '2026-10-12 15:18:00'),
(3, 'Makan & Konsumsi Lembur', 'MEAL', 'Uang makan bagi karyawan yang melaksanakan lembur resmi di luar jam kerja reguler.', 75000.00, 750000.00, NULL, 1, 1, '1. Hanya berlaku untuk lembur minimal 3 jam berturut-turut.\n2. Melampirkan nota pembelian makanan/minuman yang valid.\n3. Tanggal struk harus sama dengan tanggal lembur.', '2026-10-12 15:18:00', '2026-10-12 15:18:00'),
(4, 'Komunikasi & Kuota Internet', 'KOM', 'Penggantian pulsa / kuota paket internet untuk koordinasi kerja karyawan mobile / lapangan.', NULL, 250000.00, NULL, 1, 1, '1. Struk resmi pembelian paket data dari operator atau marketplace.\n2. Klaim diajukan 1 kali setiap awal atau akhir bulan berjalan.', '2026-10-12 15:18:00', '2026-10-12 15:18:00');

-- --------------------------------------------------------

--
-- Table structure for table `revisi_absensi`
--

CREATE TABLE `revisi_absensi` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `absensi_id` bigint(20) UNSIGNED DEFAULT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `jenis_tindakan` enum('revisi','hapus') NOT NULL,
  `user_id_eksekutor` bigint(20) UNSIGNED NOT NULL,
  `alasan` text NOT NULL,
  `data_sebelumnya` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`data_sebelumnya`)),
  `data_perubahan` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`data_perubahan`)),
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `revisi_absensi`
--

INSERT INTO `revisi_absensi` (`id`, `absensi_id`, `pegawai_id`, `jenis_tindakan`, `user_id_eksekutor`, `alasan`, `data_sebelumnya`, `data_perubahan`, `created_at`, `updated_at`) VALUES
(1, NULL, 3, 'hapus', 1, 'test aplikasi', '{\"id\":2,\"pegawai_id\":3,\"tanggal\":\"2026-10-05T00:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":1,\"jam_masuk\":\"08:24:45\",\"lat_masuk\":-6.2256,\"long_masuk\":106.80932,\"jarak_masuk_meter\":18,\"foto_masuk\":\"selfie\\/sample_masuk_staff.jpg\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":24,\"denda_masuk_id\":null,\"denda_terlambat\":30000,\"denda_masuk\":30000,\"denda_pulang\":0,\"total_denda\":30000,\"jam_pulang\":\"03:01:13\",\"lat_pulang\":-7.19585,\"long_pulang\":113.2443987,\"jarak_pulang_meter\":11,\"foto_pulang\":\"absensi\\/3\\/absen_pulang_20261005_030113_mLTwnL.jpg\",\"status_pulang\":\"pulang_cepat\",\"menit_pulang_cepat\":839,\"menit_denda_pulang\":839,\"denda_pulang_id\":6,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T01:43:37.000000Z\",\"updated_at\":\"2026-10-05T03:01:13.000000Z\"}', NULL, '2026-10-04 20:02:00', '2026-10-04 20:02:00'),
(2, NULL, 2, 'hapus', 1, 'fsafsaf', '{\"id\":1,\"pegawai_id\":2,\"tanggal\":\"2026-10-05T00:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":1,\"jam_masuk\":\"07:54:12\",\"lat_masuk\":-6.22558,\"long_masuk\":106.80931,\"jarak_masuk_meter\":12,\"foto_masuk\":\"selfie\\/sample_masuk_mgr.jpg\",\"status_masuk\":\"tepat_waktu\",\"menit_terlambat\":0,\"denda_masuk_id\":null,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":\"03:02:49\",\"lat_pulang\":-6.225588,\"long_pulang\":106.809312,\"jarak_pulang_meter\":0,\"foto_pulang\":\"absensi\\/2\\/absen_pulang_20261005_030249_ATP1sf.jpg\",\"status_pulang\":\"pulang_cepat\",\"menit_pulang_cepat\":838,\"menit_denda_pulang\":838,\"denda_pulang_id\":6,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T01:43:37.000000Z\",\"updated_at\":\"2026-10-05T03:02:49.000000Z\"}', NULL, '2026-10-04 20:03:10', '2026-10-04 20:03:10'),
(3, NULL, 3, 'hapus', 1, 'gagsadsafsa', '{\"id\":16,\"pegawai_id\":3,\"tanggal\":\"2026-10-04T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":2,\"jam_masuk\":\"10:09:32\",\"lat_masuk\":-7.195909,\"long_masuk\":113.244478,\"jarak_masuk_meter\":0,\"foto_masuk\":\"absensi\\/3\\/absen_masuk_20261005_100932_ICu5US.jpg\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":129,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":null,\"lat_pulang\":null,\"long_pulang\":null,\"jarak_pulang_meter\":null,\"foto_pulang\":null,\"status_pulang\":null,\"menit_pulang_cepat\":0,\"menit_denda_pulang\":0,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T03:09:32.000000Z\",\"updated_at\":\"2026-10-05T03:09:32.000000Z\"}', NULL, '2026-10-05 03:14:29', '2026-10-05 03:14:29'),
(4, NULL, 3, 'hapus', 1, 'sfsafsafada', '{\"id\":25,\"pegawai_id\":3,\"tanggal\":\"2026-10-04T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":2,\"jam_masuk\":\"10:15:44\",\"lat_masuk\":-7.19585,\"long_masuk\":113.2443987,\"jarak_masuk_meter\":11,\"foto_masuk\":\"absensi\\/3\\/absen_masuk_20261005_101544_avsk9B.jpg\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":135,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":\"11:50:37\",\"lat_pulang\":-7.19585,\"long_pulang\":113.2443987,\"jarak_pulang_meter\":11,\"foto_pulang\":\"absensi\\/3\\/absen_pulang_20261005_115037_rcCvLp.jpg\",\"status_pulang\":\"pulang_cepat\",\"menit_pulang_cepat\":310,\"menit_denda_pulang\":310,\"denda_pulang_id\":6,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T03:15:44.000000Z\",\"updated_at\":\"2026-10-05T04:50:37.000000Z\"}', NULL, '2026-10-05 06:41:46', '2026-10-05 06:41:46'),
(5, NULL, 3, 'hapus', 1, 'fsafsadsfsa', '{\"id\":41,\"pegawai_id\":3,\"tanggal\":\"2026-10-04T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":2,\"jam_masuk\":\"13:43:28\",\"lat_masuk\":-6.225588,\"long_masuk\":106.809312,\"jarak_masuk_meter\":718785,\"foto_masuk\":\"absensi\\/3\\/absen_masuk_20261005_134328_E10OMy.jpg\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":822,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":null,\"lat_pulang\":null,\"long_pulang\":null,\"jarak_pulang_meter\":null,\"foto_pulang\":null,\"status_pulang\":null,\"menit_pulang_cepat\":0,\"menit_denda_pulang\":0,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T06:43:28.000000Z\",\"updated_at\":\"2026-10-05T06:43:28.000000Z\"}', NULL, '2026-10-05 06:43:40', '2026-10-05 06:43:40'),
(6, NULL, 3, 'hapus', 1, 'gsafsasafsasda', '{\"id\":46,\"pegawai_id\":3,\"tanggal\":\"2026-10-04T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":2,\"jam_masuk\":\"13:44:34\",\"lat_masuk\":-6.225588,\"long_masuk\":106.809312,\"jarak_masuk_meter\":718785,\"foto_masuk\":\"absensi\\/3\\/absen_masuk_20261005_134434_UiF9K2.jpg\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":823,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":null,\"lat_pulang\":null,\"long_pulang\":null,\"jarak_pulang_meter\":null,\"foto_pulang\":null,\"status_pulang\":null,\"menit_pulang_cepat\":0,\"menit_denda_pulang\":0,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T06:44:34.000000Z\",\"updated_at\":\"2026-10-05T06:44:34.000000Z\"}', NULL, '2026-10-05 06:45:10', '2026-10-05 06:45:10'),
(7, NULL, 3, 'hapus', 1, 'fsafdsafsada', '{\"id\":47,\"pegawai_id\":3,\"tanggal\":\"2026-10-04T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":2,\"jam_masuk\":\"13:45:23\",\"lat_masuk\":-7.19585,\"long_masuk\":113.2443987,\"jarak_masuk_meter\":11,\"foto_masuk\":\"absensi\\/3\\/absen_masuk_20261005_134523_vfgRhA.jpg\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":345,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":null,\"lat_pulang\":null,\"long_pulang\":null,\"jarak_pulang_meter\":null,\"foto_pulang\":null,\"status_pulang\":null,\"menit_pulang_cepat\":0,\"menit_denda_pulang\":0,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T06:45:23.000000Z\",\"updated_at\":\"2026-10-05T06:45:23.000000Z\"}', NULL, '2026-10-05 06:45:49', '2026-10-05 06:45:49'),
(8, NULL, 5, 'hapus', 1, 'knjjhh', '{\"id\":55,\"pegawai_id\":5,\"tanggal\":\"2026-10-04T17:00:00.000000Z\",\"jam_kerja_id\":4,\"lokasi_absensi_id\":2,\"jam_masuk\":\"21:01:02\",\"lat_masuk\":-7.19585,\"long_masuk\":113.2443987,\"jarak_masuk_meter\":11,\"foto_masuk\":\"absensi\\/5\\/absen_masuk_20261005_210102_99SNmO.jpg\",\"status_masuk\":\"tepat_waktu\",\"menit_terlambat\":0,\"denda_masuk_id\":null,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":\"06:00:49\",\"lat_pulang\":-7.19585,\"long_pulang\":113.2443987,\"jarak_pulang_meter\":11,\"foto_pulang\":\"absensi\\/5\\/absen_pulang_20261006_060049_47brh1.jpg\",\"status_pulang\":\"normal\",\"menit_pulang_cepat\":0,\"menit_denda_pulang\":0,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T14:01:02.000000Z\",\"updated_at\":\"2026-10-05T23:00:49.000000Z\"}', NULL, '2026-10-05 07:52:53', '2026-10-05 07:52:53'),
(9, NULL, 5, 'hapus', 1, 'gbgyguy', '{\"id\":88,\"pegawai_id\":5,\"tanggal\":\"2026-10-05T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":45,\"jam_masuk\":\"01:44:05\",\"lat_masuk\":-7.1979594,\"long_masuk\":113.2495918,\"jarak_masuk_meter\":13,\"foto_masuk\":\"absensi\\/5\\/absen_masuk_20261006_014405_HK6de9.jpg\",\"face_matched_masuk\":1,\"face_similarity_masuk\":\"64.00\",\"status_masuk\":\"tepat_waktu\",\"menit_terlambat\":0,\"denda_masuk_id\":null,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":null,\"lat_pulang\":null,\"long_pulang\":null,\"jarak_pulang_meter\":null,\"foto_pulang\":null,\"face_matched_pulang\":null,\"face_similarity_pulang\":null,\"status_pulang\":null,\"menit_pulang_cepat\":0,\"menit_denda_pulang\":0,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-05T18:44:05.000000Z\",\"updated_at\":\"2026-10-05T18:44:05.000000Z\"}', NULL, '2026-10-05 18:44:31', '2026-10-05 18:44:31'),
(10, NULL, 5, 'hapus', 1, 'jbhbhb', '{\"id\":90,\"pegawai_id\":5,\"tanggal\":\"2026-10-06T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":45,\"jam_masuk\":\"14:01:01\",\"lat_masuk\":-7.1979614,\"long_masuk\":113.2495711,\"jarak_masuk_meter\":10,\"foto_masuk\":\"absensi\\/5\\/absen_masuk_20261007_140101_48XC9B.jpg\",\"jam_istirahat_mulai\":\"14:01:19\",\"jam_istirahat_selesai\":\"14:13:33\",\"status_istirahat\":\"selesai\",\"face_matched_masuk\":1,\"face_similarity_masuk\":\"45.00\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":361,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":\"14:28:55\",\"lat_pulang\":-7.1979652,\"long_pulang\":113.2495907,\"jarak_pulang_meter\":12,\"foto_pulang\":\"absensi\\/5\\/absen_pulang_20261007_142855_RheazI.jpg\",\"face_matched_pulang\":1,\"face_similarity_pulang\":\"27.00\",\"status_pulang\":\"pulang_cepat\",\"menit_pulang_cepat\":152,\"menit_denda_pulang\":152,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-07T07:01:01.000000Z\",\"updated_at\":\"2026-10-07T07:28:55.000000Z\"}', NULL, '2026-10-07 07:31:01', '2026-10-07 07:31:01'),
(11, NULL, 2, 'hapus', 1, 'jdunshshsus', '{\"id\":92,\"pegawai_id\":2,\"tanggal\":\"2026-10-06T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":45,\"jam_masuk\":\"15:48:27\",\"lat_masuk\":-7.1979543,\"long_masuk\":113.2495837,\"jarak_masuk_meter\":12,\"foto_masuk\":\"absensi\\/2\\/absen_masuk_20261007_154827_K1ZkRU.jpg\",\"jam_istirahat_mulai\":null,\"jam_istirahat_selesai\":null,\"status_istirahat\":\"belum\",\"face_matched_masuk\":1,\"face_similarity_masuk\":\"73.00\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":468,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":null,\"lat_pulang\":null,\"long_pulang\":null,\"jarak_pulang_meter\":null,\"foto_pulang\":null,\"face_matched_pulang\":null,\"face_similarity_pulang\":null,\"status_pulang\":null,\"menit_pulang_cepat\":0,\"menit_denda_pulang\":0,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-07T08:48:27.000000Z\",\"updated_at\":\"2026-10-07T08:48:27.000000Z\"}', NULL, '2026-10-07 08:48:56', '2026-10-07 08:48:56'),
(12, NULL, 5, 'hapus', 1, 'ndunesuhw', '{\"id\":91,\"pegawai_id\":5,\"tanggal\":\"2026-10-06T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":45,\"jam_masuk\":\"14:33:49\",\"lat_masuk\":-7.1979622,\"long_masuk\":113.2495843,\"jarak_masuk_meter\":12,\"foto_masuk\":\"absensi\\/5\\/absen_masuk_20261007_143349_w0z9Sn.jpg\",\"jam_istirahat_mulai\":null,\"jam_istirahat_selesai\":null,\"status_istirahat\":\"dilewati\",\"face_matched_masuk\":1,\"face_similarity_masuk\":\"40.00\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":393,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":\"14:43:43\",\"lat_pulang\":-7.1979744,\"long_pulang\":113.249582,\"jarak_pulang_meter\":12,\"foto_pulang\":\"absensi\\/5\\/absen_pulang_20261007_144343_mb8b2z.jpg\",\"face_matched_pulang\":1,\"face_similarity_pulang\":\"47.00\",\"status_pulang\":\"pulang_cepat\",\"menit_pulang_cepat\":137,\"menit_denda_pulang\":137,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-07T07:33:49.000000Z\",\"updated_at\":\"2026-10-07T07:43:43.000000Z\"}', NULL, '2026-10-07 09:28:18', '2026-10-07 09:28:18'),
(13, NULL, 5, 'hapus', 1, 'cgijhh', '{\"id\":94,\"pegawai_id\":5,\"tanggal\":\"2026-10-06T17:00:00.000000Z\",\"jam_kerja_id\":1,\"lokasi_absensi_id\":45,\"jam_masuk\":\"16:30:45\",\"lat_masuk\":-7.1979628,\"long_masuk\":113.2495739,\"jarak_masuk_meter\":11,\"foto_masuk\":\"absensi\\/5\\/absen_masuk_20261007_163045_cNdShv.jpg\",\"jam_istirahat_mulai\":null,\"jam_istirahat_selesai\":null,\"status_istirahat\":\"belum\",\"face_matched_masuk\":1,\"face_similarity_masuk\":\"69.00\",\"status_masuk\":\"terlambat\",\"menit_terlambat\":510,\"denda_masuk_id\":4,\"denda_terlambat\":0,\"denda_masuk\":0,\"denda_pulang\":0,\"total_denda\":0,\"jam_pulang\":null,\"lat_pulang\":null,\"long_pulang\":null,\"jarak_pulang_meter\":null,\"foto_pulang\":null,\"face_matched_pulang\":null,\"face_similarity_pulang\":null,\"status_pulang\":null,\"menit_pulang_cepat\":0,\"menit_denda_pulang\":0,\"denda_pulang_id\":null,\"status_kehadiran\":\"hadir\",\"direvisi\":false,\"catatan_revisi\":null,\"created_at\":\"2026-10-07T09:30:45.000000Z\",\"updated_at\":\"2026-10-07T09:30:45.000000Z\"}', NULL, '2026-10-07 12:55:29', '2026-10-07 12:55:29');

-- --------------------------------------------------------

--
-- Table structure for table `roles`
--

CREATE TABLE `roles` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `nama` varchar(100) NOT NULL,
  `slug` varchar(100) NOT NULL,
  `deskripsi` varchar(255) DEFAULT NULL,
  `warna` varchar(30) NOT NULL DEFAULT '#475569',
  `is_system` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `roles`
--

INSERT INTO `roles` (`id`, `nama`, `slug`, `deskripsi`, `warna`, `is_system`, `created_at`, `updated_at`) VALUES
(1, 'Super Administrator', 'super_admin', 'Akses penuh tanpa batas ke seluruh modul dan konfigurasi sistem', '#e11d48', 1, '2026-10-06 03:51:37', '2026-10-06 03:51:37'),
(2, 'HRD & Personalia', 'hrd', 'Pengelolaan data pegawai, karir, izin, dinas, lembur, dan kendala presensi', '#2563eb', 0, '2026-10-06 03:51:38', '2026-10-06 03:51:38'),
(3, 'Finance & Payroll', 'payroll', 'Pengelolaan master penggajian, kalkulasi gaji bersih, dan slip gaji', '#059669', 0, '2026-10-06 03:51:38', '2026-10-06 03:51:38'),
(4, 'Operator Absensi', 'operator_absensi', 'Pemantauan absensi real-time, pengaturan jadwal, lokasi GPS, dan reset sesi', '#d97706', 0, '2026-10-06 03:51:38', '2026-10-06 03:51:38');

-- --------------------------------------------------------

--
-- Table structure for table `role_has_permissions`
--

CREATE TABLE `role_has_permissions` (
  `role_id` bigint(20) UNSIGNED NOT NULL,
  `permission_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `role_has_permissions`
--

INSERT INTO `role_has_permissions` (`role_id`, `permission_id`) VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 1),
(1, 2),
(2, 2),
(3, 2),
(1, 3),
(2, 3),
(1, 4),
(2, 4),
(1, 5),
(2, 5),
(1, 6),
(2, 6),
(1, 7),
(2, 7),
(1, 8),
(2, 8),
(1, 9),
(2, 9),
(1, 10),
(2, 10),
(1, 11),
(4, 11),
(1, 12),
(4, 12),
(1, 13),
(4, 13),
(1, 14),
(4, 14),
(1, 15),
(3, 15),
(1, 16),
(3, 16),
(1, 17),
(4, 17),
(1, 18),
(1, 19),
(2, 19),
(4, 19),
(1, 20),
(2, 20),
(1, 21),
(2, 21),
(1, 22),
(2, 22),
(1, 23),
(2, 23),
(3, 23),
(1, 24),
(1, 25),
(2, 25),
(4, 25),
(1, 26),
(2, 26),
(1, 27),
(3, 27),
(1, 28),
(3, 28),
(1, 29),
(3, 29),
(1, 30),
(1, 31),
(1, 32),
(1, 33),
(2, 33),
(1, 34),
(2, 34),
(1, 35),
(2, 35),
(1, 36),
(2, 36),
(1, 37),
(2, 37),
(1, 38),
(2, 38),
(1, 39),
(2, 39),
(1, 40),
(2, 40),
(1, 41),
(2, 41),
(1, 42),
(2, 42);

-- --------------------------------------------------------

--
-- Table structure for table `sesi_perangkat`
--

CREATE TABLE `sesi_perangkat` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `pegawai_id` bigint(20) UNSIGNED NOT NULL,
  `device_id` varchar(150) NOT NULL COMMENT 'UUID Perangkat Smartphone',
  `token` varchar(80) DEFAULT NULL,
  `token_expires_at` timestamp NULL DEFAULT NULL,
  `model_perangkat` varchar(100) DEFAULT NULL COMMENT 'Contoh: Samsung Galaxy A54, iPhone 14',
  `versi_os` varchar(50) DEFAULT NULL,
  `versi_aplikasi` varchar(30) DEFAULT NULL,
  `ip_terakhir` varchar(45) DEFAULT NULL,
  `login_terakhir_at` timestamp NULL DEFAULT NULL,
  `status_terkunci` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Hanya device terkunci yang diizinkan absen',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `sesi_perangkat`
--

INSERT INTO `sesi_perangkat` (`id`, `pegawai_id`, `device_id`, `token`, `token_expires_at`, `model_perangkat`, `versi_os`, `versi_aplikasi`, `ip_terakhir`, `login_terakhir_at`, `status_terkunci`, `created_at`, `updated_at`) VALUES
(22, 4, 'DEV-E2EDD13B-EB59-4059-AE80-A2E645B1FC65', NULL, NULL, 'Apple iPhone', 'iOS', 'v1.1.0', '127.0.0.1', '2026-10-12 06:07:51', 1, '2026-10-12 06:07:51', '2026-10-12 06:09:20'),
(26, 7, 'DEV-9C1A5EE6-55F8-47E8-9E81-D8BCC58B9AC0', 'cCcY9hZSLuD4zT8SsRIiOmREl0EUtYM0lEzo9WjsF7NF04RxKoqVtbHuMXKKS6YV8Ag4c8uRQcPBOpe4', NULL, 'Apple iPhone', 'iOS', 'v1.1.0', '2001:448a:c030:2462:8c76:d5c7:2bbe:8aa4', '2026-10-13 01:16:49', 1, '2026-10-13 01:16:49', '2026-10-13 01:16:49'),
(27, 5, 'DEV-45A92292-1201-4A66-A83E-74774643DDAA', 'Z2lzYdJGkVEWkiOMqKZgyJArsT23ZtSKMRBBr11ugzwe6lQuPneL5tSdenFVOMuQTrfBBzTdyQ7tnySR', NULL, 'TECNO CN5 Build/BP2A.250605.031.A3', 'Android', 'v1.1.0', '2001:448a:c030:2462:54ab:7e83:ccf8:99ff', '2026-10-13 01:58:57', 1, '2026-10-13 01:23:19', '2026-10-13 01:58:57'),
(28, 3, 'DEV-45A92292-1201-4A66-A83E-74774643DDAA', NULL, NULL, 'TECNO CN5 Build/BP2A.250605.031.A3', 'Android', 'v1.1.0', '2001:448a:c030:2462:54ab:7e83:ccf8:99ff', '2026-10-13 01:57:48', 1, '2026-10-13 01:57:48', '2026-10-13 01:58:46'),
(29, 1, 'DEV-9C1A5EE6-55F8-47E8-9E81-D8BCC58B9AC0', 'PyuCYAf5Q7TQLJGu9sUfoHMzW9TGvoM6xhmo0pkZP9hGH8D7z36Ueo42Fqlk3lu0HXp4XLWYDbw1j9ws', NULL, 'Apple iPhone', 'iOS', 'v1.1.0', '2001:448a:c030:2462:8c76:d5c7:2bbe:8aa4', '2026-10-13 05:57:37', 1, '2026-10-13 05:57:37', '2026-10-13 05:57:37');

-- --------------------------------------------------------

--
-- Table structure for table `sessions`
--

CREATE TABLE `sessions` (
  `id` varchar(255) NOT NULL,
  `user_id` bigint(20) UNSIGNED DEFAULT NULL,
  `ip_address` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `payload` longtext NOT NULL,
  `last_activity` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `sessions`
--

INSERT INTO `sessions` (`id`, `user_id`, `ip_address`, `user_agent`, `payload`, `last_activity`) VALUES
('umNZLQ7JtwoHCHPRYS27mkG9Pm40elaMGX2PYGXJ', 3, '2001:448a:c030:2462:8c76:d5c7:2bbe:8aa4', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36', 'YTo1OntzOjY6Il90b2tlbiI7czo0MDoienduRlVsMEV6cUJ3eDVGYXZITnB0RnhOZEh6aGFLTFFrWXlVaGFNWCI7czo2OiJfZmxhc2giO2E6Mjp7czozOiJuZXciO2E6MDp7fXM6Mzoib2xkIjthOjA6e319czo5OiJfcHJldmlvdXMiO2E6Mjp7czozOiJ1cmwiO3M6NDk6Imh0dHBzOi8vcGFuZWwuaGFidGFyYS5jb20vcG9ydGFsL3BlbnVnYXNhbi9jcmVhdGUiO3M6NToicm91dGUiO3M6MjM6InBvcnRhbC5wZW51Z2FzYW4uY3JlYXRlIjt9czo1MDoibG9naW5fd2ViXzU5YmEzNmFkZGMyYjJmOTQwMTU4MGYwMTRjN2Y1OGVhNGUzMDk4OWQiO2k6MztzOjE3OiJwYXNzd29yZF9oYXNoX3dlYiI7czo2NDoiMjZkZTJlOGI5MmEwYjYwNGRiN2Q1MGRhZWVlYjQ0MzQyOTMwNDMyMWI4MzM3ZWQxMmU5MDhhZGJjMTZjZTNhZSI7fQ==', 1791876607);

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `email_verified_at` timestamp NULL DEFAULT NULL,
  `password` varchar(255) NOT NULL,
  `role` enum('admin','hrd','atasan','pegawai') NOT NULL DEFAULT 'admin',
  `role_id` bigint(20) UNSIGNED DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `remember_token` varchar(100) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `name`, `email`, `email_verified_at`, `password`, `role`, `role_id`, `is_active`, `remember_token`, `created_at`, `updated_at`) VALUES
(1, 'Super Administrator', 'admin@smartpresensi.com', NULL, '$2y$12$26NZSu22Rg4i6WOoAeGPnOw6yngs.V9yXn/Hp8SkjsTiFLz3bcfZC', 'admin', 1, 1, 'S184m9AOPgoHBuBo3kmwPcMSch78U8JQldNwpbG0RfX6XNv76V3ic13eUcNi', '2026-10-04 18:43:36', '2026-10-06 03:51:38'),
(2, 'Siti Nurhaliza (HRD)', 'hrd@smartpresensi.com', NULL, '$2y$12$T2pJDnZIimBGALgwzzS9Meuess0Z0a18C9t7mPVVuYnAemW3NjAlW', 'hrd', 2, 1, 'hFNcsC75lNUAlv1V21rfUNNja8Y8PhGfRSqbAtcxl6I4IcGRdXvlTbeCxngH', '2026-10-04 18:43:36', '2026-10-06 03:51:38'),
(3, 'Budi Santoso, M.Kom', 'budi.santoso@smartpresensi.com', NULL, '$2y$12$8Bv3CaNSZg.1.EdlYxJ5H.nvXFxsp1ZROFWBMIxzBLxXz.Mlvg6ea', 'atasan', NULL, 1, NULL, '2026-10-04 18:43:36', '2026-10-13 07:25:28'),
(4, 'Ahmad Fauzi, S.T', 'ahmad.fauzi@smartpresensi.com', NULL, '$2y$12$c0LrFS.hVn7idHIEyMkzluEt0b/JgXYXwDPn181ai5etP4/uIXGaK', 'atasan', NULL, 1, NULL, '2026-10-04 18:43:37', '2026-10-04 18:43:37'),
(5, 'Rizky Pratama', 'rizky.pratama@smartpresensi.com', NULL, '$2y$04$Z7LPFmjRY0D6b3mdr33Qoema0ymc1NdqRXAw18a7JnCwl5N37CuMG', 'pegawai', NULL, 1, NULL, '2026-10-04 18:43:37', '2026-10-05 06:44:34'),
(6, 'Dimas Wicaksono', 'dimas.wicaksono@smartpresensi.com', NULL, '$2y$12$jLl2qSIavMKM4NRTV00KCunooRK8v7.TP3NJLczb1EGBdGqJEfL/.', 'pegawai', NULL, 1, NULL, '2026-10-04 18:43:37', '2026-10-04 18:43:37'),
(7, 'Rudi Hartano', 'rudihartono@smartpresensi.com', NULL, '$2y$12$GwXr0aDr.dgcvh5Vnr.ENus7za81xSkuUoSgWM.k4gEWFWaD0dtZ2', 'admin', 3, 1, 'vyr0fNOSrmrKjQt8IxKCBvLKSMg7kSjLv8HknWTLGFs25a2jCcG4zQYCNnbP', '2026-10-06 04:14:44', '2026-10-06 04:39:40'),
(8, 'Ikhlasul Amal', 'cemalanjello69@gmail.com', NULL, '$2y$12$DPQWt6IRoc4Big92/TRfj.bqA6NQXqhcqPK9dtv17w.M4tJ7I9grG', 'pegawai', NULL, 1, NULL, '2026-10-08 02:49:18', '2026-10-08 02:49:18'),
(10, 'Ahmad Sahroni', 'ahmadsahroni@gmail.com', NULL, '$2y$12$CK2XKiif6P3lJd1GQ/JVne2OFSURb.pYPVWz2g63rsQXFcITA3EwK', 'pegawai', NULL, 1, NULL, '2026-10-12 05:37:46', '2026-10-12 05:37:46');

-- --------------------------------------------------------

--
-- Table structure for table `user_has_roles`
--

CREATE TABLE `user_has_roles` (
  `user_id` bigint(20) UNSIGNED NOT NULL,
  `role_id` bigint(20) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `user_has_roles`
--

INSERT INTO `user_has_roles` (`user_id`, `role_id`) VALUES
(1, 1),
(2, 2),
(7, 3);

--
-- Indexes for dumped tables
--

--
-- Indexes for table `absensi`
--
ALTER TABLE `absensi`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_pegawai_tanggal_absensi` (`pegawai_id`,`tanggal`),
  ADD KEY `absensi_jam_kerja_id_foreign` (`jam_kerja_id`),
  ADD KEY `absensi_lokasi_absensi_id_foreign` (`lokasi_absensi_id`),
  ADD KEY `absensi_denda_masuk_id_foreign` (`denda_masuk_id`),
  ADD KEY `absensi_denda_pulang_id_foreign` (`denda_pulang_id`),
  ADD KEY `absensi_denda_tidak_hadir_id_foreign` (`denda_tidak_hadir_id`);

--
-- Indexes for table `api_keys`
--
ALTER TABLE `api_keys`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `api_keys_key_unique` (`key`);

--
-- Indexes for table `approval_pengajuan_progress`
--
ALTER TABLE `approval_pengajuan_progress`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_prog_target` (`modul`,`pengajuan_id`),
  ADD KEY `idx_prog_approver` (`pegawai_approver_id`,`status`,`is_current`);

--
-- Indexes for table `cache`
--
ALTER TABLE `cache`
  ADD PRIMARY KEY (`key`);

--
-- Indexes for table `cache_locks`
--
ALTER TABLE `cache_locks`
  ADD PRIMARY KEY (`key`);

--
-- Indexes for table `denda_keterlambatan`
--
ALTER TABLE `denda_keterlambatan`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `departemen`
--
ALTER TABLE `departemen`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `departemen_kode_departemen_unique` (`kode_departemen`),
  ADD KEY `departemen_parent_id_foreign` (`parent_id`);

--
-- Indexes for table `divisi`
--
ALTER TABLE `divisi`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `divisi_kode_divisi_unique` (`kode_divisi`),
  ADD KEY `divisi_departemen_id_foreign` (`departemen_id`),
  ADD KEY `divisi_parent_id_foreign` (`parent_id`);

--
-- Indexes for table `failed_jobs`
--
ALTER TABLE `failed_jobs`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`);

--
-- Indexes for table `hari_kerja`
--
ALTER TABLE `hari_kerja`
  ADD PRIMARY KEY (`id`),
  ADD KEY `hari_kerja_jam_kerja_senin_id_foreign` (`jam_kerja_senin_id`),
  ADD KEY `hari_kerja_jam_kerja_selasa_id_foreign` (`jam_kerja_selasa_id`),
  ADD KEY `hari_kerja_jam_kerja_rabu_id_foreign` (`jam_kerja_rabu_id`),
  ADD KEY `hari_kerja_jam_kerja_kamis_id_foreign` (`jam_kerja_kamis_id`),
  ADD KEY `hari_kerja_jam_kerja_jumat_id_foreign` (`jam_kerja_jumat_id`),
  ADD KEY `hari_kerja_jam_kerja_sabtu_id_foreign` (`jam_kerja_sabtu_id`),
  ADD KEY `hari_kerja_jam_kerja_minggu_id_foreign` (`jam_kerja_minggu_id`);

--
-- Indexes for table `hari_libur`
--
ALTER TABLE `hari_libur`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `jabatan`
--
ALTER TABLE `jabatan`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `jabatan_kode_jabatan_unique` (`kode_jabatan`);

--
-- Indexes for table `jadwal_kenaikan_pangkat`
--
ALTER TABLE `jadwal_kenaikan_pangkat`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `jam_kerja`
--
ALTER TABLE `jam_kerja`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `jam_kerja_kode_jam_kerja_unique` (`kode_jam_kerja`);

--
-- Indexes for table `jobs`
--
ALTER TABLE `jobs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `jobs_queue_index` (`queue`);

--
-- Indexes for table `job_batches`
--
ALTER TABLE `job_batches`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `kenaikan_pangkat`
--
ALTER TABLE `kenaikan_pangkat`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kenaikan_pangkat_jadwal_kenaikan_pangkat_id_foreign` (`jadwal_kenaikan_pangkat_id`),
  ADD KEY `kenaikan_pangkat_pegawai_id_foreign` (`pegawai_id`),
  ADD KEY `kenaikan_pangkat_departemen_lama_id_foreign` (`departemen_lama_id`),
  ADD KEY `kenaikan_pangkat_divisi_lama_id_foreign` (`divisi_lama_id`),
  ADD KEY `kenaikan_pangkat_jabatan_lama_id_foreign` (`jabatan_lama_id`),
  ADD KEY `kenaikan_pangkat_departemen_baru_id_foreign` (`departemen_baru_id`),
  ADD KEY `kenaikan_pangkat_divisi_baru_id_foreign` (`divisi_baru_id`),
  ADD KEY `kenaikan_pangkat_jabatan_baru_id_foreign` (`jabatan_baru_id`),
  ADD KEY `kenaikan_pangkat_disetujui_oleh_user_id_foreign` (`disetujui_oleh_user_id`),
  ADD KEY `kenaikan_pangkat_lokasi_lama_id_foreign` (`lokasi_lama_id`),
  ADD KEY `kenaikan_pangkat_lokasi_baru_id_foreign` (`lokasi_baru_id`),
  ADD KEY `kenaikan_pangkat_atasan_lama_id_foreign` (`atasan_lama_id`),
  ADD KEY `kenaikan_pangkat_atasan_baru_id_foreign` (`atasan_baru_id`);

--
-- Indexes for table `komponen_gaji`
--
ALTER TABLE `komponen_gaji`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `komponen_gaji_kode_komponen_unique` (`kode_komponen`);

--
-- Indexes for table `konfigurasi_cuti`
--
ALTER TABLE `konfigurasi_cuti`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `kunci_laporan_absensi`
--
ALTER TABLE `kunci_laporan_absensi`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_kunci_bulan_tahun` (`bulan`,`tahun`),
  ADD KEY `kunci_laporan_absensi_dikunci_oleh_user_id_foreign` (`dikunci_oleh_user_id`);

--
-- Indexes for table `kunjungan_dinas`
--
ALTER TABLE `kunjungan_dinas`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kunjungan_dinas_pegawai_id_foreign` (`pegawai_id`),
  ADD KEY `kunjungan_dinas_disetujui_oleh_pegawai_id_foreign` (`disetujui_oleh_pegawai_id`);

--
-- Indexes for table `kuota_cuti_pegawai`
--
ALTER TABLE `kuota_cuti_pegawai`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_pegawai_tahun_cuti` (`pegawai_id`,`tahun`);

--
-- Indexes for table `laporan_absensi_terkunci`
--
ALTER TABLE `laporan_absensi_terkunci`
  ADD PRIMARY KEY (`id`),
  ADD KEY `laporan_absensi_terkunci_kunci_laporan_id_foreign` (`kunci_laporan_id`),
  ADD KEY `laporan_absensi_terkunci_absensi_id_foreign` (`absensi_id`),
  ADD KEY `laporan_absensi_terkunci_pegawai_id_foreign` (`pegawai_id`),
  ADD KEY `laporan_absensi_terkunci_jam_kerja_id_foreign` (`jam_kerja_id`),
  ADD KEY `laporan_absensi_terkunci_lokasi_absensi_id_foreign` (`lokasi_absensi_id`),
  ADD KEY `laporan_absensi_terkunci_denda_masuk_id_foreign` (`denda_masuk_id`),
  ADD KEY `laporan_absensi_terkunci_denda_pulang_id_foreign` (`denda_pulang_id`),
  ADD KEY `laporan_absensi_terkunci_denda_tidak_hadir_id_foreign` (`denda_tidak_hadir_id`);

--
-- Indexes for table `lembur_pegawai`
--
ALTER TABLE `lembur_pegawai`
  ADD PRIMARY KEY (`id`),
  ADD KEY `lembur_pegawai_pegawai_id_foreign` (`pegawai_id`),
  ADD KEY `lembur_pegawai_absensi_id_foreign` (`absensi_id`),
  ADD KEY `lembur_pegawai_disetujui_oleh_pegawai_id_foreign` (`disetujui_oleh_pegawai_id`);

--
-- Indexes for table `lokasi_absensi`
--
ALTER TABLE `lokasi_absensi`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `lokasi_absensi_kode_lokasi_unique` (`kode_lokasi`);

--
-- Indexes for table `migrations`
--
ALTER TABLE `migrations`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `password_reset_tokens`
--
ALTER TABLE `password_reset_tokens`
  ADD PRIMARY KEY (`email`);

--
-- Indexes for table `pegawai`
--
ALTER TABLE `pegawai`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pegawai_nip_unique` (`nip`),
  ADD UNIQUE KEY `pegawai_nik_unique` (`nik`),
  ADD UNIQUE KEY `pegawai_email_unique` (`email`),
  ADD KEY `pegawai_user_id_foreign` (`user_id`),
  ADD KEY `pegawai_departemen_id_foreign` (`departemen_id`),
  ADD KEY `pegawai_divisi_id_foreign` (`divisi_id`),
  ADD KEY `pegawai_jabatan_id_foreign` (`jabatan_id`),
  ADD KEY `pegawai_atasan_id_foreign` (`atasan_id`),
  ADD KEY `pegawai_lokasi_absensi_id_foreign` (`lokasi_absensi_id`),
  ADD KEY `pegawai_hari_kerja_id_foreign` (`hari_kerja_id`);

--
-- Indexes for table `pegawai_komponen_gaji`
--
ALTER TABLE `pegawai_komponen_gaji`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pegawai_komponen_unique` (`pegawai_id`,`komponen_gaji_id`),
  ADD KEY `pegawai_komponen_gaji_komponen_gaji_id_foreign` (`komponen_gaji_id`);

--
-- Indexes for table `pendidikan_pegawai`
--
ALTER TABLE `pendidikan_pegawai`
  ADD PRIMARY KEY (`id`),
  ADD KEY `pendidikan_pegawai_pegawai_id_foreign` (`pegawai_id`);

--
-- Indexes for table `pengajuan_izin`
--
ALTER TABLE `pengajuan_izin`
  ADD PRIMARY KEY (`id`),
  ADD KEY `pengajuan_izin_pegawai_id_foreign` (`pegawai_id`),
  ADD KEY `pengajuan_izin_disetujui_oleh_pegawai_id_foreign` (`disetujui_oleh_pegawai_id`);

--
-- Indexes for table `pengajuan_masalah`
--
ALTER TABLE `pengajuan_masalah`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pengajuan_masalah_nomor_tiket_unique` (`nomor_tiket`),
  ADD KEY `pengajuan_masalah_pegawai_id_foreign` (`pegawai_id`),
  ADD KEY `pengajuan_masalah_absensi_id_foreign` (`absensi_id`),
  ADD KEY `pengajuan_masalah_diproses_oleh_user_id_foreign` (`diproses_oleh_user_id`);

--
-- Indexes for table `pengajuan_reimbursement`
--
ALTER TABLE `pengajuan_reimbursement`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pengajuan_reimbursement_nomor_pengajuan_unique` (`nomor_pengajuan`),
  ADD KEY `pengajuan_reimbursement_reimbursement_jenis_id_foreign` (`reimbursement_jenis_id`),
  ADD KEY `pengajuan_reimbursement_disetujui_oleh_id_foreign` (`disetujui_oleh_id`),
  ADD KEY `idx_reimb_pegawai_status` (`pegawai_id`,`status`),
  ADD KEY `idx_reimb_tanggal_status` (`tanggal_pengajuan`,`status`);

--
-- Indexes for table `pengaturan_approval`
--
ALTER TABLE `pengaturan_approval`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pengaturan_approval_modul_unique` (`modul`);

--
-- Indexes for table `pengaturan_approval_step`
--
ALTER TABLE `pengaturan_approval_step`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_alur_step` (`pengaturan_approval_id`,`step_ke`),
  ADD KEY `pengaturan_approval_step_pegawai_id_foreign` (`pegawai_id`);

--
-- Indexes for table `pengaturan_lembur`
--
ALTER TABLE `pengaturan_lembur`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pengaturan_lembur_kode_aturan_unique` (`kode_aturan`);

--
-- Indexes for table `pengaturan_monitoring`
--
ALTER TABLE `pengaturan_monitoring`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `penggajian`
--
ALTER TABLE `penggajian`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pegawai_bulan_tahun_unique` (`pegawai_id`,`bulan`,`tahun`),
  ADD UNIQUE KEY `penggajian_nomor_slip_unique` (`nomor_slip`),
  ADD KEY `penggajian_user_id_pembuat_foreign` (`user_id_pembuat`);

--
-- Indexes for table `penggajian_detail`
--
ALTER TABLE `penggajian_detail`
  ADD PRIMARY KEY (`id`),
  ADD KEY `penggajian_detail_penggajian_id_foreign` (`penggajian_id`),
  ADD KEY `penggajian_detail_komponen_gaji_id_foreign` (`komponen_gaji_id`);

--
-- Indexes for table `pengumuman`
--
ALTER TABLE `pengumuman`
  ADD PRIMARY KEY (`id`),
  ADD KEY `pengumuman_created_by_user_id_foreign` (`created_by_user_id`),
  ADD KEY `idx_pengumuman_periode` (`is_aktif`,`tanggal_mulai`,`tanggal_selesai`),
  ADD KEY `idx_pengumuman_target` (`target_audience`);

--
-- Indexes for table `pengumuman_pegawai`
--
ALTER TABLE `pengumuman_pegawai`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_pengumuman_pegawai` (`pengumuman_id`,`pegawai_id`),
  ADD KEY `idx_pegawai_dibaca` (`pegawai_id`,`is_dibaca`);

--
-- Indexes for table `penjadwalan_kerja`
--
ALTER TABLE `penjadwalan_kerja`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_pegawai_tanggal_roster` (`pegawai_id`,`tanggal`),
  ADD KEY `penjadwalan_kerja_jam_kerja_id_foreign` (`jam_kerja_id`);

--
-- Indexes for table `penugasan`
--
ALTER TABLE `penugasan`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `penugasan_kode_penugasan_unique` (`kode_penugasan`),
  ADD KEY `penugasan_atasan_id_foreign` (`atasan_id`);

--
-- Indexes for table `penugasan_anggota`
--
ALTER TABLE `penugasan_anggota`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `penugasan_anggota_penugasan_id_pegawai_id_unique` (`penugasan_id`,`pegawai_id`),
  ADD KEY `penugasan_anggota_pegawai_id_foreign` (`pegawai_id`);

--
-- Indexes for table `penugasan_dokumen`
--
ALTER TABLE `penugasan_dokumen`
  ADD PRIMARY KEY (`id`),
  ADD KEY `penugasan_dokumen_penugasan_id_foreign` (`penugasan_id`),
  ADD KEY `penugasan_dokumen_diunggah_oleh_foreign` (`diunggah_oleh`);

--
-- Indexes for table `penugasan_dokumen_online`
--
ALTER TABLE `penugasan_dokumen_online`
  ADD PRIMARY KEY (`id`),
  ADD KEY `penugasan_dokumen_online_penugasan_id_foreign` (`penugasan_id`),
  ADD KEY `penugasan_dokumen_online_terakhir_diubah_oleh_foreign` (`terakhir_diubah_oleh`);

--
-- Indexes for table `penugasan_komentar`
--
ALTER TABLE `penugasan_komentar`
  ADD PRIMARY KEY (`id`),
  ADD KEY `penugasan_komentar_penugasan_id_foreign` (`penugasan_id`),
  ADD KEY `penugasan_komentar_pegawai_id_foreign` (`pegawai_id`);

--
-- Indexes for table `penugasan_spreadsheet`
--
ALTER TABLE `penugasan_spreadsheet`
  ADD PRIMARY KEY (`id`),
  ADD KEY `penugasan_spreadsheet_penugasan_id_foreign` (`penugasan_id`),
  ADD KEY `penugasan_spreadsheet_terakhir_diubah_oleh_foreign` (`terakhir_diubah_oleh`);

--
-- Indexes for table `permissions`
--
ALTER TABLE `permissions`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `permissions_slug_unique` (`slug`);

--
-- Indexes for table `pinjaman_angsuran`
--
ALTER TABLE `pinjaman_angsuran`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pinjaman_angsuran_nomor_transaksi_unique` (`nomor_transaksi`),
  ADD KEY `pinjaman_angsuran_penggajian_id_foreign` (`penggajian_id`),
  ADD KEY `pinjaman_angsuran_diterima_oleh_foreign` (`diterima_oleh`),
  ADD KEY `pinjaman_angsuran_pinjaman_pegawai_id_tanggal_bayar_index` (`pinjaman_pegawai_id`,`tanggal_bayar`);

--
-- Indexes for table `pinjaman_pegawai`
--
ALTER TABLE `pinjaman_pegawai`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `pinjaman_pegawai_nomor_pinjaman_unique` (`nomor_pinjaman`),
  ADD KEY `pinjaman_pegawai_created_by_foreign` (`created_by`),
  ADD KEY `pinjaman_pegawai_pegawai_id_status_index` (`pegawai_id`,`status`),
  ADD KEY `pinjaman_pegawai_mulai_cicil_bulan_index` (`mulai_cicil_bulan`);

--
-- Indexes for table `reimbursement_jenis`
--
ALTER TABLE `reimbursement_jenis`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `reimbursement_jenis_kode_jenis_unique` (`kode_jenis`);

--
-- Indexes for table `revisi_absensi`
--
ALTER TABLE `revisi_absensi`
  ADD PRIMARY KEY (`id`),
  ADD KEY `revisi_absensi_absensi_id_foreign` (`absensi_id`),
  ADD KEY `revisi_absensi_pegawai_id_foreign` (`pegawai_id`),
  ADD KEY `revisi_absensi_user_id_eksekutor_foreign` (`user_id_eksekutor`);

--
-- Indexes for table `roles`
--
ALTER TABLE `roles`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `roles_slug_unique` (`slug`);

--
-- Indexes for table `role_has_permissions`
--
ALTER TABLE `role_has_permissions`
  ADD PRIMARY KEY (`role_id`,`permission_id`),
  ADD KEY `role_has_permissions_permission_id_foreign` (`permission_id`);

--
-- Indexes for table `sesi_perangkat`
--
ALTER TABLE `sesi_perangkat`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `sesi_perangkat_token_unique` (`token`),
  ADD KEY `sesi_perangkat_pegawai_id_foreign` (`pegawai_id`);

--
-- Indexes for table `sessions`
--
ALTER TABLE `sessions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `sessions_user_id_index` (`user_id`),
  ADD KEY `sessions_last_activity_index` (`last_activity`);

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `users_email_unique` (`email`),
  ADD KEY `users_role_id_foreign` (`role_id`);

--
-- Indexes for table `user_has_roles`
--
ALTER TABLE `user_has_roles`
  ADD PRIMARY KEY (`user_id`,`role_id`),
  ADD KEY `user_has_roles_role_id_foreign` (`role_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `absensi`
--
ALTER TABLE `absensi`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=233;

--
-- AUTO_INCREMENT for table `api_keys`
--
ALTER TABLE `api_keys`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=24;

--
-- AUTO_INCREMENT for table `approval_pengajuan_progress`
--
ALTER TABLE `approval_pengajuan_progress`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

--
-- AUTO_INCREMENT for table `denda_keterlambatan`
--
ALTER TABLE `denda_keterlambatan`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=51;

--
-- AUTO_INCREMENT for table `departemen`
--
ALTER TABLE `departemen`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `divisi`
--
ALTER TABLE `divisi`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `failed_jobs`
--
ALTER TABLE `failed_jobs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `hari_kerja`
--
ALTER TABLE `hari_kerja`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `hari_libur`
--
ALTER TABLE `hari_libur`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=46;

--
-- AUTO_INCREMENT for table `jabatan`
--
ALTER TABLE `jabatan`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `jadwal_kenaikan_pangkat`
--
ALTER TABLE `jadwal_kenaikan_pangkat`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `jam_kerja`
--
ALTER TABLE `jam_kerja`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=77;

--
-- AUTO_INCREMENT for table `jobs`
--
ALTER TABLE `jobs`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `kenaikan_pangkat`
--
ALTER TABLE `kenaikan_pangkat`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `komponen_gaji`
--
ALTER TABLE `komponen_gaji`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `konfigurasi_cuti`
--
ALTER TABLE `konfigurasi_cuti`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `kunci_laporan_absensi`
--
ALTER TABLE `kunci_laporan_absensi`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=48;

--
-- AUTO_INCREMENT for table `kunjungan_dinas`
--
ALTER TABLE `kunjungan_dinas`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=35;

--
-- AUTO_INCREMENT for table `kuota_cuti_pegawai`
--
ALTER TABLE `kuota_cuti_pegawai`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `laporan_absensi_terkunci`
--
ALTER TABLE `laporan_absensi_terkunci`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=572;

--
-- AUTO_INCREMENT for table `lembur_pegawai`
--
ALTER TABLE `lembur_pegawai`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=35;

--
-- AUTO_INCREMENT for table `lokasi_absensi`
--
ALTER TABLE `lokasi_absensi`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=49;

--
-- AUTO_INCREMENT for table `migrations`
--
ALTER TABLE `migrations`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=37;

--
-- AUTO_INCREMENT for table `pegawai`
--
ALTER TABLE `pegawai`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT for table `pegawai_komponen_gaji`
--
ALTER TABLE `pegawai_komponen_gaji`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

--
-- AUTO_INCREMENT for table `pendidikan_pegawai`
--
ALTER TABLE `pendidikan_pegawai`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `pengajuan_izin`
--
ALTER TABLE `pengajuan_izin`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=43;

--
-- AUTO_INCREMENT for table `pengajuan_masalah`
--
ALTER TABLE `pengajuan_masalah`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `pengajuan_reimbursement`
--
ALTER TABLE `pengajuan_reimbursement`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `pengaturan_approval`
--
ALTER TABLE `pengaturan_approval`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `pengaturan_approval_step`
--
ALTER TABLE `pengaturan_approval_step`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `pengaturan_lembur`
--
ALTER TABLE `pengaturan_lembur`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `pengaturan_monitoring`
--
ALTER TABLE `pengaturan_monitoring`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `penggajian`
--
ALTER TABLE `penggajian`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `penggajian_detail`
--
ALTER TABLE `penggajian_detail`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=119;

--
-- AUTO_INCREMENT for table `pengumuman`
--
ALTER TABLE `pengumuman`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `pengumuman_pegawai`
--
ALTER TABLE `pengumuman_pegawai`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `penjadwalan_kerja`
--
ALTER TABLE `penjadwalan_kerja`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=44;

--
-- AUTO_INCREMENT for table `penugasan`
--
ALTER TABLE `penugasan`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `penugasan_anggota`
--
ALTER TABLE `penugasan_anggota`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `penugasan_dokumen`
--
ALTER TABLE `penugasan_dokumen`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `penugasan_dokumen_online`
--
ALTER TABLE `penugasan_dokumen_online`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `penugasan_komentar`
--
ALTER TABLE `penugasan_komentar`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `penugasan_spreadsheet`
--
ALTER TABLE `penugasan_spreadsheet`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `permissions`
--
ALTER TABLE `permissions`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=43;

--
-- AUTO_INCREMENT for table `pinjaman_angsuran`
--
ALTER TABLE `pinjaman_angsuran`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `pinjaman_pegawai`
--
ALTER TABLE `pinjaman_pegawai`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `reimbursement_jenis`
--
ALTER TABLE `reimbursement_jenis`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `revisi_absensi`
--
ALTER TABLE `revisi_absensi`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT for table `roles`
--
ALTER TABLE `roles`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `sesi_perangkat`
--
ALTER TABLE `sesi_perangkat`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=30;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `absensi`
--
ALTER TABLE `absensi`
  ADD CONSTRAINT `absensi_denda_masuk_id_foreign` FOREIGN KEY (`denda_masuk_id`) REFERENCES `denda_keterlambatan` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `absensi_denda_pulang_id_foreign` FOREIGN KEY (`denda_pulang_id`) REFERENCES `denda_keterlambatan` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `absensi_denda_tidak_hadir_id_foreign` FOREIGN KEY (`denda_tidak_hadir_id`) REFERENCES `denda_keterlambatan` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `absensi_jam_kerja_id_foreign` FOREIGN KEY (`jam_kerja_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `absensi_lokasi_absensi_id_foreign` FOREIGN KEY (`lokasi_absensi_id`) REFERENCES `lokasi_absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `absensi_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `approval_pengajuan_progress`
--
ALTER TABLE `approval_pengajuan_progress`
  ADD CONSTRAINT `approval_pengajuan_progress_pegawai_approver_id_foreign` FOREIGN KEY (`pegawai_approver_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `departemen`
--
ALTER TABLE `departemen`
  ADD CONSTRAINT `departemen_parent_id_foreign` FOREIGN KEY (`parent_id`) REFERENCES `departemen` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `divisi`
--
ALTER TABLE `divisi`
  ADD CONSTRAINT `divisi_departemen_id_foreign` FOREIGN KEY (`departemen_id`) REFERENCES `departemen` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `divisi_parent_id_foreign` FOREIGN KEY (`parent_id`) REFERENCES `divisi` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `hari_kerja`
--
ALTER TABLE `hari_kerja`
  ADD CONSTRAINT `hari_kerja_jam_kerja_jumat_id_foreign` FOREIGN KEY (`jam_kerja_jumat_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `hari_kerja_jam_kerja_kamis_id_foreign` FOREIGN KEY (`jam_kerja_kamis_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `hari_kerja_jam_kerja_minggu_id_foreign` FOREIGN KEY (`jam_kerja_minggu_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `hari_kerja_jam_kerja_rabu_id_foreign` FOREIGN KEY (`jam_kerja_rabu_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `hari_kerja_jam_kerja_sabtu_id_foreign` FOREIGN KEY (`jam_kerja_sabtu_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `hari_kerja_jam_kerja_selasa_id_foreign` FOREIGN KEY (`jam_kerja_selasa_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `hari_kerja_jam_kerja_senin_id_foreign` FOREIGN KEY (`jam_kerja_senin_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `kenaikan_pangkat`
--
ALTER TABLE `kenaikan_pangkat`
  ADD CONSTRAINT `kenaikan_pangkat_atasan_baru_id_foreign` FOREIGN KEY (`atasan_baru_id`) REFERENCES `pegawai` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kenaikan_pangkat_atasan_lama_id_foreign` FOREIGN KEY (`atasan_lama_id`) REFERENCES `pegawai` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kenaikan_pangkat_departemen_baru_id_foreign` FOREIGN KEY (`departemen_baru_id`) REFERENCES `departemen` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kenaikan_pangkat_departemen_lama_id_foreign` FOREIGN KEY (`departemen_lama_id`) REFERENCES `departemen` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kenaikan_pangkat_disetujui_oleh_user_id_foreign` FOREIGN KEY (`disetujui_oleh_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kenaikan_pangkat_divisi_baru_id_foreign` FOREIGN KEY (`divisi_baru_id`) REFERENCES `divisi` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kenaikan_pangkat_divisi_lama_id_foreign` FOREIGN KEY (`divisi_lama_id`) REFERENCES `divisi` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kenaikan_pangkat_jabatan_baru_id_foreign` FOREIGN KEY (`jabatan_baru_id`) REFERENCES `jabatan` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kenaikan_pangkat_jabatan_lama_id_foreign` FOREIGN KEY (`jabatan_lama_id`) REFERENCES `jabatan` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kenaikan_pangkat_jadwal_kenaikan_pangkat_id_foreign` FOREIGN KEY (`jadwal_kenaikan_pangkat_id`) REFERENCES `jadwal_kenaikan_pangkat` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kenaikan_pangkat_lokasi_baru_id_foreign` FOREIGN KEY (`lokasi_baru_id`) REFERENCES `lokasi_absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kenaikan_pangkat_lokasi_lama_id_foreign` FOREIGN KEY (`lokasi_lama_id`) REFERENCES `lokasi_absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kenaikan_pangkat_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kunci_laporan_absensi`
--
ALTER TABLE `kunci_laporan_absensi`
  ADD CONSTRAINT `kunci_laporan_absensi_dikunci_oleh_user_id_foreign` FOREIGN KEY (`dikunci_oleh_user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kunjungan_dinas`
--
ALTER TABLE `kunjungan_dinas`
  ADD CONSTRAINT `kunjungan_dinas_disetujui_oleh_pegawai_id_foreign` FOREIGN KEY (`disetujui_oleh_pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kunjungan_dinas_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kuota_cuti_pegawai`
--
ALTER TABLE `kuota_cuti_pegawai`
  ADD CONSTRAINT `kuota_cuti_pegawai_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `laporan_absensi_terkunci`
--
ALTER TABLE `laporan_absensi_terkunci`
  ADD CONSTRAINT `laporan_absensi_terkunci_absensi_id_foreign` FOREIGN KEY (`absensi_id`) REFERENCES `absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `laporan_absensi_terkunci_denda_masuk_id_foreign` FOREIGN KEY (`denda_masuk_id`) REFERENCES `denda_keterlambatan` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `laporan_absensi_terkunci_denda_pulang_id_foreign` FOREIGN KEY (`denda_pulang_id`) REFERENCES `denda_keterlambatan` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `laporan_absensi_terkunci_denda_tidak_hadir_id_foreign` FOREIGN KEY (`denda_tidak_hadir_id`) REFERENCES `denda_keterlambatan` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `laporan_absensi_terkunci_jam_kerja_id_foreign` FOREIGN KEY (`jam_kerja_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `laporan_absensi_terkunci_kunci_laporan_id_foreign` FOREIGN KEY (`kunci_laporan_id`) REFERENCES `kunci_laporan_absensi` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `laporan_absensi_terkunci_lokasi_absensi_id_foreign` FOREIGN KEY (`lokasi_absensi_id`) REFERENCES `lokasi_absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `laporan_absensi_terkunci_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `lembur_pegawai`
--
ALTER TABLE `lembur_pegawai`
  ADD CONSTRAINT `lembur_pegawai_absensi_id_foreign` FOREIGN KEY (`absensi_id`) REFERENCES `absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `lembur_pegawai_disetujui_oleh_pegawai_id_foreign` FOREIGN KEY (`disetujui_oleh_pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `lembur_pegawai_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pegawai`
--
ALTER TABLE `pegawai`
  ADD CONSTRAINT `pegawai_atasan_id_foreign` FOREIGN KEY (`atasan_id`) REFERENCES `pegawai` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pegawai_departemen_id_foreign` FOREIGN KEY (`departemen_id`) REFERENCES `departemen` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `pegawai_divisi_id_foreign` FOREIGN KEY (`divisi_id`) REFERENCES `divisi` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `pegawai_hari_kerja_id_foreign` FOREIGN KEY (`hari_kerja_id`) REFERENCES `hari_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pegawai_jabatan_id_foreign` FOREIGN KEY (`jabatan_id`) REFERENCES `jabatan` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `pegawai_lokasi_absensi_id_foreign` FOREIGN KEY (`lokasi_absensi_id`) REFERENCES `lokasi_absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pegawai_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `pegawai_komponen_gaji`
--
ALTER TABLE `pegawai_komponen_gaji`
  ADD CONSTRAINT `pegawai_komponen_gaji_komponen_gaji_id_foreign` FOREIGN KEY (`komponen_gaji_id`) REFERENCES `komponen_gaji` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `pegawai_komponen_gaji_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pendidikan_pegawai`
--
ALTER TABLE `pendidikan_pegawai`
  ADD CONSTRAINT `pendidikan_pegawai_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pengajuan_izin`
--
ALTER TABLE `pengajuan_izin`
  ADD CONSTRAINT `pengajuan_izin_disetujui_oleh_pegawai_id_foreign` FOREIGN KEY (`disetujui_oleh_pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pengajuan_izin_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pengajuan_masalah`
--
ALTER TABLE `pengajuan_masalah`
  ADD CONSTRAINT `pengajuan_masalah_absensi_id_foreign` FOREIGN KEY (`absensi_id`) REFERENCES `absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pengajuan_masalah_diproses_oleh_user_id_foreign` FOREIGN KEY (`diproses_oleh_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pengajuan_masalah_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pengajuan_reimbursement`
--
ALTER TABLE `pengajuan_reimbursement`
  ADD CONSTRAINT `pengajuan_reimbursement_disetujui_oleh_id_foreign` FOREIGN KEY (`disetujui_oleh_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pengajuan_reimbursement_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `pengajuan_reimbursement_reimbursement_jenis_id_foreign` FOREIGN KEY (`reimbursement_jenis_id`) REFERENCES `reimbursement_jenis` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pengaturan_approval_step`
--
ALTER TABLE `pengaturan_approval_step`
  ADD CONSTRAINT `pengaturan_approval_step_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `pengaturan_approval_step_pengaturan_approval_id_foreign` FOREIGN KEY (`pengaturan_approval_id`) REFERENCES `pengaturan_approval` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `penggajian`
--
ALTER TABLE `penggajian`
  ADD CONSTRAINT `penggajian_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `penggajian_user_id_pembuat_foreign` FOREIGN KEY (`user_id_pembuat`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `penggajian_detail`
--
ALTER TABLE `penggajian_detail`
  ADD CONSTRAINT `penggajian_detail_komponen_gaji_id_foreign` FOREIGN KEY (`komponen_gaji_id`) REFERENCES `komponen_gaji` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `penggajian_detail_penggajian_id_foreign` FOREIGN KEY (`penggajian_id`) REFERENCES `penggajian` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pengumuman`
--
ALTER TABLE `pengumuman`
  ADD CONSTRAINT `pengumuman_created_by_user_id_foreign` FOREIGN KEY (`created_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `pengumuman_pegawai`
--
ALTER TABLE `pengumuman_pegawai`
  ADD CONSTRAINT `pengumuman_pegawai_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `pengumuman_pegawai_pengumuman_id_foreign` FOREIGN KEY (`pengumuman_id`) REFERENCES `pengumuman` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `penjadwalan_kerja`
--
ALTER TABLE `penjadwalan_kerja`
  ADD CONSTRAINT `penjadwalan_kerja_jam_kerja_id_foreign` FOREIGN KEY (`jam_kerja_id`) REFERENCES `jam_kerja` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `penjadwalan_kerja_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `penugasan`
--
ALTER TABLE `penugasan`
  ADD CONSTRAINT `penugasan_atasan_id_foreign` FOREIGN KEY (`atasan_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `penugasan_anggota`
--
ALTER TABLE `penugasan_anggota`
  ADD CONSTRAINT `penugasan_anggota_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `penugasan_anggota_penugasan_id_foreign` FOREIGN KEY (`penugasan_id`) REFERENCES `penugasan` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `penugasan_dokumen`
--
ALTER TABLE `penugasan_dokumen`
  ADD CONSTRAINT `penugasan_dokumen_diunggah_oleh_foreign` FOREIGN KEY (`diunggah_oleh`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `penugasan_dokumen_penugasan_id_foreign` FOREIGN KEY (`penugasan_id`) REFERENCES `penugasan` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `penugasan_dokumen_online`
--
ALTER TABLE `penugasan_dokumen_online`
  ADD CONSTRAINT `penugasan_dokumen_online_penugasan_id_foreign` FOREIGN KEY (`penugasan_id`) REFERENCES `penugasan` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `penugasan_dokumen_online_terakhir_diubah_oleh_foreign` FOREIGN KEY (`terakhir_diubah_oleh`) REFERENCES `pegawai` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `penugasan_komentar`
--
ALTER TABLE `penugasan_komentar`
  ADD CONSTRAINT `penugasan_komentar_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `penugasan_komentar_penugasan_id_foreign` FOREIGN KEY (`penugasan_id`) REFERENCES `penugasan` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `penugasan_spreadsheet`
--
ALTER TABLE `penugasan_spreadsheet`
  ADD CONSTRAINT `penugasan_spreadsheet_penugasan_id_foreign` FOREIGN KEY (`penugasan_id`) REFERENCES `penugasan` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `penugasan_spreadsheet_terakhir_diubah_oleh_foreign` FOREIGN KEY (`terakhir_diubah_oleh`) REFERENCES `pegawai` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `pinjaman_angsuran`
--
ALTER TABLE `pinjaman_angsuran`
  ADD CONSTRAINT `pinjaman_angsuran_diterima_oleh_foreign` FOREIGN KEY (`diterima_oleh`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pinjaman_angsuran_penggajian_id_foreign` FOREIGN KEY (`penggajian_id`) REFERENCES `penggajian` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pinjaman_angsuran_pinjaman_pegawai_id_foreign` FOREIGN KEY (`pinjaman_pegawai_id`) REFERENCES `pinjaman_pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `pinjaman_pegawai`
--
ALTER TABLE `pinjaman_pegawai`
  ADD CONSTRAINT `pinjaman_pegawai_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `pinjaman_pegawai_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `revisi_absensi`
--
ALTER TABLE `revisi_absensi`
  ADD CONSTRAINT `revisi_absensi_absensi_id_foreign` FOREIGN KEY (`absensi_id`) REFERENCES `absensi` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `revisi_absensi_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `revisi_absensi_user_id_eksekutor_foreign` FOREIGN KEY (`user_id_eksekutor`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `role_has_permissions`
--
ALTER TABLE `role_has_permissions`
  ADD CONSTRAINT `role_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `role_has_permissions_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `sesi_perangkat`
--
ALTER TABLE `sesi_perangkat`
  ADD CONSTRAINT `sesi_perangkat_pegawai_id_foreign` FOREIGN KEY (`pegawai_id`) REFERENCES `pegawai` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `users`
--
ALTER TABLE `users`
  ADD CONSTRAINT `users_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `user_has_roles`
--
ALTER TABLE `user_has_roles`
  ADD CONSTRAINT `user_has_roles_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `user_has_roles_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
