<?php
require_once("config.inc.php");

function func_LB_FZ() {
# Berechnung der Leistungszulagen für die Wahrnehmung von Funktionen

# Ermitteln des Anfangsdatum (vergaberahmen   
# Ermitteln des Enddatum (wenn der letze in Ruhestand geht)

# Schleife über alle erfassten Funktionen
  # Schleife über den Zeitraum von bis
  # Wenn gueltig_bis im katalog überschritten ist, dann keine weitere Hochrechnung mehr (inserts)
  # Wenn kein Betrag hinterlegt ist, dann letzten Betrag für diese Funktion für die Hochrechnung annehmen
  


  $db = dbconnect();
  $result_truncate = $db->query("TRUNCATE TABLE prog_tmp_lb_fz");
    
    $query_minjahr = $db->query("SELECT min(jahr) jahr
                                FROM `prog_vergaberahmen`
                            ");
    $row_minjahr = $query_minjahr->fetch_array();
    $start = new DateTime($row_minjahr['jahr'].'-01-01');
    
    
    $query_maxjahr = $db->query("SELECT date_format(max(weggang),'%Y-%m-28') enddat_form
                                    FROM `prog_professor`
                                ");
    $row_maxjahr = $query_maxjahr->fetch_array();
    $ende = $row_maxjahr['enddat_form'];
    $end = date_create($ende, new DateTimeZone('GMT'));


    $query = "SELECT lbfzid, kfid, date_format(startdat, '%Y-%m') startdat_form, date_format(enddat, '%Y-%m') enddat_form, wert
                FROM prog_lb_fz
               where kfid=2
               ORDER BY startdat ASC";
    $result = $db->query( $query)
              or die ("Cannot execute query");

    while ($row = $result->fetch_array()){
  
      #$start = date_create_from_format('Y-m-d', $row['startdat_form'], new DateTimeZone('GMT'));
      
      
      foreach ( new DatePeriod($start, new DateInterval('P1M'), $end) as $cur )
      {
         echo $cur->format('Y-m')."<br>";
          $akt_mon = $cur->format('Y-m');
          

            $query_gueltig = $db->query("SELECT date_format(gueltig_bis, '%Y-%m') gueltig_form
                                             FROM prog_kat_funktionen
                                            WHERE kfid=$row[kfid]
                                          ");
            $row_gueltig= $query_gueltig->fetch_array();

          
          if($row_gueltig['gueltig_form'] == '0000-00' OR $row_gueltig['gueltig_form'] >= $akt_mon){
#            echo $cur->format('Y-m')." - $row[bezeichnung] - $row[gueltig_form]<br>";
            
            $query_aktbesetz = $db->query("SELECT lbfzid, wert, did
                                             FROM prog_lb_fz
                                            WHERE date_format(startdat, '%Y-%m') <= '$akt_mon'
                                              AND (date_format(enddat, '%Y-%m') >= '$akt_mon'  OR enddat = '0000-00-00')
                                              AND lbfzid = $row[lbfzid]
                                              AND kfid=$row[kfid]
                                          ");
            $row_aktbesetz = $query_aktbesetz->fetch_array();
            
            if($row_aktbesetz['did'] != ''){
              $result_insert = $db->query("INSERT INTO prog_tmp_lb_fz (lbfzid, monat, did, kfid, wert, art) VALUES ($row_aktbesetz[lbfzid], '$akt_mon-01', $row_aktbesetz[did], $row[kfid], $row_aktbesetz[wert], 'B')");
            }else{


              $query_lastbesetzanz = $db->query("SELECT count(*) Anz
                                                FROM prog_lb_fz
                                               WHERE enddat = '0000-00-00'
                                                 AND kfid=$row[kfid]
                                            ");
              $row_lastbesetzanz = $query_lastbesetzanz->fetch_array();
              
              # Bevor ein fiktiver Wert vergeben wird, erst prüfen, ob es nicht schon eine andere Zulage gibt, die unbefristet ist.
              # Wenn nicht, dann erst den letzten gültigen Wert nehmen für eine fiktiven Betrag
              if($row_lastbesetzanz['Anz'] == 0){
              
                $query_lastbesetz = $db->query("SELECT wert
                                                  FROM prog_lb_fz
                                                 WHERE date_format(startdat, '%Y-%m') <= '$akt_mon'
                                                   AND kfid=$row[kfid]
                                                   and date_format(enddat, '%Y-%m') != '0000-00'
                                                 ORDER BY startdat desc
                                                 LIMIT 1
                                            ");
                $row_lastbesetz = $query_lastbesetz->fetch_array();
                if($row_lastbesetz['wert'] != ""){
#echo "INSERT INTO prog_tmp_lb_fz (lbfzid, monat, did, kfid, wert, art) VALUES (99, '$akt_mon-01', 99, $row[kfid], $row_lastbesetz[wert], 'F')<br>";
                  $result_insert = $db->query("INSERT INTO prog_tmp_lb_fz (lbfzid, monat, did, kfid, wert, art) VALUES (99, '$akt_mon-01', 99, $row[kfid], $row_lastbesetz[wert], 'F')");
                }
              }
            }
            
          }
          
      }  
          #echo "<hr>";
    }
 }  // Ende Funktion

func_LB_FZ();
?>