sys/veri_detay/#008

PYBS (Personel Yönetim Bilgi Sistemi)

Son Senkronizasyon: 16.12.2025
tum-izinler-rapor.php 176 satır • 7.01 KB
<?php
// modules/tum-izinler-rapor.php
session_start();
require_once '../config/db.php';
require_once '../config/functions.php';

yetkiKontrol(['root', 'yonetici', 'mudur', 'vardiya_amiri', 'muhasebe', 'insan_kaynaklari']);

// --- PARAMETRELER ---
$format = $_GET['format'] ?? 'print';
$kullanici_id = $_SESSION['kullanici_id'];
$rol = $_SESSION['rol'];
$yuksek_yetki = in_array($rol, ['root', 'muhasebe', 'insan_kaynaklari']);

// Filtre Değerleri
$filtre_durum = $_GET['filtre'] ?? 'aktif';
$filtre_personel_id = isset($_GET['personel_id']) ? (int)$_GET['personel_id'] : 0;
$secilen_yil = $_GET['yil'] ?? date('Y');
$secilen_ay = $_GET['ay'] ?? date('m');

date_default_timezone_set('Europe/Istanbul'); 
$rapor_tarihi_saati = date('d.m.Y H:i');
$ay_isimleri = ['01'=>'OCAK','02'=>'ŞUBAT','03'=>'MART','04'=>'NİSAN','05'=>'MAYIS','06'=>'HAZİRAN','07'=>'TEMMUZ','08'=>'AĞUSTOS','09'=>'EYLÜL','10'=>'EKİM','11'=>'KASIM','12'=>'ARALIK'];

// --- BAŞLIK OLUŞTURMA ---
$baslik_ek = "";
$donem_ek = "";

// Personel İsmi
if ($filtre_personel_id > 0) {
    $stmt_p = $pdo->prepare("SELECT ad, soyad FROM kullanicilar WHERE id = ?");
    $stmt_p->execute([$filtre_personel_id]);
    $p_bilgi = $stmt_p->fetch();
    if($p_bilgi) $baslik_ek = $p_bilgi['ad'] . " " . $p_bilgi['soyad'] . " - ";
}

// Dönem Bilgisi
if ($filtre_durum == 'aktif') {
    $donem_ek = " (" . $ay_isimleri[date('m')] . " " . date('Y') . ")";
} elseif ($filtre_durum == 'tarih') {
    $donem_ek = " (" . $ay_isimleri[sprintf('%02d', $secilen_ay)] . " " . $secilen_yil . ")";
} else {
    $donem_ek = " (TÜM GEÇMİŞ)";
}

$rapor_basligi = $baslik_ek . "PERSONEL İZİN RAPORU" . $donem_ek;

// --- SQL SORGUSU ---
$sql = "SELECT i.*, k.ad, k.soyad, k.rol as k_rol, k.tc_no, 
        o.ad as o_ad, o.soyad as o_soyad,
        y.ad as y_ad, y.soyad as y_soyad
        FROM izin_talepleri i 
        JOIN kullanicilar k ON i.calisan_id = k.id 
        LEFT JOIN kullanicilar o ON i.onaylayan_id = o.id 
        LEFT JOIN kullanicilar y ON i.hedef_yonetici_id = y.id 
        WHERE 1=1 ";

$params = [];

// 1. Yetki
if (!$yuksek_yetki) {
    $sql .= " AND i.hedef_yonetici_id = :hid ";
    $params[':hid'] = $kullanici_id;
}

// 2. Personel Filtresi
if ($filtre_personel_id > 0) {
    $sql .= " AND i.calisan_id = :pid ";
    $params[':pid'] = $filtre_personel_id;
}

// 3. Tarih Filtresi
if ($filtre_durum == 'aktif') {
    $sql .= " AND YEAR(i.baslangic_tarihi) = YEAR(CURDATE()) AND MONTH(i.baslangic_tarihi) = MONTH(CURDATE())";
} elseif ($filtre_durum == 'tarih') {
    $sql .= " AND YEAR(i.baslangic_tarihi) = :yil AND MONTH(i.baslangic_tarihi) = :ay";
    $params[':yil'] = $secilen_yil;
    $params[':ay'] = $secilen_ay;
}

$sql .= " ORDER BY i.baslangic_tarihi DESC";

$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$izinler = $stmt->fetchAll();

