sys/veri_detay/#008

PYBS (Personel Yönetim Bilgi Sistemi)

Son Senkronizasyon: 16.12.2025
calisan-panel.php 177 satır • 8.44 KB
<?php
// panels/calisan-panel.php
session_start();
require_once '../config/db.php';
require_once '../config/functions.php';
include '../includes/header.php';
include '../includes/menu.php';

$id = $_SESSION['kullanici_id'];

// --- VERİ HESAPLAMA (BU AY İÇİN) ---
$bu_ay_bas = date('Y-m-01');
$bu_ay_son = date('Y-m-t');

// 1. İzin Hakkı (Yıllık)
$u = $pdo->query("SELECT ise_giris_tarihi, devreden_izin FROM kullanicilar WHERE id = $id")->fetch();
$ise_giris = new DateTime($u['ise_giris_tarihi']);
$kidem_yil = $ise_giris->diff(new DateTime())->y;

// Yasal Hak Hesabı
$hakedilen = ($kidem_yil >= 15) ? 26 : (($kidem_yil >= 5) ? 20 : 14);
if ($_SESSION['rol'] == 'stajyer') { $hakedilen = 0; }
$toplam_hak = $hakedilen + (float)$u['devreden_izin'];

// Kullanılan Yıllık İzin (Sadece Yıllık İzinler Düşer)
$kullanilan = $pdo->query("SELECT SUM(toplam_gun) FROM izin_talepleri WHERE calisan_id = $id AND izin_turu = 'yillik' AND durum = 'onaylandi' AND YEAR(baslangic_tarihi) = YEAR(CURDATE())")->fetchColumn() ?: 0;
$kalan_izin = $toplam_hak - $kullanilan;

// 2. Bu Ayki Mesai Durumu (Onaylı)
$sql_fazla = "SELECT SUM(toplam_saat) FROM mesai_hareketleri WHERE calisan_id = $id AND durum = 'onaylandi' AND mesai_turu = 'fazla_mesai' AND tarih BETWEEN '$bu_ay_bas' AND '$bu_ay_son'";
$aylik_fazla = (float)$pdo->query($sql_fazla)->fetchColumn() ?: 0;

$sql_tatil = "SELECT SUM(toplam_saat) FROM mesai_hareketleri WHERE calisan_id = $id AND durum = 'onaylandi' AND mesai_turu IN ('hafta_tatili', 'resmi_tatil_mesaisi') AND tarih BETWEEN '$bu_ay_bas' AND '$bu_ay_son'";
$aylik_tatil_calisma = (float)$pdo->query($sql_tatil)->fetchColumn() ?: 0;
$aylik_toplam_mesai = $aylik_fazla + $aylik_tatil_calisma;

// 3. Bu Ay Gelmediği Gün/Saat Sayısı
$sql_gelmedigi = "SELECT 
                    SUM(CASE WHEN izin_turu != 'saatlik' THEN toplam_gun ELSE 0 END) as toplam_gun,
                    SUM(CASE WHEN izin_turu = 'saatlik' THEN saatlik_sure ELSE 0 END) as toplam_saat
                  FROM izin_talepleri 
                  WHERE calisan_id = $id 
                  AND durum = 'onaylandi' 
                  AND izin_turu IN ('mazeret', 'hastalik', 'saatlik', 'diger') 
                  AND baslangic_tarihi BETWEEN '$bu_ay_bas' AND '$bu_ay_son'";

$veri_gelmedigi = $pdo->query($sql_gelmedigi)->fetch();
$ham_gun = (float)$veri_gelmedigi['toplam_gun'] ?: 0;
$ham_saat = (float)$veri_gelmedigi['toplam_saat'] ?: 0;

// Saatleri güne çevirme (9 saat = 1 gün kuralı)
$ekstra_gun = floor($ham_saat / 9); // Tam bölünenleri güne ekle
$kalan_saat = $ham_saat % 9; // Kalan saat

$son_gun = $ham_gun + $ekstra_gun;

// Ekrana yazılacak metni oluştur (Örn: 3 Gün 2 Saat)
$gelmedigi_metin = "";
if ($son_gun > 0) {
    $gelmedigi_metin .= (float)$son_gun . " G ";
}
if ($kalan_saat > 0) {
    $gelmedigi_metin .= (float)$kalan_saat . " S";
}
if ($gelmedigi_metin == "") {
    $gelmedigi_metin = "0 Gün";
}

// 4. Onay Bekleyenler
$bekleyen_izin = $pdo->query("SELECT COUNT(*) FROM izin_talepleri WHERE calisan_id = $id AND durum = 'beklemede'")->fetchColumn();
$bekleyen_mesai = $pdo->query("SELECT COUNT(*) FROM mesai_hareketleri WHERE calisan_id = $id AND durum = 'beklemede'")->fetchColumn();

