<?php

if (isset($_GET["jahrgang"])) {
  $jahrgang = $_GET["jahrgang"];
}
else {
  $jahrgang = $_COOKIE["jahrgang"];
}

/*
# Fuer debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);
#echo __LINE__."<br />";
*/
include_once 'classes/TestProjektSmarty.class.php';

$smarty = new Smarty();
require_once ("config.inc.php");

$template = "standard";
$templatename = substr(basename($_SERVER['PHP_SELF']) , 0, -3) . "html";
require_once "language/german.inc.php";

require_once ("func_rollenrechte.php");

// Rechteüberprüfung
// $db = dbconnect();

if ($user_admin == "") {
  require ("index.php");

  exit;
} //Wenn man nicht angemeldet ist, darf man nicht auf die Seite

if (!rore($user_admin, 'j_uber', 'RE')) {
  echo "Keine Rechte";
  exit;
}

// Rechteüberprüfung ende

session_start();

if (isset($_GET['action'])) {
  $action = $_GET['action'];
}
else {
  $action = '';
}

if ($action == '') {
  $smarty->assign('ju_jahrgang', $jahrgang);
  $result_data1 = $db->query("SELECT date_format(monat,'%Y') jahr
                                     ,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
                                     ,round(sum(jahresrahmen),2) jahresrahmen
                                     ,round(sum(besausgaben),2) besausgaben
                                     ,round(sum(vergaberahmen),2) vergaberahmen
                                     ,round(sum(verg_uebertragvj),2) verg_uebertragvj
                                     ,round(sum(leistungsbez),2) leistungsbez
                                     ,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
                                 FROM `prog_tmp_synopse`
                                WHERE date_format(monat,'%Y') = '$jahrgang'
                                GROUP BY date_format(monat,'%Y')
                                ORDER BY jahr");
  $row_data1 = $result_data1->fetch_array();
  $smarty->assign('ju_jahr', "$row_data1[jahr]");
  $smarty->assign('ju_vergaberahmen_vj', number_format($row_data1['vergaberahmen_vj'], 2, ',', '.'));
  $smarty->assign('ju_jahresrahmen', number_format($row_data1['jahresrahmen'], 2, ',', '.'));
  
  $smarty->assign('ju_vergaberahmen', number_format($row_data1['vergaberahmen'], 2, ',', '.'));
  $smarty->assign('ju_verg_uebertragvj', number_format($row_data1['verg_uebertragvj'], 2, ',', '.'));
  $smarty->assign('ju_vergaberahmen_nj', number_format($row_data1['vergaberahmen_nj'], 2, ',', '.'));
  $result_data2 = $db->query("SELECT jahr, wert
                                 FROM `prog_tmp_besschnitt`
                                WHERE jahr = '$jahrgang'");
  $row_data2 = $result_data2->fetch_array();
  $smarty->assign('ju_bes_durchschnitt', number_format($row_data2['wert'], 2, ',', '.'));

  // VZA auslesen

# AB Stufe 3 kann nicht sein, dass es keine erfassten VZÄ mehr gibt. Das System berechnet diese bis der letzte in Ruhestand geht
#  $result_vzavorh = $db->query("SELECT count(*) Anz
#                                    FROM prog_vza
#                                   WHERE ab_datum like '$jahrgang%'
#                                   ORDER BY ab_datum ASC");
#  $row_vza_vorh = $result_vzavorh->fetch_array();
#  if ($row_vza_vorh['Anz'] > 0) {

  $result_data2 = $db->query("SELECT REPLACE(TRUNCATE(sum(prozent)/12,4),'.',',') wert
                                FROM prog_tmp_professor_synopse
                               WHERE monat like '$jahrgang%'
                                 AND betrag != 0.00");
  $row_data2 = $result_data2->fetch_array();
  $smarty->assign('ju_vza_schnitt', $row_data2['wert']);
  
    $query2 = "SELECT  REPLACE(TRUNCATE(sum(prozent),2),'.',',') wert
                 FROM prog_tmp_professor_synopse
                WHERE monat like '$jahrgang%'
                  AND betrag != 0.00  
             GROUP BY date_format(monat,'%m')
             ORDER BY date_format(monat,'%m') ASC";
    $result2 = $db->query($query2) or die("Cannot execute query2");
    while ($row2 = $result2->fetch_array()) {
      $value_vza[] = $row2;
    }

    $smarty->assign('table_data2', $value_vza);
    $smarty->assign('ju_vza_this', 1);
#  } else {
#
#    // Dieses Jahr ist kein VZA Eintrag vorhanden
#
#    $result_vzalast = $db->query("SELECT date_format(ab_datum, '%d.%m.%Y') ab_datum_form
#                                         , replace(round(wert,2),'.',',') wert
#                                     FROM prog_vza
#                                    WHERE date_format(ab_datum,'%Y') <= '$jahrgang'
#                                    ORDER BY ab_datum DESC
#                                    LIMIT 1");
#    $row_vza_last = $result_vzalast->fetch_array();
#    $smarty->assign('ju_last_vza_dat', $row_vza_last['ab_datum_form']);
#    $smarty->assign('ju_last_vza_wert', $row_vza_last['wert']);
#    $smarty->assign('ju_vza_this', 2);
#  }

  $result_besa = $db->query("SELECT sum(betrag) wert
                               FROM prog_tmp_professor_synopse
                              WHERE monat like '$jahrgang%' 
                           ");
  $row_besa = $result_besa->fetch_array();
  
  

    $query3 = "SELECT distinct besoldung, stufe, bzid 
                 FROM `prog_tmp_professor_synopse`
                WHERE date_format(monat, '%Y') = '$jahrgang'
             ORDER BY `prog_tmp_professor_synopse`.`besoldung` ASC";
    $result3 = $db->query($query3) or die("Cannot execute query3");
    $zaehler = 0;
    while ($row3 = $result3->fetch_array()) {
      $result_zudesc = $db->query("SELECT beschreibung
                                   FROM prog_kat_besoldungszuweisung
                                  WHERE bzid = '$row3[bzid]' 
                               ");
      $row_zudesc = $result_zudesc->fetch_array();
      
      if($row3['bzid'] == 1){
       $zuweisung = '';
      }else{
       $zuweisung = $row_zudesc['beschreibung'];
      }
      
      $result_besadet = $db->query("SELECT sum(betrag) betragdetail, sum(prozent)/12 vza
                                   FROM prog_tmp_professor_synopse
                                  WHERE monat like '$jahrgang%' 
                                    and besoldung = '$row3[besoldung]'
                                    and stufe  = '$row3[stufe]'
                                    and bzid  = $row3[bzid]
                               ");
      $row_besadet = $result_besadet->fetch_array();
      
      // Wenn einer Besoldung kein Wert zugewiesen wurde A13/Stufe 0 gibt es in der LBV-Liste nicht.
      // Die Profs mit Stufe 0 sind mit 0 erfasst, da sie nicht für das System relevant sind und das Ergebnis verfälschen würden
      if($row_besadet['betragdetail'] != 0){
        if($row3['stufe'] == 0){
         $stufedetail = "";
        }else{
         $stufedetail = $row3['stufe'];
        }
        
        // Hintergrundsfarbe
        if($zaehler == 0){
         $hgfarbe = "#ffffff";
         $zaehler = 1;
        }else{
         $hgfarbe = "#d5d5d5";
         $zaehler = 0;
        }
        
        $row3['vza'] = number_format($row_besadet['vza'], 4, ',', '.');
        $row3['betragdetail'] = number_format($row_besadet['betragdetail'], 2, ',', '.');
        $row3['stufedetail']  = $stufedetail;
        $row3['hgfarbe']      = $hgfarbe;
        $row3['zuweisung']    = $zuweisung;
        $value_zuw[]          = $row3;
      }
    }
    $smarty->assign('table_data3', $value_zuw);
    
  $result_besa_zul = $db->query("SELECT zulage
                                   FROM prog_besausg_zulage
                                  WHERE jahr = '$jahrgang' 
                               ");
  $row_besa_zul = $result_besa_zul->fetch_array();
  
  $smarty->assign('ju_besa_wert', number_format($row_besa['wert'], 2, ',', '.'));
  $smarty->assign('ju_besa_zulage', number_format($row_besa_zul['zulage'], 2, ',', '.'));
  $summe_besa = $row_besa_zul['zulage'] + $row_besa['wert'];
  $smarty->assign('ju_besa_summe', number_format($summe_besa, 2, ',', '.'));

  // Leistungsbezüge

  $result_lb_bz = $db->query("SELECT round(sum(wert),2) wert
                                     FROM prog_tmp_lb_bz
                                    WHERE date_format(monat,'%Y')= '$jahrgang'
                                    LIMIT 1");
  $row_lb_bz = $result_lb_bz->fetch_array();
  $smarty->assign('ju_lb_bz', number_format($row_lb_bz['wert'], 2, ',', '.'));
  $result_lb_lz = $db->query("SELECT round(sum(wert),2) wert
                                     FROM prog_tmp_lb_lz
                                    WHERE date_format(monat,'%Y') = '$jahrgang'
                                    LIMIT 1");
  $row_lb_lz = $result_lb_lz->fetch_array();
  $smarty->assign('ju_lb_lz', number_format($row_lb_lz['wert'], 2, ',', '.'));
  $result_lb_einmal = $db->query("SELECT round(wert,2) wert
                                     FROM prog_tmp_lb_einmal
                                    WHERE jahr= '$jahrgang'
                                    LIMIT 1");
  $row_lb_einmal = $result_lb_einmal->fetch_array();
  $smarty->assign('ju_lb_einmal', number_format($row_lb_einmal['wert'], 2, ',', '.'));
  $result_lb_fz = $db->query("SELECT round(sum(wert),2) wert
                                     FROM prog_tmp_lb_fz
                                    WHERE date_format(monat,'%Y') = '$jahrgang'
                                    LIMIT 1");
  $row_lb_fz = $result_lb_fz->fetch_array();
  $smarty->assign('ju_lb_fz', number_format($row_lb_fz['wert'], 2, ',', '.'));
  $smarty->assign('ju_lb_summe', number_format($row_data1['leistungsbez'], 2, ',', '.'));

  // Auflistung des maximalen Leistungsbezugswert

  $result_maxzul = $db->query("SELECT round(sum(w2),2) w2
                                         ,round(sum(c3),2) c3
                                         ,round(sum(max_zulage),2) max_zulage
                                     FROM prog_tmp_lb_obergrenze
                                    WHERE date_format(ab_datum,'%Y') = '$jahrgang'
                                    LIMIT 1");
  $row_maxzul = $result_maxzul->fetch_array();
  $smarty->assign('ju_maxzul_w2',  number_format($row_maxzul['w2'], 2, ',', '.'));
  $smarty->assign('ju_maxzul_c3',  number_format($row_maxzul['c3'], 2, ',', '.'));
  $smarty->assign('ju_maxzul_ges', number_format($row_maxzul['max_zulage'], 2, ',', '.'));


  # Ab 2018 sollen die maximalen Leistungsbezüge auf ein Fixbetrag geändert werden. Bspw. 1000€/Monat
  $query_maxl = $db->query("SELECT wert1*12 wert1
                              FROM `prog_parameter`
                             WHERE pid =7
                          ");
  $row_maxl = $query_maxl->fetch_array();
  if($jahrgang >= '2018' ){
   $smarty->assign('ju_maxzul_ges', number_format($row_maxl['wert1'], 2, ',', '.'));
   $smarty->assign('ju_maxzul_geandert', 1);
  }else{
   $smarty->assign('ju_maxzul_geandert', 0);
  }





  // Auflistung BZ

  $query7 = "SELECT distinct a.did
                   FROM prog_tmp_lb_bz a, prog_tmp_professor b
                  WHERE a.did=b.did
                    AND date_format(monat,'%Y') = '$jahrgang'
                    AND wert > 0
               GROUP BY a.did, lbbzid
               ORDER BY b.art, doz_name asc, lbbzid asc";

  $result7 = $db->query($query7) or die("Cannot execute query7a");
  $ln_zaehler = 0;
  while ($row7 = $result7->fetch_array()) {
    $value_bz = '';
    if ($ln_zaehler == 0) {
      $last_did = $row7['did'];
      $ln_zaehler = 1;
    }

    if ($row7['did'] == $last_did) {
      $farbe = "#d8d8d8";
    }
    else {
      $farbe = "#f4f4f4";
      $ln_zaehler = 0;
    }

    $last_did = $row7['did'];
    $query8 = "SELECT a.did, doz_titel, doz_vorname, doz_name, lbbzid, monat, sum(wert) wert, a.art, b.art fikt_prof
                   FROM prog_tmp_lb_bz a, prog_tmp_professor b
                  WHERE a.did=b.did
                    AND date_format(monat,'%Y') = '$jahrgang'
                    AND a.did = $row7[did]
                    AND wert > 0
               GROUP BY a.did, lbbzid, art
               ORDER BY b.art, doz_name asc, lbbzid asc";

    $result8 = $db->query($query8) or die("Cannot execute query8");
    while ($row8 = $result8->fetch_array()) {
      if ($row8['art'] == 'F') {
        
        // Darf der Button zum Löschen eines fiktiven Werts angezeigt werden bzw. ist der Eintrag schon vorhanden.
        // Es muss nämlich erst eine Neuberechnung durchgeführt werden, damit es nicht mehr als fiktiven Wert angezeigt wird
        $result_fikdel = $db->query("SELECT count(*) Anz
                                       FROM prog_lb_lz
                                      WHERE wert = 0
                                        AND startdat= '$row8[monat]'
                                        AND did = $row8[did]
                                    ");
        $row_fikdel = $result_fikdel->fetch_array();
        if($row_fikdel['Anz'] == 0){
          $art = "Fiktiver Wert";
          #fiktive BZ bei fiktiven Profs dürfen nicht gelöscht werden können, da es sonst in prog_lb_bz geschrieben werden müsste.
	  #Da darf es aber nicht rein, da dort nur physikalische Profs drinstehen dürfen. Wenn das Datum für fiktiven Prof verschwindet,
	  #würde es in prog_lb_bz noch stehen. Daher dürfen fiktive Profs nur in die tmp-Tabellen geschrieben werden.
          if($row8['fikt_prof'] == 'B'){
            $bz_del = "<a href='?action=lbfikdel&did=$row8[did]&datum=$row8[monat]'><img title = 'Wert l&ouml;schen' border='0' height=10 src='./templates/$template/images/drop.png'></a>";
            $fikt_not_edit = 0;
          }else{
            $bz_del = "";
            $fikt_not_edit = 1;
          }
        }else{
          $art = "Fiktiver Wert";
          $bz_del = "";
          $fikt_not_edit = 0;
        }
        $edit = "$row8[did]";
      }

      if ($row8['art'] == 'B') {
        $bz_del = "";
        $art = 'Erfasster Wert';
        $edit = "$row8[did]";
      }

      if ($row8['art'] == 'O') {
        $art = 'max. LBZ erreicht';
        $edit = "$row8[did]";
      }
       
      // if($row8['lbbzid'] < 1000){
      // Mindestdatum und Ende Laufzeit ermitteln

      $result_laufz = $db->query("SELECT date_format(min(monat), '%d.%m.%Y') min_monat_form, date_format(max(monat), '%m.%Y') max_monat_form,  date_format(max(monat), '%Y-%m-%d') max_mon
                                       FROM prog_tmp_lb_bz
                                      WHERE lbbzid='$row8[lbbzid]'
                                        AND did= '$row8[did]'
                                      LIMIT 1");
      $row_laufz = $result_laufz->fetch_array();
      $startdat = "$row_laufz[min_monat_form]";
      #$enddat = "$row_laufz[max_monat_form]";
      
      # In Windows 32 bit Systemen kommt es zu einem date/strtotime Fehler ab dem Jahr 2038. Dann haben alle Monate 31 Tage
      $letzter_tag_mon = date("t", strtotime("$row_laufz[max_mon]")); // gives 31,28,31,30
      $enddat = "$letzter_tag_mon.$row_laufz[max_monat_form]";
      

      // }else{
      //  $startdat = "$row8[monat_form]";
      //  $enddat = "";
      // }

      $wert_neu = number_format($row8['wert'], 2, ',', '.');
      $row8['edit'] = $edit;
      $row8['fikt_not_edit'] = $fikt_not_edit;
      $row8['farbe'] = $farbe;
      $row8['delta_art'] = $art;
      $row8['bz_del'] = $bz_del;
      $row8['wert'] = $wert_neu;
      $row8['startdat'] = $startdat;
      $row8['enddat'] = $enddat;
      $value_bz[] = $row8;
    }

    $row7['inner'] = $value_bz;
    $row7['farbe'] = $farbe;
    $value_7[] = $row7;
  }

  // echo "<pre>";
  // print_r($value_7);
  // echo "</pre>";

  $smarty->assign('outer_loop_bz', $value_7);














  // Auflistung der LBZ mtl. (Deltas)

  $query3 = "SELECT distinct a.did
                   FROM prog_tmp_lb_lz a, prog_tmp_professor b
                  WHERE a.did=b.did
                    AND date_format(monat,'%Y') = '$jahrgang'
                    AND (wert > 0 or a.art ='O')
               GROUP BY a.did, lblzid
               ORDER BY b.art, doz_name asc, lblzid asc";

  $result3 = $db->query($query3) or die("Cannot execute query3a");
  $ln_zaehler = 0;
  while ($row3 = $result3->fetch_array()) {
    $value_delta = '';
    if ($ln_zaehler == 0) {
      $last_did = $row3['did'];
      $ln_zaehler = 1;
    }

    if ($row3['did'] == $last_did) {
      $farbe = "#d8d8d8";
    }
    else {
      $farbe = "#f4f4f4";
      $ln_zaehler = 0;
    }

    $last_did = $row3['did'];
    $query4 = "SELECT a.did, doz_titel, doz_vorname, doz_name, lblzid, monat, sum(wert) wert, a.art, date_format(monat, '%Y-01-01') start_aussetz_fiktiv, date_format(monat, '%Y-12-31') ende_aussetz_fiktiv, b.art fikt_prof
                   FROM prog_tmp_lb_lz a, prog_tmp_professor b
                  WHERE a.did=b.did
                    AND date_format(monat,'%Y') = '$jahrgang'
                    AND a.did = $row3[did]
                    AND (wert > 0 or a.art ='O')
               GROUP BY a.did, lblzid, art
               ORDER BY b.art, doz_name asc, lblzid asc";


    $result4 = $db->query($query4) or die("Cannot execute query4");
    while ($row4 = $result4->fetch_array()) {
      if ($row4['art'] == 'F') {
        
        // Darf der Button zum Löschen eines fiktiven Werts angezeigt werden bzw. ist der Eintrag schon vorhanden.
        // Es muss nämlich erst eine Neuberechnung durchgeführt werden, damit es nicht mehr als fiktiven Wert angezeigt wird
        $result_fikdel = $db->query("SELECT count(*) Anz
                                       FROM prog_lb_lz
                                      WHERE wert = 0
                                        AND startdat= '$row4[monat]'
                                        AND did = $row4[did]
                                    ");
        $row_fikdel = $result_fikdel->fetch_array();
        if($row_fikdel['Anz'] == 0){
          $art = "Fiktiver Wert";
          
          #fiktive BZ bei fiktiven Profs dürfen nicht gelöscht werden können, da es sonst in prog_lb_bz geschrieben werden müsste.
	  #Da darf es aber nicht rein, da dort nur physikalische Profs drinstehen dürfen. Wenn das Datum für fiktiven Prof verschwindet,
	  #würde es in prog_lb_bz noch stehen. Daher dürfen fiktive Profs nur in die tmp-Tabellen geschrieben werden.
          if($row4['fikt_prof'] == 'B'){
            $lz_del = "<a href='?action=lzfikdel&did=$row4[did]&startdatum=$row4[start_aussetz_fiktiv]&enddatum=$row4[ende_aussetz_fiktiv]'><img title = 'Wert dieses Jahr l&ouml;schen' border='0' height=10 src='./templates/$template/images/drop.png'></a>";
            $fikt_not_edit_lz = 0;
          }else{
            $lz_del = "";
            $fikt_not_edit_lz = 1;
          }
        }else{
          $art = "Fiktiver Wert";
          $lz_del = "";
          $fikt_not_edit_lz = 0;
        }
        $edit = "$row4[did]";
      }

      if ($row4['art'] == 'B') {
        $lz_del = "";
        $art = 'Erfasster Wert';
        $edit = "$row4[did]";
      }

      if ($row4['art'] == 'O') {
        $art = 'max. LBZ erreicht';
        $edit = "$row4[did]";
      }

      // if($row4['lblzid'] < 1000){
      // Mindestdatum und Ende Laufzeit ermitteln

      $result_laufz = $db->query("SELECT date_format(min(monat), '%d.%m.%Y') min_monat_form, date_format(max(monat), '%m.%Y') max_monat_form,  date_format(max(monat), '%Y-%m-%d') max_mon
                                       FROM prog_tmp_lb_lz
                                      WHERE lblzid='$row4[lblzid]'
                                        AND did= '$row4[did]'
                                      LIMIT 1");
      $row_laufz = $result_laufz->fetch_array();
      $startdat = "$row_laufz[min_monat_form]";
      #$enddat = "$row_laufz[max_monat_form]";
      
      # In Windows 32 bit Systemen kommt es zu einem date/strtotime Fehler ab dem Jahr 2038. Dann haben alle Monate 31 Tage
      $letzter_tag_mon = date("t", strtotime("$row_laufz[max_mon]")); // gives 31,28,31,30
      $enddat = "$letzter_tag_mon.$row_laufz[max_monat_form]";


      // }else{
      //  $startdat = "$row4[monat_form]";
      //  $enddat = "";
      // }

      $wert_neu = number_format($row4['wert'], 2, ',', '.');
      $row4['edit'] = $edit;
      $row4['fikt_not_edit_lz'] = $fikt_not_edit_lz;
      $row4['farbe'] = $farbe;
      $row4['delta_art'] = $art;
      $row4['lz_del'] = $lz_del;
      $row4['wert'] = $wert_neu;
      $row4['startdat'] = $startdat;
      $row4['enddat'] = $enddat;
      $value_delta[] = $row4;
    }

    $row3['inner'] = $value_delta;
    $row3['farbe'] = $farbe;
    $value_3[] = $row3;
  }

  // echo "<pre>";
  // print_r($value_3);
  // echo "</pre>";

  $smarty->assign('outer_loop', $value_3);

  // Auflistung der Funktionsbezüge

  $query5 = "SELECT distinct a.kfid
                   FROM prog_tmp_lb_fz a, prog_kat_funktionen b
                  WHERE a.kfid=b.kfid
                    AND date_format(monat,'%Y') = '$jahrgang'
                    AND wert > 0
               GROUP BY a.lbfzid, b.kfid, a.did
               ORDER BY bezeichnung asc, monat asc
               ";
  $result5 = $db->query($query5) or die("Cannot execute query4");
  $ln_zaehler1 = 0;
  while ($row5 = $result5->fetch_array()) {
    $value_funktion = '';
    if ($ln_zaehler1 == 0) {
      $last_kfid = $row5['kfid'];
      $ln_zaehler1 = 1;
    }

    if ($row5['kfid'] == $last_kfid) {
      $farbe = "#d8d8d8";
    }
    else {
      $farbe = "#f4f4f4";
      $ln_zaehler1 = 0;
    }

    $last_kfid = $row5['kfid'];
    $query6 = "SELECT lbfzid, b.kfid, a.did, sum(a.wert) wert, art, b.bezeichnung, monat
                   FROM prog_tmp_lb_fz a, prog_kat_funktionen b
                  WHERE a.kfid=b.kfid
                    AND date_format(monat,'%Y') = '$jahrgang'
                    AND a.kfid = $row5[kfid]
                    AND wert > 0
               GROUP BY a.lbfzid, b.kfid, a.did
               ORDER BY bezeichnung asc, monat asc";
    $result6 = $db->query($query6) or die("Cannot execute query6");
    while ($row6 = $result6->fetch_array()) {
      if ($row6['art'] == 'F') {
        $art = 'Fiktiver Wert';
        $edit = "$row6[kfid]";
      }
      else {
        $art = 'Erfasster Wert';
        $edit = "$row6[kfid]";
      }

      if ($row6['did'] != 0) {

        // Wenn kein fiktiver Wert zugeordneten Prof suchen

        $result_name = $db->query("SELECT doz_titel, doz_vorname, doz_name, date_format(startdat, '%d.%m.%Y') startdat, date_format(enddat, '%d.%m.%Y') enddat
                                     FROM prog_tmp_professor a, prog_lb_fz b
                                    WHERE a.did=b.did
                                      AND a.did= '$row6[did]'
                                      AND b.lbfzid=$row6[lbfzid]
                                 ORDER BY a.art, startdat DESC
                                    LIMIT 1");
        $row_name = $result_name->fetch_array();
        $name = trim("$row_name[doz_titel] $row_name[doz_name], $row_name[doz_vorname]");
        $startdat = "$row_name[startdat]";
        $enddat = "$row_name[enddat]";
      }
      else {

        // Startdatum des fiktiven Werts herausfinden

        $result_startf = $db->query("SELECT date_format(min(monat), '%d.%m.%Y') monat_form
                                     FROM prog_tmp_lb_fz 
                                    WHERE kfid= '$row6[kfid]'
                                      AND art='F'
                                    ORDER BY Monat DESC
                                    LIMIT 1");
        $row_startf = $result_startf->fetch_array();
        $name = "Fiktiver Wert";
        $startdat = "$row_startf[monat_form]";
        $enddat = "";
      }

      $wert_neu = number_format($row6['wert'], 2, ',', '.');
      $row6['fz_art'] = $art;
      $row6['edit'] = $edit;
      $row6['wert'] = $wert_neu;
      $row6['name'] = $name;
      $row6['startdat'] = $startdat;
      $row6['enddat'] = $enddat;
      $value_funktion[] = $row6;
    }

    $row5['inner'] = $value_funktion;
    $row5['farbe'] = $farbe;
    $value_5[] = $row5;
  }

  // echo "<pre>";
  // print_r($value_5);
  // echo "</pre>";

  $smarty->assign('outer_loop5', $value_5);

  // $smarty->assign('table_funktionen', $value_funktion);
  // --- Gespeicherte Bezüge Ende -----
  // $heute_format = date("Y", mktime(0, 0, 0, 0, 0, date("Y")));  // ISO-8601 Format wie in der Datenbank: Formatierung f&uuml;r Vergleiche erforderlich
  
  // Der erste Wert wird vorgegeben
  $result_min = $db->query("SELECT min(date_format(monat, '%Y')) jahr
                                FROM prog_tmp_synopse");
  $row_min = $result_min->fetch_array();

  // Wann geht der letzte Prof in Ruhestand

  $result_max = $db->query("SELECT max(date_format(weggang,'%Y')) weggang
                                FROM prog_tmp_professor");
  $row_max = $result_max->fetch_array();

  // Vor zurückblättern

  $jahrgang_next = $jahrgang + 1;
  $jahrgang_prev = $jahrgang - 1;
  if ($row_min['jahr'] < $jahrgang) {
    $smarty->assign('ju_td_prev', "?jahrgang=$jahrgang_prev");
  }
  else {
    $smarty->assign('ju_td_prev', "");
  }

  if ($row_max['weggang'] > $jahrgang) {
    $smarty->assign('ju_td_next', "?jahrgang=$jahrgang_next");
  }
  else {
    $smarty->assign('ju_td_next', "");
  }
}
if ($action == 'lzfikdel') {
  $startdat=$_GET['startdatum'];
  $enddat=$_GET['enddatum'];
  $did=$_GET['did'];
  $modify_date = date("Y-m-d H:i:s");
  $result = $db->query("INSERT INTO prog_lb_lz (startdat, enddat, wert, did, modify_date) VALUES ('$startdat', '$enddat', '0', '$did', '$modify_date')");
  echo "<meta http-equiv=\"refresh\" content=\"2; URL=" . $_SERVER['PHP_SELF'] . "?\">";
}
if ($action == 'lbfikdel') {
  $startdat=$_GET['datum'];
  $did=$_GET['did'];
  $modify_date = date("Y-m-d H:i:s");
  
  $jahr = substr($startdat, 0, 4); // Jahr auslesen aus der SQL Abfrage
  $mon = substr($startdat, 5, 2); // Monat auslesen aus der SQL-Abfrage
  $tag = substr($startdat, 8, 2); // Tag auslesen aus der SQL-Abfrage

  $tstamp = mktime(0, 0, 0, $mon, $tag-1, $jahr); // Tag subtrahieren, der dann in der HTML auch ausgegeben wird
  $enddat = date("Y-m-d", $tstamp); // Datum formatieren

  # Offene aktive Zulagen beenden
  $result = $db->query("UPDATE prog_lb_bz 
                           SET enddat= '$enddat'
                              ,modify_date = '$modify_date'
                         WHERE enddat = '0000-00-00'
                           AND did = '$did'
                       ");
  
  # Zulagen auf 0 setzen
  $result = $db->query("INSERT INTO prog_lb_bz (startdat, wert, did, modify_date) VALUES ('$startdat', '0', '$did', '$modify_date')");
  echo "<meta http-equiv=\"refresh\" content=\"3; URL=" . $_SERVER['PHP_SELF'] . "?\">";
}
$smarty->assign('action', "$action");
$smarty->display("$template/$templatename");
?>