sys/veri_detay/#008

PYBS (Personel Yönetim Bilgi Sistemi)

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

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

include '../includes/header.php';
include '../includes/menu.php';

$mesaj = '';
$kullanici_id = $_SESSION['kullanici_id'];
$rol = $_SESSION['rol'];

// --- İŞLEM (ONAY / RED / GERİ ALMA) ---
if (isset($_GET['islem']) && isset($_GET['id'])) {
    $id = (int)$_GET['id'];
    $aksiyon = $_GET['islem'];
    
    // Yetki Kontrolü için sorgu hazırlığı
    $sql_yetki = "SELECT * FROM izin_talepleri WHERE id = ?";
    $yetki_params = [$id];
    
    // Yönetici/Müdür sadece kendine geleni, Diğerleri (İK/Muhasebe/Root) her şeyi
    if(!in_array($rol, ['root', 'muhasebe', 'insan_kaynaklari'])) {
        // GÜVENLİK GÜNCELLEMESİ: $kullanici_id parametre olarak eklendi
        $sql_yetki .= " AND hedef_yonetici_id = ?"; 
        $yetki_params[] = $kullanici_id;
    }
    
    $stmt = $pdo->prepare($sql_yetki);
    $stmt->execute($yetki_params);
    $izin = $stmt->fetch();

    if ($izin) {
        $yeni_durum = '';
        if($aksiyon == 'onayla') $yeni_durum = 'onaylandi';
        elseif($aksiyon == 'reddet') $yeni_durum = 'reddedildi';
        elseif($aksiyon == 'beklemede') $yeni_durum = 'beklemede'; // Geri alma

        // Sadece İK ve Muhasebe onaylı/reddedilmiş bir şeyi değiştirebilir
        if ($izin['durum'] != 'beklemede' && !in_array($rol, ['root', 'muhasebe', 'insan_kaynaklari'])) {
             $mesaj = "<div class='alert alert-warning'>Onaylanmış işlemi değiştirme yetkiniz yok. İK ile görüşün.</div>";
        } else {
            $pdo->prepare("UPDATE izin_talepleri SET durum = ?, onaylayan_id = ?, onaylanma_tarihi = NOW() WHERE id = ?")->execute([$yeni_durum, $kullanici_id, $id]);
            
            // LOG KAYDI
            $log_detay = "İzin durumu değişti: " . strtoupper($aksiyon) . " (Önceki: {$izin['durum']})";
            logKaydet($pdo, $kullanici_id, 'guncelleme', $log_detay, 'izin_talepleri', $id);
            
            // Bildirim
            bildirimGonder($pdo, $izin['calisan_id'], "İzin Durumu Güncellendi", "İzin talebiniz $yeni_durum olarak güncellendi.", "../modules/izin-talep.php");

            $mesaj = "<div class='alert alert-success'>İşlem başarıyla uygulandı: <strong>".strtoupper($yeni_durum)."</strong></div>";
        }
    }
}

// --- LİSTELEME ---
$sql_list = "SELECT i.*, k.ad, k.soyad, k.rol as k_rol, o.ad as o_ad, o.soyad as o_soyad 
             FROM izin_talepleri i 
             JOIN kullanicilar k ON i.calisan_id = k.id 
             LEFT JOIN kullanicilar o ON i.onaylayan_id = o.id ";

$list_params = [];

if (!in_array($rol, ['root', 'muhasebe', 'insan_kaynaklari'])) {
    // GÜVENLİK GÜNCELLEMESİ: $kullanici_id parametre olarak eklendi
    $sql_list .= " WHERE i.hedef_yonetici_id = ? "; 
    $list_params[] = $kullanici_id;
}
$sql_list .= " ORDER BY i.olusturulma_tarihi DESC";

$stmt_list = $pdo->prepare($sql_list);
$stmt_list->execute($list_params);
$izinler = $stmt_list->fetchAll();
?>