// --- EKRAN BAŞLIĞI VE TARİH ---
$bu_ay_adi = date('F', strtotime($bu_ay_bas));
$aylar_tr = ['January' => 'Ocak', 'February' => 'Şubat', 'March' => 'Mart', 'April' => 'Nisan', 'May' => 'Mayıs', 'June' => 'Haziran', 'July' => 'Temmuz', 'August' => 'Ağustos', 'September' => 'Eylül', 'October' => 'Ekim', 'November' => 'Kasım', 'December' => 'Aralık'];
$bu_ay_tr = $aylar_tr[$bu_ay_adi];
?>

<div class="container-fluid">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h3 class="m-0"><i class="fas fa-tachometer-alt text-primary me-2"></i> Çalışan Paneli</h3>
        <span class="badge bg-secondary fs-6"><?php echo tarihTurkce(date("Y-m-d"), true); ?></span>
    </div>

    <div class="row g-3 mb-4">
        
        <div class="col-12 col-md-6 col-lg-3">
            <div class="card bg-info text-white shadow h-100">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-center">
                        <div>
                            <p class="text-white-50 mb-0">Kalan Yıllık İzin</p>
                            <h2 class="display-5 fw-bold mb-0"><?php echo (float)$kalan_izin; ?></h2>
                        </div>
                        <i class="fas fa-umbrella-beach fa-3x text-white-50"></i>
                    </div>
                    <small class="text-white-50">Gün (Devir dahil)</small>
                </div>
            </div>
        </div>

        <div class="col-12 col-md-6 col-lg-3">
            <div class="card bg-warning text-dark shadow h-100">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-center">
                        <div>
                            <p class="text-dark-50 mb-0">Onay Bekleyen Başvuru</p>
                            <h2 class="display-5 fw-bold mb-0"><?php echo $bekleyen_izin + $bekleyen_mesai; ?></h2>
                        </div>
                        <i class="fas fa-hourglass-half fa-3x text-dark-50"></i>
                    </div>
                    <small class="text-dark-50">
                        <i class="fas fa-file-signature"></i> İzin: <?php echo $bekleyen_izin; ?> | <i class="fas fa-clock"></i> Mesai: <?php echo $bekleyen_mesai; ?>
                    </small>
                </div>
            </div>
        </div>
        
        <div class="col-12 col-lg-6">
            <div class="d-grid gap-3 h-100">
                <a href="../modules/izin-talep.php" class="btn btn-danger btn-lg shadow-sm py-3 fw-bold">
                    <i class="fas fa-paper-plane me-3"></i> İZİN TALEBİ GÖNDER
                </a>
                <a href="../modules/mesai-giris.php" class="btn btn-primary btn-lg shadow-sm py-3 fw-bold">
                    <i class="fas fa-business-time me-3"></i> FAZLA MESAİ GİR
                </a>
            </div>
        </div>
    </div>

    <div class="card-box p-4 shadow">
        <h5 class="mb-3 border-bottom pb-2 text-dark">
            <i class="fas fa-calendar-alt me-2"></i> <?php echo $bu_ay_tr; ?> Ayı Çalışma Özeti
        </h5>
        
        <div class="row g-3">
            
            <div class="col-12 col-sm-6 col-lg-3">
                <div class="p-3 border rounded text-center bg-light">
                    <small class="text-primary text-uppercase fw-bold">Toplam Onaylı Mesai</small>
                    <h4 class="mt-1 fw-bold text-primary mb-0"><?php echo formatSaatListeleme($aylik_toplam_mesai); ?> Saat</h4>
                    <small class="text-muted">(1.5x + 2x Toplamı)</small>
                </div>
            </div>
            
            <div class="col-12 col-sm-6 col-lg-3">
                <div class="p-3 border rounded text-center bg-light">
                    <small class="text-danger text-uppercase fw-bold">Tatil Mesaisi (2x)</small>
                    <h4 class="mt-1 fw-bold text-danger mb-0"><?php echo formatSaatListeleme($aylik_tatil_calisma); ?> Saat</h4>
                    <small class="text-muted">(Pazar/Bayram)</small>
                </div>
            </div>

            <div class="col-12 col-sm-6 col-lg-3">
                <div class="p-3 border rounded text-center bg-light">
                    <small class="text-warning text-uppercase fw-bold">Mazeret/Rapor Devamsızlık</small>
                    <h4 class="mt-1 fw-bold text-dark mb-0"><?php echo $gelmedigi_metin; ?></h4>
                    <small class="text-muted">(Maaşı etkileyen izinler)</small>
                </div>
            </div>
            
            <div class="col-12 col-sm-6 col-lg-3">
                <div class="p-3 border rounded text-center bg-light">
                    <small class="text-success text-uppercase fw-bold">Kıdem Süresi</small>
                    <h4 class="mt-1 fw-bold text-success mb-0"><?php echo $kidem_yil; ?> Yıl</h4>
                    <small class="text-muted">İşe giriş: <?php echo date('d.m.Y', strtotime($u['ise_giris_tarihi'])); ?></small>
                </div>
            </div>
        </div>

        <div class="alert alert-light border mt-3 small text-center text-muted">
            <i class="fas fa-info-circle"></i> Gösterilen tüm saatler ve devamsızlıklar sadece **onaylanmış** kayıtları içermektedir.
        </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,244
Sinyal (Ağ Hiti)
1.54 MB
Kapasite

Ağda Paylaş