Masukkan Kode WO untuk melihat status
Silakan scan barcode karyawan untuk absensi kehadiran.
if (isset($_SESSION['loggedin'])) { header('Location: admin/dashboard.php'); exit; } // --- Handle AJAX manual absen --- if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'manual_absen') { header('Content-Type: application/json; charset=utf-8'); // NIK di sini diasumsikan sebagai ID atau Nama Karyawan yang ada di barcode $input_id = isset($_POST['code']) ? trim($_POST['code']) : ''; $today = date('Y-m-d'); $waktu_sekarang = date('H:i:s'); $hari_ini = date('D'); if ($input_id === '') { echo json_encode(['ok' => false, 'msg' => 'Kode Barcode kosong']); exit; } if ($hari_ini === 'Sun') { echo json_encode(['ok' => false, 'msg' => 'Hari Minggu libur.']); exit; } // Lookup: karyawan (id/nama) atau data_karyawan (id/kode_karyawan/nama_lengkap) untuk barcode $karyawan = null; $use_kode = false; $stmt = $mysqli->prepare("SELECT id, nama_karyawan, posisi, nominal_gaji FROM karyawan WHERE id = ? OR nama_karyawan = ?"); $stmt->bind_param("ss", $input_id, $input_id); $stmt->execute(); $res = $stmt->get_result(); if ($res->num_rows > 0) { $karyawan = $res->fetch_assoc(); $karyawan['nama_display'] = $karyawan['nama_karyawan']; } if (!$karyawan) { $stmt2 = $mysqli->prepare("SELECT id, kode_karyawan, nama_lengkap, nominal_gaji FROM data_karyawan WHERE id = ? OR kode_karyawan = ? OR nama_lengkap = ?"); $stmt2->bind_param("sss", $input_id, $input_id, $input_id); $stmt2->execute(); $res2 = $stmt2->get_result(); if ($res2->num_rows > 0) { $row = $res2->fetch_assoc(); $karyawan = ['id' => $row['id'], 'nama_karyawan' => $row['nama_lengkap'], 'nominal_gaji' => $row['nominal_gaji'] ?? 0, 'nama_display' => $row['nama_lengkap'], 'kode_karyawan' => $row['kode_karyawan']]; $use_kode = true; } } else { $karyawan['nama_display'] = $karyawan['nama_karyawan']; } if ($karyawan) { $gaji_harian = $karyawan['nominal_gaji'] ?? 0; if ($use_kode) { $kode_karyawan = $karyawan['kode_karyawan']; $cek = $mysqli->prepare("SELECT id FROM absensi WHERE kode_karyawan = ? AND tanggal = ?"); $cek->bind_param("ss", $kode_karyawan, $today); $cek->execute(); if ($cek->get_result()->num_rows > 0) { echo json_encode(['ok' => false, 'msg' => 'Sudah absen hari ini.']); exit; } $ins = $mysqli->prepare("INSERT INTO absensi (kode_karyawan, tanggal, jam_masuk, status" . (column_exists($mysqli, 'absensi', 'pendapatan_hari_ini') ? ", pendapatan_hari_ini" : "") . ") VALUES (?, ?, ?, 'masuk'" . (column_exists($mysqli, 'absensi', 'pendapatan_hari_ini') ? ", ?" : "") . ")"); if (column_exists($mysqli, 'absensi', 'pendapatan_hari_ini')) { $ins->bind_param("sssd", $kode_karyawan, $today, $waktu_sekarang, $gaji_harian); } else { $ins->bind_param("sss", $kode_karyawan, $today, $waktu_sekarang); } } else { $karyawan_id = $karyawan['id']; $cek = $mysqli->prepare("SELECT id FROM absensi WHERE karyawan_id = ? AND tanggal = ?"); $cek->bind_param("is", $karyawan_id, $today); $cek->execute(); if ($cek->get_result()->num_rows > 0) { echo json_encode(['ok' => false, 'msg' => 'Sudah absen hari ini.']); exit; } $ins = $mysqli->prepare("INSERT INTO absensi (karyawan_id, tanggal, jam_masuk, status, pendapatan_hari_ini) VALUES (?, ?, ?, 'masuk', ?)"); $ins->bind_param("issd", $karyawan_id, $today, $waktu_sekarang, $gaji_harian); } if ($ins->execute()) { echo json_encode(['ok' => true, 'msg' => "Berhasil Absen: " . $karyawan['nama_display']]); } else { echo json_encode(['ok' => false, 'msg' => 'Gagal simpan absensi.']); } } else { echo json_encode(['ok' => false, 'msg' => "Karyawan tidak terdaftar."]); } exit; } // --- Handle Login via AJAX --- if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'login_system') { header('Content-Type: application/json; charset=utf-8'); $u = $_POST['username'] ?? ''; $p = $_POST['password'] ?? ''; $stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $u); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $user = $result->fetch_assoc(); if (password_verify($p, $user['password'])) { $_SESSION['loggedin'] = true; $_SESSION['username'] = $user['username']; $_SESSION['role'] = $user['role']; echo json_encode(['ok' => true, 'msg' => 'Login Berhasil!']); } else { echo json_encode(['ok' => false, 'msg' => 'Password salah!']); } } else { echo json_encode(['ok' => false, 'msg' => 'User tidak ditemukan!']); } exit; } // --- Tracking Produksi --- $searchResult = null; if (isset($_GET['q']) && trim($_GET['q']) !== '') { $q = strtoupper(trim($_GET['q'])); // Mengambil data dari tabel produksi (hasil dari tambah_produksi) $stmt = $mysqli->prepare("SELECT kode_wo, customer_brand, status, dateline FROM produksi WHERE kode_wo = ? LIMIT 1"); if ($stmt) { $stmt->bind_param('s', $q); $stmt->execute(); $searchResult = $stmt->get_result()->fetch_assoc(); } } ?> Matapanda
Masukkan Kode WO untuk melihat status
Silakan scan barcode karyawan untuk absensi kehadiran.