[2026-03-05 00:51:51] [INFO] === Penggajian Page Loaded === | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-03-05 00:51:51] [INFO] User logged in | Context: {"user_id":"32","role":"user","perusahaan_id":"1"} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-03-05 07:51:51] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php
[2026-03-05 00:51:52] [INFO] === Penggajian Page Loaded === | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 00:51:52] [INFO] User logged in | Context: {"user_id":"32","role":"user","perusahaan_id":"1"} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 07:51:52] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 07:51:52] [INFO] Get salary data | Context: {"bulan":3,"tahun":2026} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 07:51:52] [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 = 3 AND lp.tahun = 2026 AND lp.user_id = '32'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 07:51:52] [INFO] Salary data retrieved | Context: {"count":0} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 00:51:55] [INFO] === Penggajian Page Loaded === | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 00:51:55] [INFO] User logged in | Context: {"user_id":"32","role":"user","perusahaan_id":"1"} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:51:55] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:51:55] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:51: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 = '32'
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:51:55] [INFO] Salary data retrieved | Context: {"count":0} | User: 32 (Ferdi DBN) | URI: /kas_dbn/menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 06:30:26] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 06:30:26] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:30:26] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 06:30:26] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 06:30:26] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 13:30:26] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 13:30:26] [INFO] Get salary data | Context: {"bulan":3,"tahun":2026} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 13:30:26] [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 = 3 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 13:30:27] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 06:30:27] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_admin_list
[2026-03-05 06:30:27] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_admin_list
[2026-03-05 13:30:27] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_admin_list
[2026-03-05 06:30:41] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 06:30:41] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:30:41] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:30:41] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:30:41] [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: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:30:41] [INFO] Salary data retrieved | Context: {"count":5} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 06:30:54] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-03-05 06:30:54] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-03-05 13:30:54] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_previous_admin_salary&admin_user_id=1
[2026-03-05 06:30:57] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 06:30:57] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:30:57] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:30:57] [INFO] FCM notif sent to admin | Context: {"user_id":1,"nama":"Shofia DBN"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 06:30:57] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 06:30:57] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:30:57] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:30:57] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:30: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: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:30:57] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 06:31:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 06:31:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Calculate salary request | Context: {"ajax_action":"calculate_salary","bulan":"2","tahun":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Calculating salary | Context: {"bulan":2,"tahun":2026,"perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Transaction started | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Config loaded | Context: {"pool":12500000,"fee":120000,"training_salary":1500000} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31: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: [2,2026,"1"] | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Total nilai absensi calculated | Context: {"total":105.5} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31: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: [2,2026,"1"] | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Processing user | Context: {"user_id":10,"nama":"Nanda DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Fee pemasangan calculated | Context: {"user_id":10,"utama":10,"pembantu":3,"total_fee":680000} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary calculated | Context: {"user_id":10,"is_training":false,"gaji_pokok":2606635.0710900472,"fee_total":680000,"potongan":0,"keterangan_potongan":"","gaji_total":3286635.0710900472} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] FCM notif sent to user | Context: {"user_id":10,"nama":"Nanda DBN"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary saved successfully | Context: {"user_id":10,"nama":"Nanda DBN","processed_count":1} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Processing user | Context: {"user_id":11,"nama":"Dedi DBN","nilai":22,"is_training":false} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Fee pemasangan calculated | Context: {"user_id":11,"utama":10,"pembantu":2,"total_fee":680000} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary calculated | Context: {"user_id":11,"is_training":false,"gaji_pokok":2606635.0710900472,"fee_total":680000,"potongan":0,"keterangan_potongan":"","gaji_total":3286635.0710900472} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] FCM notif sent to user | Context: {"user_id":11,"nama":"Dedi DBN"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary saved successfully | Context: {"user_id":11,"nama":"Dedi DBN","processed_count":2} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Processing user | Context: {"user_id":12,"nama":"Dwi DBN","nilai":19.5,"is_training":false} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Fee pemasangan calculated | Context: {"user_id":12,"utama":10,"pembantu":3,"total_fee":760000} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary calculated | Context: {"user_id":12,"is_training":false,"gaji_pokok":2310426.5402843603,"fee_total":760000,"potongan":0,"keterangan_potongan":"","gaji_total":3070426.5402843603} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] FCM notif sent to user | Context: {"user_id":12,"nama":"Dwi DBN"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary saved successfully | Context: {"user_id":12,"nama":"Dwi DBN","processed_count":3} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Processing user | Context: {"user_id":16,"nama":"Fandik DBN","nilai":21,"is_training":false} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Fee pemasangan calculated | Context: {"user_id":16,"utama":1,"pembantu":11,"total_fee":580000} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary calculated | Context: {"user_id":16,"is_training":false,"gaji_pokok":2488151.6587677724,"fee_total":580000,"potongan":0,"keterangan_potongan":"","gaji_total":3068151.6587677724} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] FCM notif sent to user | Context: {"user_id":16,"nama":"Fandik DBN"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary saved successfully | Context: {"user_id":16,"nama":"Fandik DBN","processed_count":4} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Processing user | Context: {"user_id":22,"nama":"Singgih DBN","nilai":21,"is_training":false} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Fee pemasangan calculated | Context: {"user_id":22,"utama":5,"pembantu":6,"total_fee":480000} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary calculated | Context: {"user_id":22,"is_training":false,"gaji_pokok":2488151.6587677724,"fee_total":480000,"potongan":0,"keterangan_potongan":"","gaji_total":2968151.6587677724} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Type definition | Context: {"definition":"iiiiddddddiisdsdd","length":17,"expected":17} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] FCM notif sent to user | Context: {"user_id":22,"nama":"Singgih DBN"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Salary saved successfully | Context: {"user_id":22,"nama":"Singgih DBN","processed_count":5} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 13:31:02] [INFO] Transaction committed successfully | Context: {"processed":5,"training":0,"errors":0} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 06:31:02] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 06:31:02] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:31:02] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:31:02] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:31: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 = 2 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 13:31:02] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:32:34] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 07:32:34] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 14:32:34] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 07:32:34] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 07:32:34] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 14:32:34] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 14:32:34] [INFO] Get salary data | Context: {"bulan":3,"tahun":2026} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 14:32: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 = 3 AND lp.tahun = 2026
        ORDER BY u.role DESC, u.nama_lengkap ASC
     | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 14:32:34] [INFO] Salary data retrieved | Context: {"count":0} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 07:32:34] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_admin_list