// --- EXCEL ---
if ($format == 'excel') {
    $dosya_adi = "Izin_" . ($filtre_personel_id > 0 ? "Personel_" : "") . date('Y-m-d') . ".xls";
    header("Content-Type: application/vnd.ms-excel; charset=utf-8");
    header("Content-Disposition: attachment; filename=$dosya_adi");
    echo "\xEF\xBB\xBF"; 
    ?>
    <table border="1">
        <thead>
            <tr style="background:#eee;">
                <th>Personel</th><th>TC No</th><th>İzin Türü</th><th>Başlangıç</th><th>Bitiş</th><th>Süre</th><th>Açıklama</th><th>Durum</th><th>İşlem Yapan / Yönetici</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($izinler as $row): 
                 $sure = ($row['izin_turu'] == 'saatlik' || $row['izin_turu'] == 'sut_izni' || $row['izin_turu'] == 'mesaiye_gelmedi') ? $row['saatlik_sure'] . ' Saat' : floatval($row['toplam_gun']) . ' Gün';
                 $islem_yapan = ($row['durum']=='beklemede') ? $row['y_ad'].' '.$row['y_soyad'].' (Bekliyor)' : $row['o_ad'].' '.$row['o_soyad'];
            ?>
            <tr>
                <td><?php echo $row['ad'] . ' ' . $row['soyad']; ?></td>
                <td><?php echo $row['tc_no']; ?></td>
                <td><?php echo strtoupper($row['izin_turu']); ?></td>
                <td><?php echo date('d.m.Y H:i', strtotime($row['baslangic_tarihi'])); ?></td>
                <td><?php echo date('d.m.Y H:i', strtotime($row['bitis_tarihi'])); ?></td>
                <td><?php echo $sure; ?></td>
                <td><?php echo $row['aciklama']; ?></td>
                <td><?php echo strtoupper($row['durum']); ?></td>
                <td><?php echo $islem_yapan; ?></td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    <?php exit;
}
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>İzin Raporu</title>
    <style>
        body { font-family: sans-serif; font-size: 11px; padding: 20px; }
        .antet { border-bottom: 2px solid #333; margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; }
        table { width: 100%; border-collapse: collapse; margin-top: 10px; }
        th, td { border: 1px solid #ccc; padding: 6px; text-align: left; }
        th { background: #f2f2f2; }
        @media print { .no-print { display: none; } }
    </style>
</head>
<body>
    <div class="no-print" style="text-align: right; margin-bottom:10px;">
        <button onclick="window.print()" style="padding: 5px 15px; font-weight:bold;">Yazdır / PDF</button>
    </div>
    <div class="antet">
        <img src="../assets/img/logo.png" height="50" alt="Logo">
        <div style="text-align:right;">
            <h3 style="margin:0;"><?php echo $rapor_basligi; ?></h3>
            <small>Oluşturulma: <?php echo $rapor_tarihi_saati; ?></small>
        </div>
    </div>
    <table>
        <thead>
            <tr>
                <th>Personel</th><th>Tür</th><th>Başlangıç</th><th>Bitiş</th><th>Süre</th><th>Açıklama</th><th>Durum</th><th>İşlem Yapan</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($izinler as $row): 
                 $sure = ($row['izin_turu'] == 'saatlik' || $row['izin_turu'] == 'sut_izni') ? $row['saatlik_sure'] . ' Saat' : floatval($row['toplam_gun']) . ' Gün';
                 $islem_yapan = ($row['durum']=='beklemede') ? $row['y_ad'].' '.$row['y_soyad'] : $row['o_ad'].' '.$row['o_soyad'];
            ?>
            <tr>
                <td><?php echo $row['ad'] . ' ' . $row['soyad']; ?></td>
                <td><?php echo strtoupper($row['izin_turu']); ?></td>
                <td><?php echo date('d.m.Y H:i', strtotime($row['baslangic_tarihi'])); ?></td>
                <td><?php echo date('d.m.Y H:i', strtotime($row['bitis_tarihi'])); ?></td>
                <td><?php echo $sure; ?></td>
                <td><?php echo $row['aciklama']; ?></td>
                <td><?php echo strtoupper($row['durum']); ?></td>
                <td style="font-size:10px;"><?php echo $islem_yapan; ?></td>
            </tr>
            <?php endforeach; ?>
            <?php if(empty($izinler)): ?>
                <tr><td colspan="8" style="text-align:center; padding:20px;">Kayıt bulunamadı.</td></tr>
            <?php endif; ?>
        </tbody>
    </table>
</body>
</html>
DATA_PAYLOAD (Açıklama)
Kapak

DEMO SÜRÜMÜDÜR TAM SÜRÜM İÇİN İLETİŞİM KURUN

📖 PYBS (Personel Yönetim Bilgi Sistemi) Kullanım Kılavuzu

🚀 Proje Tanımı

PYBS, personel bilgilerini, izinleri, maaş bordrolarını ve performans değerlendirmelerini merkezi ve dijital bir platformda yönetmek için tasarlanmış kapsamlı bir Personel Yönetim Bilgi Sistemi'dir. Amacımız, İnsan Kaynakları (İK) süreçlerini otomatikleştirerek verimliliği artırmak ve veri tutarlılığını sağlamaktır.

✨ Temel Özellikler

Personel Yönetimi: Çalışanların kişisel, iletişim ve görev bilgilerini kaydetme/güncelleme.

İzin Yönetimi: Çalışanların izin taleplerini oluşturma, onaylama/reddetme ve kalan izin haklarını takip etme.

Performans Değerlendirme: Yöneticilerin ve çalışanların performans hedeflerini belirlemesi ve değerlendirmeleri kaydetmesi.

Bordro Entegrasyonu: Maaş ve avans bilgilerini kaydetme ve bordro çıktılarını oluşturma (Harici sistemlerle entegrasyon potansiyeli).

Raporlama: İK yöneticileri için özet ve detaylı personel, izin ve bordro raporları oluşturma.

💻 Son Kullanıcı Kullanımı🔑 Giriş Yapma

Demo için kullanıcı adı : test.test

Demo için şifre : 123456

Demo hesabında root / yonetici vb yetki yoktur.

Tam sürüm için iletişime geçin.

Sistem "Ramsa Makine" tarafından aktif olarak kullanılmaktadır

Meta Veri (Özet)

İşyeri çalışanlarının maaş, fazla mesai ve puantaj ile bordro takip, kontrol ve raporlama sistemi

9,384
Sinyal (Ağ Hiti)
1.54 MB
Kapasite

Ağda Paylaş