[2026-02-01 04:33:23] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 04:33:23] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 04:33:23] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 04:33:23] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '12'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 04:33:23] [INFO] Salary data retrieved | Context: {"count":0} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 04:33:29] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 04:33:29] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 04:33:29] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '12'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 04:33:29] [INFO] Salary data retrieved | Context: {"count":0} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 05:37:12] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:37:12] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 05:37:12] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 05:37:12] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 05:37:12] [INFO] Salary data retrieved | Context: {"count":0} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 05:37:17] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 05:37:17] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 05:37:17] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 05:37:17] [INFO] Salary data retrieved | Context: {"count":0} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:28:06] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:28:06] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:28:06] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:28:06] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:28:06] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:28:06] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:28:06] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:28:06] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '12'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:28:06] [INFO] Salary data retrieved | Context: {"count":0} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:42:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:42:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:42:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:42:02] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:42:02] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:42:02] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:42:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:42:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 07:42:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:42:10] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:42:10] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:42:10] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:42:10] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:42:10] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:42:10] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:42:13] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:13] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [SQL] 
            SELECT 
                u.id as user_id,
                u.nama_lengkap,
                SUM(CASE 
                    WHEN a.durasi_kerja_menit >= 480 THEN 1 
                    WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                    WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                    ELSE 0 
                END) as total_nilai
            FROM users u
            INNER JOIN absensi a ON u.id = a.user_id
            WHERE MONTH(a.tanggal) = ? 
            AND YEAR(a.tanggal) = ?
            AND u.perusahaan_id = ?
            AND u.role != 'admin'
            GROUP BY u.id, u.nama_lengkap
            HAVING total_nilai > 0
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Salary calculated | Context: {"user_id":10,"gaji_pokok":2800000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3570000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdddsd","length":18} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:13] [ERROR] Exception: The number of elements in the type definition string must match the number of bind variables | Context: {"file":"\/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php","line":415,"trace":"#0 \/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php(415): mysqli_stmt->bind_param()\n#1 {main}"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:38] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:38] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:38] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:38] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:42:38] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:42:38] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:42:38] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:42:38] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:42:38] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:42:38] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:42:38] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 07:42:38] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:42:51] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:51] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"2","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [INFO] Calculating salary | Context: {"bulan":2,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                GROUP BY a.user_id
            ) as totals
         | Context: [2,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [INFO] Total nilai absensi calculated | Context: {"total":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [ERROR] No attendance data found | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:51] [ERROR] Exception: Tidak ada data absensi untuk bulan/tahun ini | Context: {"file":"\/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php","line":186,"trace":"#0 {main}"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:57] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:42:57] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:42:57] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:42:57] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:42:57] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:42:57] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:42:59] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:42:59] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [SQL] 
            SELECT 
                u.id as user_id,
                u.nama_lengkap,
                SUM(CASE 
                    WHEN a.durasi_kerja_menit >= 480 THEN 1 
                    WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                    WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                    ELSE 0 
                END) as total_nilai
            FROM users u
            INNER JOIN absensi a ON u.id = a.user_id
            WHERE MONTH(a.tanggal) = ? 
            AND YEAR(a.tanggal) = ?
            AND u.perusahaan_id = ?
            AND u.role != 'admin'
            GROUP BY u.id, u.nama_lengkap
            HAVING total_nilai > 0
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Salary calculated | Context: {"user_id":10,"gaji_pokok":2800000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3570000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdddsd","length":18} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:42:59] [ERROR] Exception: The number of elements in the type definition string must match the number of bind variables | Context: {"file":"\/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php","line":415,"trace":"#0 \/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php(415): mysqli_stmt->bind_param()\n#1 {main}"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:43:10] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:43:10] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:10] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:43:10] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:43:10] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:43:10] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:43:10] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:43:10] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:43:10] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:43:10] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:43:10] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 07:43:10] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:43:29] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:43:29] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:43:29] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:43:29] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:43:29] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:43:29] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:43:35] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:43:35] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [SQL] 
            SELECT 
                u.id as user_id,
                u.nama_lengkap,
                SUM(CASE 
                    WHEN a.durasi_kerja_menit >= 480 THEN 1 
                    WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                    WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                    ELSE 0 
                END) as total_nilai
            FROM users u
            INNER JOIN absensi a ON u.id = a.user_id
            WHERE MONTH(a.tanggal) = ? 
            AND YEAR(a.tanggal) = ?
            AND u.perusahaan_id = ?
            AND u.role != 'admin'
            GROUP BY u.id, u.nama_lengkap
            HAVING total_nilai > 0
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Salary calculated | Context: {"user_id":10,"gaji_pokok":2800000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3570000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdddsd","length":18} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:43:35] [ERROR] Exception: The number of elements in the type definition string must match the number of bind variables | Context: {"file":"\/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php","line":415,"trace":"#0 \/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php(415): mysqli_stmt->bind_param()\n#1 {main}"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:50:50] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:50:50] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:50:50] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:50:50] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:50:50] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:50:50] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:50:50] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:50:50] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:50:50] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:50:50] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:50:50] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 07:50:50] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:50:56] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:50:56] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:50:56] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:50:56] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:50:56] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:50:56] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:51:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:51:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [SQL] 
            SELECT 
                u.id as user_id,
                u.nama_lengkap,
                SUM(CASE 
                    WHEN a.durasi_kerja_menit >= 480 THEN 1 
                    WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                    WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                    ELSE 0 
                END) as total_nilai
            FROM users u
            INNER JOIN absensi a ON u.id = a.user_id
            WHERE MONTH(a.tanggal) = ? 
            AND YEAR(a.tanggal) = ?
            AND u.perusahaan_id = ?
            AND u.role != 'admin'
            GROUP BY u.id, u.nama_lengkap
            HAVING total_nilai > 0
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Salary calculated | Context: {"user_id":10,"gaji_pokok":2800000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3570000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [INFO] Type definition | Context: {"definition":"iiiidddddiisdsd","length":15,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:51:02] [ERROR] Exception: The number of elements in the type definition string must match the number of bind variables | Context: {"file":"\/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php","line":426,"trace":"#0 \/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php(426): mysqli_stmt->bind_param()\n#1 {main}"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:53:04] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:53:04] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:04] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:53:05] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:53:05] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 07:53:05] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:53:05] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:53:05] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:53:05] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:53:05] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:53:05] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:53:05] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:53:12] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:53:12] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:53:12] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:53:12] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:53:12] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:53:12] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:53:15] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:53:15] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [SQL] 
            SELECT 
                u.id as user_id,
                u.nama_lengkap,
                SUM(CASE 
                    WHEN a.durasi_kerja_menit >= 480 THEN 1 
                    WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                    WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                    ELSE 0 
                END) as total_nilai
            FROM users u
            INNER JOIN absensi a ON u.id = a.user_id
            WHERE MONTH(a.tanggal) = ? 
            AND YEAR(a.tanggal) = ?
            AND u.perusahaan_id = ?
            AND u.role != 'admin'
            GROUP BY u.id, u.nama_lengkap
            HAVING total_nilai > 0
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Salary calculated | Context: {"user_id":10,"gaji_pokok":2800000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3570000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsd","length":16,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:15] [ERROR] Exception: The number of elements in the type definition string must match the number of bind variables | Context: {"file":"\/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php","line":426,"trace":"#0 \/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php(426): mysqli_stmt->bind_param()\n#1 {main}"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:53:24] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:53:24] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:24] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:53:24] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:53:24] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:53:24] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:53:24] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:53:24] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:53:24] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:53:24] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:53:24] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 07:53:24] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:53:26] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:53:26] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:53:26] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:53:26] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:53:26] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:53:26] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:53:28] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:53:28] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [SQL] 
            SELECT 
                u.id as user_id,
                u.nama_lengkap,
                SUM(CASE 
                    WHEN a.durasi_kerja_menit >= 480 THEN 1 
                    WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                    WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                    ELSE 0 
                END) as total_nilai
            FROM users u
            INNER JOIN absensi a ON u.id = a.user_id
            WHERE MONTH(a.tanggal) = ? 
            AND YEAR(a.tanggal) = ?
            AND u.perusahaan_id = ?
            AND u.role != 'admin'
            GROUP BY u.id, u.nama_lengkap
            HAVING total_nilai > 0
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Salary calculated | Context: {"user_id":10,"gaji_pokok":2800000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3570000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsd","length":16,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:53:28] [ERROR] Exception: The number of elements in the type definition string must match the number of bind variables | Context: {"file":"\/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php","line":426,"trace":"#0 \/home\/moxe6138\/public_html\/kas_dbn\/menu\/penggajian.php(426): mysqli_stmt->bind_param()\n#1 {main}"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:55:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:55:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:55:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:55:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:55:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:55:02] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:55:02] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:55:02] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 00:55:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:55:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 07:55:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 00:55:08] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:55:08] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:55:08] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:55:08] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:55:08] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:55:08] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:55:10] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:55:10] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [SQL] 
            SELECT 
                u.id as user_id,
                u.nama_lengkap,
                SUM(CASE 
                    WHEN a.durasi_kerja_menit >= 480 THEN 1 
                    WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                    WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                    ELSE 0 
                END) as total_nilai
            FROM users u
            INNER JOIN absensi a ON u.id = a.user_id
            WHERE MONTH(a.tanggal) = ? 
            AND YEAR(a.tanggal) = ?
            AND u.perusahaan_id = ?
            AND u.role != 'admin'
            GROUP BY u.id, u.nama_lengkap
            HAVING total_nilai > 0
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary calculated | Context: {"user_id":10,"gaji_pokok":2800000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3570000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary saved successfully | Context: {"user_id":10,"nama":"Nanda DBN","processed_count":1} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Processing user | Context: {"user_id":11,"nama":"Dedi DBN","nilai":23} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Fee pemasangan calculated | Context: {"user_id":11,"utama":13,"pembantu":6,"total_fee":1130000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary calculated | Context: {"user_id":11,"gaji_pokok":2927272.727272727,"fee_total":1130000,"potongan":0,"keterangan_potongan":"","gaji_total":4057272.727272727} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary saved successfully | Context: {"user_id":11,"nama":"Dedi DBN","processed_count":2} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Processing user | Context: {"user_id":12,"nama":"Dwi DBN","nilai":21} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Fee pemasangan calculated | Context: {"user_id":12,"utama":16,"pembantu":1,"total_fee":960000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary calculated | Context: {"user_id":12,"gaji_pokok":2672727.272727273,"fee_total":960000,"potongan":0,"keterangan_potongan":"","gaji_total":3632727.272727273} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary saved successfully | Context: {"user_id":12,"nama":"Dwi DBN","processed_count":3} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Processing user | Context: {"user_id":16,"nama":"Fandik DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Fee pemasangan calculated | Context: {"user_id":16,"utama":5,"pembantu":11,"total_fee":810000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary calculated | Context: {"user_id":16,"gaji_pokok":2800000,"fee_total":810000,"potongan":0,"keterangan_potongan":"","gaji_total":3610000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary saved successfully | Context: {"user_id":16,"nama":"Fandik DBN","processed_count":4} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Processing user | Context: {"user_id":22,"nama":"Singgih DBN","nilai":22} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Fee pemasangan calculated | Context: {"user_id":22,"utama":3,"pembantu":7,"total_fee":500000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary calculated | Context: {"user_id":22,"gaji_pokok":2800000,"fee_total":500000,"potongan":0,"keterangan_potongan":"","gaji_total":3300000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Salary saved successfully | Context: {"user_id":22,"nama":"Singgih DBN","processed_count":5} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:55:10] [INFO] Transaction committed successfully | Context: {"processed":5,"errors":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:55:10] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:55:10] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:55:10] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:55:10] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:55:10] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:55:10] [INFO] Salary data retrieved | Context: {"count":5} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:56:49] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 00:56:49] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 07:56:49] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 00:56:57] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:56:57] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:56:57] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 00:56:57] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:56:57] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:56:57] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:56:57] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:56:57] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:56:57] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:57:52] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 00:57:52] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 07:57:52] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 07:57:52] [INFO] Get salary data | Context: {"bulan":12,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 07:57:52] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 12 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 07:57:52] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 00:57:53] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 00:57:53] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 07:57:53] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 07:57:53] [INFO] Get salary data | Context: {"bulan":12,"tahun":2025} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 07:57:53] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 12 AND lp.tahun = 2025
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 07:57:53] [INFO] Salary data retrieved | Context: {"count":7} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 00:58:06] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2025
[2026-02-01 00:58:06] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2025
[2026-02-01 07:58:06] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2025
[2026-02-01 07:58:06] [INFO] Get salary data | Context: {"bulan":1,"tahun":2025} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2025
[2026-02-01 07:58:06] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2025
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2025
[2026-02-01 07:58:06] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2025
[2026-02-01 00:58:08] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 00:58:08] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:58:08] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:58:08] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:58:08] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:58:08] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 01:00:25] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 01:00:25] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 08:00:25] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 01:00:26] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 01:00:26] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 08:00:26] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 01:00:26] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 01:00:26] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:00:26] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:00:26] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:00:26] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:00:26] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 01:00:28] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 01:00:28] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:00:28] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:00:28] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:00:28] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:00:28] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 01:06:46] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 01:06:46] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 08:06:46] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 01:06:46] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 01:06:46] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 08:06:46] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 01:06:46] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 01:06:46] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:06:46] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:06:46] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:06:46] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:06:46] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 01:06:49] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 01:06:49] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:06:49] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:06:49] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:06:49] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:06:49] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 01:08:20] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 01:08:20] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 08:08:20] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 01:08:20] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 01:08:20] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 08:08:20] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 01:08:20] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 01:08:20] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:08:20] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:08:20] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:08:20] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:08:20] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 01:08:22] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 01:08:22] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:08:22] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:08:22] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:08:22] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:08:22] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 01:44:24] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 01:44:24] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 08:44:24] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 01:44:25] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 01:44:25] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 08:44:25] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 01:44:25] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 01:44:25] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:44:25] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:44:25] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:44:25] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 08:44:25] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 01:44:28] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 01:44:28] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:44:28] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:44:28] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:44:28] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 08:44:28] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 02:01:44] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 02:01:44] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:01:44] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 02:01:44] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 02:01:44] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:01:44] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:01:44] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:01:44] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:01:44] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 02:01:44] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 02:01:44] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 09:01:44] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 02:01:47] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 02:01:47] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:01:47] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:01:47] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:01:47] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:01:47] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 02:02:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 02:02:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Config loaded | Context: {"pool":14000000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                AND u.gaji = 1
                AND u.status = 1
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [SQL] 
            SELECT DISTINCT
                u.id as user_id,
                u.nama_lengkap,
                COALESCE(absensi_data.total_nilai, 0) as total_nilai
            FROM users u
            LEFT JOIN (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                GROUP BY a.user_id
            ) as absensi_data ON u.id = absensi_data.user_id
            WHERE u.perusahaan_id = ?
            AND u.role != 'admin'
            AND u.gaji = 1
            AND u.status = 1
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary calculated | Context: {"user_id":10,"is_training":false,"gaji_pokok":2800000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3570000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary saved successfully | Context: {"user_id":10,"nama":"Nanda DBN","processed_count":1} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Processing user | Context: {"user_id":11,"nama":"Dedi DBN","nilai":23,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Fee pemasangan calculated | Context: {"user_id":11,"utama":13,"pembantu":6,"total_fee":1130000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary calculated | Context: {"user_id":11,"is_training":false,"gaji_pokok":2927272.727272727,"fee_total":1130000,"potongan":0,"keterangan_potongan":"","gaji_total":4057272.727272727} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary saved successfully | Context: {"user_id":11,"nama":"Dedi DBN","processed_count":2} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Processing user | Context: {"user_id":12,"nama":"Dwi DBN","nilai":21,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Fee pemasangan calculated | Context: {"user_id":12,"utama":16,"pembantu":1,"total_fee":960000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary calculated | Context: {"user_id":12,"is_training":false,"gaji_pokok":2672727.272727273,"fee_total":960000,"potongan":0,"keterangan_potongan":"","gaji_total":3632727.272727273} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary saved successfully | Context: {"user_id":12,"nama":"Dwi DBN","processed_count":3} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Processing user | Context: {"user_id":16,"nama":"Fandik DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Fee pemasangan calculated | Context: {"user_id":16,"utama":5,"pembantu":11,"total_fee":810000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary calculated | Context: {"user_id":16,"is_training":false,"gaji_pokok":2800000,"fee_total":810000,"potongan":0,"keterangan_potongan":"","gaji_total":3610000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary saved successfully | Context: {"user_id":16,"nama":"Fandik DBN","processed_count":4} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Processing user | Context: {"user_id":22,"nama":"Singgih DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Fee pemasangan calculated | Context: {"user_id":22,"utama":3,"pembantu":7,"total_fee":500000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary calculated | Context: {"user_id":22,"is_training":false,"gaji_pokok":2800000,"fee_total":500000,"potongan":0,"keterangan_potongan":"","gaji_total":3300000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary saved successfully | Context: {"user_id":22,"nama":"Singgih DBN","processed_count":5} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Processing user | Context: {"user_id":32,"nama":"Ferdi DBN","nilai":0,"is_training":true} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] User is in training mode | Context: {"user_id":32} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Fee pemasangan calculated | Context: {"user_id":32,"utama":0,"pembantu":11,"total_fee":510000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary calculated | Context: {"user_id":32,"is_training":true,"gaji_pokok":0,"fee_total":510000,"potongan":0,"keterangan_potongan":"","gaji_total":510000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary saved successfully | Context: {"user_id":32,"nama":"Ferdi DBN","processed_count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Processing user | Context: {"user_id":33,"nama":"Aris DBN","nilai":0,"is_training":true} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] User is in training mode | Context: {"user_id":33} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Fee pemasangan calculated | Context: {"user_id":33,"utama":0,"pembantu":10,"total_fee":480000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary calculated | Context: {"user_id":33,"is_training":true,"gaji_pokok":0,"fee_total":480000,"potongan":0,"keterangan_potongan":"","gaji_total":480000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Salary saved successfully | Context: {"user_id":33,"nama":"Aris DBN","processed_count":7} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:02:02] [INFO] Transaction committed successfully | Context: {"processed":7,"training":2,"errors":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 02:02:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 02:02:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:02:02] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:02:02] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:02:02] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:02:02] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 02:06:03] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 02:06:03] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:06:03] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 02:06:04] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 02:06:04] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:06:04] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:06:04] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:06:04] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '22'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:06:04] [INFO] Salary data retrieved | Context: {"count":0} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 02:06:06] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 02:06:06] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:06:06] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:06:06] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:06:06] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '22'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:06:06] [INFO] Salary data retrieved | Context: {"count":1} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 02:28:22] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 02:28:22] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:28:22] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 02:28:23] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 02:28:23] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:28:23] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:28:23] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:28:23] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '22'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:28:23] [INFO] Salary data retrieved | Context: {"count":0} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 02:28:25] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 02:28:25] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:28:25] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:28:25] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:28:25] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '22'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:28:25] [INFO] Salary data retrieved | Context: {"count":1} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 03:03:22] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 03:03:22] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:03:22] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 03:03:22] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 03:03:22] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 10:03:22] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 10:03:22] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 10:03:22] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 10:03:22] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 03:03:22] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 03:03:22] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 10:03:22] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 03:03:24] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 03:03:24] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:03:24] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:03:24] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:03:24] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:03:24] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 03:04:09] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 03:04:09] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:09] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:09] [INFO] Update config request | Context: {"ajax_action":"update_config","gaji_total_pool":"12500000","fee_per_pemasangan":"120000.00"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:09] [INFO] Config updated successfully | Context: {"pool":12500000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 03:04:18] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 03:04:18] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Config loaded | Context: {"pool":12500000,"fee":120000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                AND u.gaji = 1
                AND u.status = 1
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [SQL] 
            SELECT DISTINCT
                u.id as user_id,
                u.nama_lengkap,
                COALESCE(absensi_data.total_nilai, 0) as total_nilai
            FROM users u
            LEFT JOIN (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                GROUP BY a.user_id
            ) as absensi_data ON u.id = absensi_data.user_id
            WHERE u.perusahaan_id = ?
            AND u.role != 'admin'
            AND u.gaji = 1
            AND u.status = 1
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary calculated | Context: {"user_id":10,"is_training":false,"gaji_pokok":2500000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3270000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary saved successfully | Context: {"user_id":10,"nama":"Nanda DBN","processed_count":1} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Processing user | Context: {"user_id":11,"nama":"Dedi DBN","nilai":23,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Fee pemasangan calculated | Context: {"user_id":11,"utama":13,"pembantu":6,"total_fee":1130000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary calculated | Context: {"user_id":11,"is_training":false,"gaji_pokok":2613636.3636363633,"fee_total":1130000,"potongan":0,"keterangan_potongan":"","gaji_total":3743636.3636363633} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary saved successfully | Context: {"user_id":11,"nama":"Dedi DBN","processed_count":2} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Processing user | Context: {"user_id":12,"nama":"Dwi DBN","nilai":21,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Fee pemasangan calculated | Context: {"user_id":12,"utama":16,"pembantu":1,"total_fee":960000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary calculated | Context: {"user_id":12,"is_training":false,"gaji_pokok":2386363.6363636362,"fee_total":960000,"potongan":0,"keterangan_potongan":"","gaji_total":3346363.6363636362} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary saved successfully | Context: {"user_id":12,"nama":"Dwi DBN","processed_count":3} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Processing user | Context: {"user_id":16,"nama":"Fandik DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Fee pemasangan calculated | Context: {"user_id":16,"utama":5,"pembantu":11,"total_fee":810000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary calculated | Context: {"user_id":16,"is_training":false,"gaji_pokok":2500000,"fee_total":810000,"potongan":0,"keterangan_potongan":"","gaji_total":3310000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary saved successfully | Context: {"user_id":16,"nama":"Fandik DBN","processed_count":4} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Processing user | Context: {"user_id":22,"nama":"Singgih DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Fee pemasangan calculated | Context: {"user_id":22,"utama":3,"pembantu":7,"total_fee":500000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary calculated | Context: {"user_id":22,"is_training":false,"gaji_pokok":2500000,"fee_total":500000,"potongan":0,"keterangan_potongan":"","gaji_total":3000000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary saved successfully | Context: {"user_id":22,"nama":"Singgih DBN","processed_count":5} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Processing user | Context: {"user_id":32,"nama":"Ferdi DBN","nilai":0,"is_training":true} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] User is in training mode | Context: {"user_id":32} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Fee pemasangan calculated | Context: {"user_id":32,"utama":0,"pembantu":11,"total_fee":510000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary calculated | Context: {"user_id":32,"is_training":true,"gaji_pokok":0,"fee_total":510000,"potongan":0,"keterangan_potongan":"","gaji_total":510000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary saved successfully | Context: {"user_id":32,"nama":"Ferdi DBN","processed_count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Processing user | Context: {"user_id":33,"nama":"Aris DBN","nilai":0,"is_training":true} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] User is in training mode | Context: {"user_id":33} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Fee pemasangan calculated | Context: {"user_id":33,"utama":0,"pembantu":10,"total_fee":480000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary calculated | Context: {"user_id":33,"is_training":true,"gaji_pokok":0,"fee_total":480000,"potongan":0,"keterangan_potongan":"","gaji_total":480000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Salary saved successfully | Context: {"user_id":33,"nama":"Aris DBN","processed_count":7} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:04:18] [INFO] Transaction committed successfully | Context: {"processed":7,"training":2,"errors":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 03:04:18] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 03:04:18] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:04:18] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:04:18] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:04:18] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:04:18] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 03:05:30] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 03:05:30] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 10:05:30] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 03:05:43] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 03:05:43] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:05:43] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 03:05:43] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 03:05:43] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:05:43] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:05:43] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:05:43] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:05:43] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 05:56:02] [INFO] === Penggajian Page Loaded === | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:56:02] [INFO] User not logged in, redirecting to login | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:56:09] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:56:09] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:09] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:56:09] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 05:56:09] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 12:56:09] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 05:56:09] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 05:56:09] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 12:56:09] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 12:56:09] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 12:56:09] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 12:56:09] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 05:56:11] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 05:56:11] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 12:56:11] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 12:56:11] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 12:56:11] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 12:56:11] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 05:56:27] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:56:27] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:27] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:27] [INFO] Update config request | Context: {"ajax_action":"update_config","gaji_total_pool":"12500000.00","fee_per_pemasangan":"120000.00","gaji_pokok_training":"1500000"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:27] [INFO] Config updated successfully | Context: {"pool":12500000,"fee":120000,"training":1500000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:56:47] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:56:47] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"1","tahun":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Calculating salary | Context: {"bulan":1,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Transaction started | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Config loaded | Context: {"pool":12500000,"fee":120000,"training_salary":1500000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [SQL] 
            SELECT SUM(total_nilai) as grand_total
            FROM (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                INNER JOIN users u ON a.user_id = u.id
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                AND u.perusahaan_id = ?
                AND u.role != 'admin'
                AND u.gaji = 1
                AND u.status = 1
                GROUP BY a.user_id
            ) as totals
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Total nilai absensi calculated | Context: {"total":110} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [SQL] 
            SELECT DISTINCT
                u.id as user_id,
                u.nama_lengkap,
                COALESCE(absensi_data.total_nilai, 0) as total_nilai
            FROM users u
            LEFT JOIN (
                SELECT 
                    a.user_id,
                    SUM(CASE 
                        WHEN a.durasi_kerja_menit >= 480 THEN 1 
                        WHEN a.durasi_kerja_menit > 0 THEN 0.5 
                        WHEN a.jam_keluar IS NULL AND a.jam_masuk IS NOT NULL THEN 0.5 
                        ELSE 0 
                    END) as total_nilai
                FROM absensi a
                WHERE MONTH(a.tanggal) = ? 
                AND YEAR(a.tanggal) = ?
                GROUP BY a.user_id
            ) as absensi_data ON u.id = absensi_data.user_id
            WHERE u.perusahaan_id = ?
            AND u.role != 'admin'
            AND u.gaji = 1
            AND u.status = 1
         | Context: [1,2026,"1"] | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":6,"pembantu":7,"total_fee":770000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary calculated | Context: {"user_id":10,"is_training":false,"gaji_pokok":2500000,"fee_total":770000,"potongan":0,"keterangan_potongan":"","gaji_total":3270000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary saved successfully | Context: {"user_id":10,"nama":"Nanda DBN","processed_count":1} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Processing user | Context: {"user_id":11,"nama":"Dedi DBN","nilai":23,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Fee pemasangan calculated | Context: {"user_id":11,"utama":13,"pembantu":6,"total_fee":1130000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary calculated | Context: {"user_id":11,"is_training":false,"gaji_pokok":2613636.3636363633,"fee_total":1130000,"potongan":0,"keterangan_potongan":"","gaji_total":3743636.3636363633} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary saved successfully | Context: {"user_id":11,"nama":"Dedi DBN","processed_count":2} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Processing user | Context: {"user_id":12,"nama":"Dwi DBN","nilai":21,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Fee pemasangan calculated | Context: {"user_id":12,"utama":16,"pembantu":1,"total_fee":960000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary calculated | Context: {"user_id":12,"is_training":false,"gaji_pokok":2386363.6363636362,"fee_total":960000,"potongan":0,"keterangan_potongan":"","gaji_total":3346363.6363636362} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary saved successfully | Context: {"user_id":12,"nama":"Dwi DBN","processed_count":3} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Processing user | Context: {"user_id":16,"nama":"Fandik DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Fee pemasangan calculated | Context: {"user_id":16,"utama":5,"pembantu":11,"total_fee":810000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary calculated | Context: {"user_id":16,"is_training":false,"gaji_pokok":2500000,"fee_total":810000,"potongan":0,"keterangan_potongan":"","gaji_total":3310000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary saved successfully | Context: {"user_id":16,"nama":"Fandik DBN","processed_count":4} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Processing user | Context: {"user_id":22,"nama":"Singgih DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Fee pemasangan calculated | Context: {"user_id":22,"utama":3,"pembantu":7,"total_fee":500000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary calculated | Context: {"user_id":22,"is_training":false,"gaji_pokok":2500000,"fee_total":500000,"potongan":0,"keterangan_potongan":"","gaji_total":3000000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary saved successfully | Context: {"user_id":22,"nama":"Singgih DBN","processed_count":5} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Processing user | Context: {"user_id":32,"nama":"Ferdi DBN","nilai":0,"is_training":true} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] User is in training mode | Context: {"user_id":32,"gaji_pokok_training":1500000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Fee pemasangan calculated | Context: {"user_id":32,"utama":0,"pembantu":11,"total_fee":510000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary calculated | Context: {"user_id":32,"is_training":true,"gaji_pokok":1500000,"fee_total":510000,"potongan":0,"keterangan_potongan":"","gaji_total":2010000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary saved successfully | Context: {"user_id":32,"nama":"Ferdi DBN","processed_count":6} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Processing user | Context: {"user_id":33,"nama":"Aris DBN","nilai":0,"is_training":true} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] User is in training mode | Context: {"user_id":33,"gaji_pokok_training":1500000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Fee pemasangan calculated | Context: {"user_id":33,"utama":0,"pembantu":10,"total_fee":480000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary calculated | Context: {"user_id":33,"is_training":true,"gaji_pokok":1500000,"fee_total":480000,"potongan":0,"keterangan_potongan":"","gaji_total":1980000} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Salary saved successfully | Context: {"user_id":33,"nama":"Aris DBN","processed_count":7} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 12:56:47] [INFO] Transaction committed successfully | Context: {"processed":7,"training":2,"errors":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 05:56:47] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 05:56:47] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 12:56:47] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 12:56:47] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 12:56:47] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 12:56:47] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 06:01:03] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 06:01:03] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 13:01:03] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 06:01:03] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 06:01:03] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 13:01:03] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 06:01:03] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 06:01:03] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 13:01:03] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 13:01:03] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 13:01:03] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 13:01:03] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 06:01:06] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 06:01:06] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 13:01:06] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 13:01:06] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 13:01:06] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 13:01:06] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 06:14:36] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 06:14:36] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 13:14:36] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 06:14:36] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 06:14:36] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 13:14:36] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 13:14:36] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 13:14:36] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 13:14:36] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 06:14:36] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 06:14:36] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 13:14:36] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 06:14:38] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 06:14:38] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 13:14:38] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 13:14:38] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 13:14:38] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 13:14:38] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 06:15:33] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=2
[2026-02-01 06:15:33] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=2
[2026-02-01 13:15:33] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=2
[2026-02-01 06:15:44] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 06:15:44] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 13:15:44] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 07:32:14] [INFO] === Penggajian Page Loaded === | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:32:14] [INFO] User logged in | Context: {"user_id":"10","role":"user","perusahaan_id":"1"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 14:32:14] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 07:32:14] [INFO] === Penggajian Page Loaded === | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:32:14] [INFO] User logged in | Context: {"user_id":"10","role":"user","perusahaan_id":"1"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 14:32:14] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 14:32:14] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 14:32:14] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '10'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 14:32:14] [INFO] Salary data retrieved | Context: {"count":0} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 07:32:19] [INFO] === Penggajian Page Loaded === | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 07:32:19] [INFO] User logged in | Context: {"user_id":"10","role":"user","perusahaan_id":"1"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 14:32:19] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 14:32:19] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 14:32:19] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '10'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 14:32:19] [INFO] Salary data retrieved | Context: {"count":1} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:55:30] [INFO] === Penggajian Page Loaded === | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:55:30] [INFO] User logged in | Context: {"user_id":"11","role":"user","perusahaan_id":"1"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 16:55:30] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 09:55:31] [INFO] === Penggajian Page Loaded === | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:55:31] [INFO] User logged in | Context: {"user_id":"11","role":"user","perusahaan_id":"1"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 16:55:31] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 16:55:31] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 16:55:31] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '11'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 16:55:31] [INFO] Salary data retrieved | Context: {"count":0} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 09:55:34] [INFO] === Penggajian Page Loaded === | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 09:55:34] [INFO] User logged in | Context: {"user_id":"11","role":"user","perusahaan_id":"1"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 16:55:34] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 16:55:34] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 16:55:34] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '11'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 16:55:34] [INFO] Salary data retrieved | Context: {"count":1} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:06:06] [INFO] === Penggajian Page Loaded === | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:06:06] [INFO] User logged in | Context: {"user_id":"10","role":"user","perusahaan_id":"1"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 17:06:06] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:06:07] [INFO] === Penggajian Page Loaded === | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 10:06:07] [INFO] User logged in | Context: {"user_id":"10","role":"user","perusahaan_id":"1"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 17:06:07] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 17:06:07] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 17:06:07] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '10'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 17:06:07] [INFO] Salary data retrieved | Context: {"count":0} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 10:06:11] [INFO] === Penggajian Page Loaded === | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:06:11] [INFO] User logged in | Context: {"user_id":"10","role":"user","perusahaan_id":"1"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 17:06:11] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 17:06:11] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 17:06:11] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '10'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 17:06:11] [INFO] Salary data retrieved | Context: {"count":1} | User: 10 (Nanda DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:35:19] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:35:19] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 17:35:19] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 10:35:19] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 10:35:19] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 17:35:19] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 10:35:19] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 10:35:19] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 17:35:19] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 17:35:19] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 17:35:19] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 17:35:19] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 10:35:21] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:35:21] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 17:35:21] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 17:35:21] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 17:35:21] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 17:35:21] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 10:36:36] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 10:36:36] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 17:36:36] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-02-01 14:45:00] [INFO] === Penggajian Page Loaded === | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 14:45:00] [INFO] User logged in | Context: {"user_id":"11","role":"user","perusahaan_id":"1"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 21:45:00] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 14:45:00] [INFO] === Penggajian Page Loaded === | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 14:45:00] [INFO] User logged in | Context: {"user_id":"11","role":"user","perusahaan_id":"1"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 21:45:00] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 21:45:00] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 21:45:00] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '11'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 21:45:00] [INFO] Salary data retrieved | Context: {"count":0} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 14:45:05] [INFO] === Penggajian Page Loaded === | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 14:45:05] [INFO] User logged in | Context: {"user_id":"11","role":"user","perusahaan_id":"1"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 21:45:05] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 21:45:05] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 21:45:05] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '11'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 21:45:05] [INFO] Salary data retrieved | Context: {"count":1} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 14:49:34] [INFO] === Penggajian Page Loaded === | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 14:49:34] [INFO] User not logged in, redirecting to login | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 14:49:47] [INFO] === Penggajian Page Loaded === | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 14:49:47] [INFO] User logged in | Context: {"user_id":"11","role":"user","perusahaan_id":"1"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 21:49:47] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 21:49:47] [INFO] Get salary data | Context: {"bulan":12,"tahun":2026} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 21:49:47] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 12 AND lp.tahun = 2026 AND lp.user_id = '11'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 21:49:47] [INFO] Salary data retrieved | Context: {"count":0} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2026
[2026-02-01 14:49:50] [INFO] === Penggajian Page Loaded === | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 14:49:50] [INFO] User logged in | Context: {"user_id":"11","role":"user","perusahaan_id":"1"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 21:49:50] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 21:49:50] [INFO] Get salary data | Context: {"bulan":12,"tahun":2025} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 21:49:50] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 12 AND lp.tahun = 2025 AND lp.user_id = '11'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 21:49:50] [INFO] Salary data retrieved | Context: {"count":1} | User: 11 (Dedi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 15:01:55] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:01:55] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:01:55] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:01:55] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:01:55] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:01:55] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:01:55] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:01:55] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '12'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:01:55] [INFO] Salary data retrieved | Context: {"count":0} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:07:57] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:07:57] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:07:57] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:07:57] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:07:57] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:07:57] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:07:57] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:07:57] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:07:57] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:07:57] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 15:07:57] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 22:07:57] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 15:08:00] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:08:00] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:08:00] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:08:00] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:08:00] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:08:00] [INFO] Salary data retrieved | Context: {"count":8} | User: 2 (Sulihar) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:09:28] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:09:28] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:09:28] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:09:28] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:09:28] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:09:28] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:09:28] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:09:28] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:09:28] [INFO] Salary data retrieved | Context: {"count":0} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:09:31] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:09:31] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:09:31] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:09:31] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:09:31] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:09:31] [INFO] Salary data retrieved | Context: {"count":1} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:09:36] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:09:36] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:09:36] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:09:38] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:09:38] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:09:38] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:09:38] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:09:38] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '12'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:09:38] [INFO] Salary data retrieved | Context: {"count":0} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:09:42] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:09:42] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:09:42] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:09:42] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:09:42] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '12'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:09:42] [INFO] Salary data retrieved | Context: {"count":1} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:10:35] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:10:35] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:10:35] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:10:36] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:10:36] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:10:36] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:10:36] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:10:36] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:10:36] [INFO] Salary data retrieved | Context: {"count":0} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:10:52] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:10:52] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:10:52] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:10:53] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:10:53] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:10:53] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:10:53] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:10:53] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '22'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:10:53] [INFO] Salary data retrieved | Context: {"count":0} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:10:55] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:10:55] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:10:55] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:10:55] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:10:55] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '22'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:10:55] [INFO] Salary data retrieved | Context: {"count":1} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:11:21] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:11:21] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:11:21] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:11:22] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:11:22] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:11:22] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:11:22] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:11:22] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '22'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:11:22] [INFO] Salary data retrieved | Context: {"count":0} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:11:38] [INFO] === Penggajian Page Loaded === | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:11:38] [INFO] User logged in | Context: {"user_id":"22","role":"user","perusahaan_id":"1"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:11:38] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:11:38] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:11:38] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '22'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:11:38] [INFO] Salary data retrieved | Context: {"count":1} | User: 22 (Singgih DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:11:44] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:11:44] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:11:44] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 15:11:44] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:11:44] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:11:44] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:11:44] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:11:44] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:11:44] [INFO] Salary data retrieved | Context: {"count":0} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:11:46] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:11:46] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:11:46] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:11:46] [INFO] Get salary data | Context: {"bulan":1,"tahun":2026} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:11:46] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 1 AND lp.tahun = 2026 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:11:46] [INFO] Salary data retrieved | Context: {"count":1} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 15:13:01] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:13:01] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:13:01] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:13:01] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:13:01] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2026 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:13:01] [INFO] Salary data retrieved | Context: {"count":0} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 15:13:03] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2025
[2026-02-01 15:13:03] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2025
[2026-02-01 22:13:03] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2025
[2026-02-01 22:13:03] [INFO] Get salary data | Context: {"bulan":2,"tahun":2025} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2025
[2026-02-01 22:13:03] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 2 AND lp.tahun = 2025 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2025
[2026-02-01 22:13:03] [INFO] Salary data retrieved | Context: {"count":0} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2025
[2026-02-01 15:13:04] [INFO] === Penggajian Page Loaded === | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 15:13:04] [INFO] User logged in | Context: {"user_id":"16","role":"user","perusahaan_id":"1"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 22:13:04] [INFO] Current period | Context: {"month":"2","year":"2026"} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 22:13:04] [INFO] Get salary data | Context: {"bulan":12,"tahun":2025} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 22:13:04] [SQL] 
        SELECT 
            lp.*,
            u.nama_lengkap,
            u.email,
            u.role,
            u.gaji as is_eligible,
            finalizer.nama_lengkap as finalized_by_name
        FROM log_penggajian lp
        INNER JOIN users u ON lp.user_id = u.id
        LEFT JOIN users finalizer ON lp.finalized_by = finalizer.id
        WHERE lp.perusahaan_id = '1' AND lp.bulan = 12 AND lp.tahun = 2025 AND lp.user_id = '16'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 22:13:04] [INFO] Salary data retrieved | Context: {"count":1} | User: 16 (Fandik DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=12&tahun=2025
[2026-02-01 22:06:47] [INFO] === Penggajian Page Loaded === | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:06:47] [INFO] User not logged in, redirecting to login | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:07:00] [INFO] === Penggajian Page Loaded === | User: 1 (Shofia DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:07:00] [INFO] User logged in | Context: {"user_id":"1","role":"admin","perusahaan_id":"1"} | User: 1 (Shofia DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:07:00] [INFO] === Penggajian Page Loaded === | User: 1 (Shofia DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:07:00] [INFO] User logged in | Context: {"user_id":"1","role":"admin","perusahaan_id":"1"} | User: 1 (Shofia DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:07:00] [INFO] === Penggajian Page Loaded === | User: 1 (Shofia DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 22:07:00] [INFO] User logged in | Context: {"user_id":"1","role":"admin","perusahaan_id":"1"} | User: 1 (Shofia DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_admin_list
[2026-02-01 22:07:06] [INFO] === Penggajian Page Loaded === | User: 1 (Shofia DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:07:06] [INFO] User logged in | Context: {"user_id":"1","role":"admin","perusahaan_id":"1"} | User: 1 (Shofia DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=1&tahun=2026
[2026-02-01 22:21:17] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:21:17] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-02-01 22:21:17] [INFO] === Penggajian Page Loaded === | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-02-01 22:21:17] [INFO] User logged in | Context: {"user_id":"12","role":"user","perusahaan_id":"1"} | User: 12 (Dwi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