<div class="container-fluid">
    <h3 class="mb-4"><i class="fas fa-calendar-check text-primary"></i> İzin Yönetim Paneli</h3>
    <?php echo $mesaj; ?>
    
    <div class="card border-0 shadow-sm">
        <div class="table-responsive">
            <table class="table table-hover align-middle mb-0">
                <thead class="table-dark">
                    <tr>
                        <th>Personel</th>
                        <th>Tür</th>
                        <th>Tarih / Süre</th>
                        <th>Açıklama / Not</th> <th>Durum / İşlem Yapan</th>
                        <th class="text-end">Yönetim</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($izinler as $iz): ?>
                    <tr>
                        <td>
                            <strong><?php echo $iz['ad'].' '.$iz['soyad']; ?></strong><br>
                            <span class="badge bg-light text-dark border"><?php echo strtoupper($iz['k_rol']); ?></span>
                        </td>
                        <td>
                            <?php if($iz['izin_turu'] == 'saatlik'): ?>
                                <span class="badge bg-warning text-dark">SAATLİK</span>
                            <?php else: ?>
                                <span class="badge bg-secondary"><?php echo strtoupper($iz['izin_turu']); ?></span>
                            <?php endif; ?>
                        </td>
                        <td>
                            <?php echo tarihTurkce(date('Y-m-d', strtotime($iz['baslangic_tarihi']))); ?>
                            <br>
                            <small class="text-muted">
                                <?php echo ($iz['izin_turu']=='saatlik') ? $iz['saatlik_sure'].' Saat' : floatval($iz['toplam_gun']).' Gün'; ?>
                            </small>
                        </td>
                        <td>
                            <small class="text-wrap" style="max-width: 250px;">
                                <?php 
                                    // Açıklamayı göster, çok uzunsa kısalt
                                    echo mb_substr($iz['aciklama'], 0, 80, 'UTF-8');
                                    if (mb_strlen($iz['aciklama'], 'UTF-8') > 80) {
                                        echo '...';
                                    }
                                ?>
                            </small>
                        </td>
                        <td>
                            <?php if($iz['durum']=='onaylandi'): ?>
                                <div class="text-success fw-bold"><i class="fas fa-check-circle"></i> Onaylandı</div>
                                <?php if($iz['o_ad']): ?>
                                    <small class="text-muted text-nowrap">Yapan: <?php echo $iz['o_ad'].' '.$iz['o_soyad']; ?></small>
                                <?php endif; ?>
                            <?php elseif($iz['durum']=='reddedildi'): ?>
                                <span class="badge bg-danger">Reddedildi</span>
                            <?php else: ?>
                                <span class="badge bg-warning text-dark">Beklemede</span>
                            <?php endif; ?>
                        </td>
                        <td class="text-end pe-3">
                            <div class="btn-group">
                                <?php if($iz['durum'] == 'beklemede'): ?>
                                    <a href="?islem=onayla&id=<?php echo $iz['id']; ?>" class="btn btn-sm btn-success" title="Onayla"><i class="fas fa-check"></i></a>
                                    <a href="?islem=reddet&id=<?php echo $iz['id']; ?>" class="btn btn-sm btn-danger" title="Reddet"><i class="fas fa-times"></i></a>
                                
                                <?php elseif(in_array($rol, ['root', 'muhasebe', 'insan_kaynaklari'])): ?>
                                    <button type="button" class="btn btn-sm btn-secondary dropdown-toggle" data-bs-toggle="dropdown">
                                        <i class="fas fa-cog"></i>
                                    </button>
                                    <ul class="dropdown-menu">
                                        <li><a class="dropdown-item" href="?islem=beklemede&id=<?php echo $iz['id']; ?>">Beklemeye Al</a></li>
                                        <li><a class="dropdown-item text-danger" href="?islem=reddet&id=<?php echo $iz['id']; ?>">İptal Et / Reddet</a></li>
                                    </ul>
                                <?php endif; ?>

                                <?php if($iz['durum'] == 'onaylandi'): ?>
                                    <a href="izin-yazdir.php?id=<?php echo $iz['id']; ?>" target="_blank" class="btn btn-sm btn-dark ms-1" title="Yazdır"><i class="fas fa-print"></i></a>
                                <?php endif; ?>
                            </div>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>
<?php include '../includes/footer.php'; ?>
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,491
Sinyal (Ağ Hiti)
1.54 MB
Kapasite

Ağda Paylaş