sys/veri_detay/#008

PYBS (Personel Yönetim Bilgi Sistemi)

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

// Format Fonksiyonu
if (!function_exists('formatSaatListeleme')) {
    function formatSaatListeleme($saat) {
        $saat = (float)$saat;
        $tam = floor($saat);
        $dakika = ($saat - $tam) * 60;
        if ($dakika > 0) {
            return $tam . ":" . str_pad(round($dakika), 2, '0', STR_PAD_LEFT);
        } else {
            return $tam;
        }
    }
}

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

$id = $_SESSION['kullanici_id'];
$ad_soyad = $_SESSION['ad_soyad']; 

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

// Kullanıcı Bilgileri
$u = $pdo->query("SELECT ise_giris_tarihi, devreden_izin, fotograf_yolu FROM kullanicilar WHERE id = $id")->fetch();
$ise_giris = new DateTime($u['ise_giris_tarihi']);
$kidem_yil = $ise_giris->diff(new DateTime())->y;

// İzin Hakları
$hakedilen = ($kidem_yil >= 15) ? 26 : (($kidem_yil >= 5) ? 20 : 14);
if ($_SESSION['rol'] == 'stajyer') { $hakedilen = 0; }
$toplam_hak = $hakedilen + (float)$u['devreden_izin'];
$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;

// Mesai Verileri
$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;

// Devamsızlık / Rapor
$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;

$ekstra_gun = floor($ham_saat / 9);
$kalan_saat = $ham_saat % 9;
$son_gun = $ham_gun + $ekstra_gun;

$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";

// Bekleyen Sayıları
$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();

$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 flex-wrap gap-2">
        
        <h3 class="m-0 text-dark fw-bold d-flex align-items-center">
            <?php 
            $db_yol = $u['fotograf_yolu'] ?? '';
            $resim_yolu = "../" . $db_yol;
            
            if (!empty($db_yol) && file_exists($resim_yolu) && $db_yol != 'assets/img/default-user.png') {
                echo '<img src="'.$resim_yolu.'" alt="Profil" class="rounded-circle me-3 border border-2 border-primary shadow-sm" style="width: 45px; height: 45px; object-fit: cover;">';
            } else {
                echo '<i class="fas fa-user-circle text-primary me-2" style="font-size: 1.2em;"></i>';
            }
            
            echo guvenlik($ad_soyad); 
            ?>
        </h3>
        
        <span class="badge bg-secondary fs-6 shadow-sm"><?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-4">
            <div class="card bg-warning text-dark shadow h-100 border-0">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-start">
                        <div>
                            <p class="text-dark-50 mb-1 fw-bold text-uppercase small">Onay Bekleyen İşlem</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 opacity-25"></i>
                    </div>
                    
                    <div class="mt-3 pt-3 border-top border-dark-subtle">
                        <div class="d-flex justify-content-between align-items-center mb-2">
                            <span class="small fw-bold"><i class="fas fa-file-signature me-2 opacity-50"></i>İzin Talebi</span>
                            <span class="badge bg-dark bg-opacity-25 text-dark rounded-pill px-3"><?php echo $bekleyen_izin; ?></span>
                        </div>
                        <div class="d-flex justify-content-between align-items-center">
                            <span class="small fw-bold"><i class="fas fa-business-time me-2 opacity-50"></i>Fazla Mesai Bildirimi</span>
                            <span class="badge bg-dark bg-opacity-25 text-dark rounded-pill px-3"><?php echo $bekleyen_mesai; ?></span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        
        <div class="col-12 col-md-6 col-lg-8">
            <div class="d-grid gap-3 h-100 d-md-flex justify-content-md-end align-items-md-center">
                <a href="../modules/izin-talep.php" class="btn btn-danger btn-lg shadow-sm py-3 fw-bold flex-fill">
                    <i class="fas fa-paper-plane me-2"></i> İZİN İSTE
                </a>
                <a href="../modules/mesai-giris.php" class="btn btn-primary btn-lg shadow-sm py-3 fw-bold flex-fill">
                    <i class="fas fa-business-time me-2"></i> FAZLA MESAİ BİLDİ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ı Fazla Mesai (1.5X)</small>
                    <h4 class="mt-1 fw-bold text-primary mb-0"><?php echo formatSaatListeleme($aylik_toplam_mesai); ?> Saat</h4>
                </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>
                </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</small>
                    <h4 class="mt-1 fw-bold text-dark mb-0"><?php echo $gelmedigi_metin; ?></h4>
                </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>
                </div>
            </div>
        </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,597
Sinyal (Ağ Hiti)
1.54 MB
Kapasite

Ağda Paylaş