[2026-03-05 07:32:34] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_admin_list
[2026-03-05 14:32:34] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_admin_list
[2026-03-05 07:34:20] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:34:20] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 14:34:20] [INFO] Current period | Context: {"month":"3","year":"2026"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 14:34:20] [INFO] Get salary data | Context: {"bulan":2,"tahun":2026} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 14:34:20] [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: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 14:34:20] [INFO] Salary data retrieved | Context: {"count":6} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:44:38] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 07:44:38] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 07:44:38] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 07:44:38] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=3&tahun=2026
[2026-03-05 07:44:38] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_admin_list
[2026-03-05 07:44:38] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_admin_list
[2026-03-05 07:44:48] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:44:48] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:44:55] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 07:44:55] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 07:44:55] [INFO] === Penggajian Page Loaded === | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 07:44:55] [INFO] User logged in | Context: {"user_id":"2","role":"admin","perusahaan_id":"1"} | User: 2 (Sulihar) | URI: /menu/penggajian.php?ajax_action=get_salary_data&bulan=2&tahun=2026
[2026-03-05 15:22:01] [ERROR] PHP Error: Undefined variable $floatval | Context: {"file":"\/home\/dbeenapp\/kas.dbeenapp.my.id\/menu\/penggajian.php","line":60,"type":2} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 15:22:01] [ERROR] Exception: Value of type null is not callable | Context: {"file":"\/home\/dbeenapp\/kas.dbeenapp.my.id\/menu\/penggajian.php","line":60,"trace":"#0 {main}"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 15:22:21] [ERROR] PHP Error: Undefined variable $floatval | Context: {"file":"\/home\/dbeenapp\/kas.dbeenapp.my.id\/menu\/penggajian.php","line":60,"type":2} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 15:22:21] [ERROR] Exception: Value of type null is not callable | Context: {"file":"\/home\/dbeenapp\/kas.dbeenapp.my.id\/menu\/penggajian.php","line":60,"trace":"#0 {main}"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 15:22:33] [ERROR] PHP Error: Undefined variable $floatval | Context: {"file":"\/home\/dbeenapp\/kas.dbeenapp.my.id\/menu\/penggajian.php","line":60,"type":2} | User: 2 (Sulihar) | URI: /menu/penggajian.php
[2026-03-05 15:22:33] [ERROR] Exception: Value of type null is not callable | Context: {"file":"\/home\/dbeenapp\/kas.dbeenapp.my.id\/menu\/penggajian.php","line":60,"trace":"#0 {main}"} | User: 2 (Sulihar) | URI: /menu/penggajian.php
