first commit
This commit is contained in:
117
func_LB_FZ.php
Executable file
117
func_LB_FZ.php
Executable file
@ -0,0 +1,117 @@
|
||||
<?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)
|
||||
// START: Schleife <20>ber alle Funktionen
|
||||
// START: ForEach Schleife <20>ber alle Monate
|
||||
// START: Wenn gueltig_bis im katalog <20>berschritten ist bzw. Startdatum erreicht, dann keine weitere Hochrechnung mehr (inserts) bzw. ab startdatum erst loslegen
|
||||
// START: Wie viele Eintr<74>ge in Tab prog_lb_fz gibt es f<>r diesen Monat or enddat =0000-00-00?
|
||||
// >0, dann Wert gefunden, dann Art=B
|
||||
// START: Schleife <20>ber die hinterlegten Betr<74>ge, zu diesem Monat
|
||||
// Insert into prog_tmp_lb_fz, art=B
|
||||
// ENDE: Schleife <20>ber die hinterlegten Betr<74>ge, zu diesem Monat
|
||||
// ELSE: Wenn kein Eintrag in Tab prog_lb_fz gefunden wurde, dann letze Monatssumme mit Art=B zugrunde legen
|
||||
// -- Wert nicht gefunden, dann Art=F
|
||||
// Insert into prog_tmp_lb_fz, art=F
|
||||
// ENDE: Wenn kein Betrag hinterlegt ist, dann letzten Betrag f<>r diese Funktion f<>r die Hochrechnung annehmen
|
||||
// ENDE: Wenn gueltig_bis im katalog <20>berschritten ist bzw. Startdatum erreicht, dann keine weitere Hochrechnung mehr (inserts) bzw. ab startdatum erst loslegen
|
||||
// ENDE: ForEach Schleife <20>ber alle Monate
|
||||
// ENDE: Schleife <20>ber alle Funktionen
|
||||
|
||||
$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');
|
||||
|
||||
# 1 Monat abziehen, da man wissen m<>chte, in welchem Monat der Prof seine letzte Zulage bekommt. In der DB steht der erste Tag der Pension
|
||||
$query_maxjahr = $db->query("SELECT date_format(date_sub(weggang, INTERVAL 1 MONTH) ,'%Y-%m-28') enddat_form
|
||||
FROM `prog_tmp_professor`
|
||||
");
|
||||
$row_maxjahr = $query_maxjahr->fetch_array();
|
||||
$ende = $row_maxjahr['enddat_form'];
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
$query = "SELECT kfid, date_format(gueltig_ab, '%Y-%m') gueltig_ab_form, date_format(gueltig_bis, '%Y-%m') gueltig_bis_form
|
||||
FROM prog_kat_funktionen
|
||||
ORDER BY kfid 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) { // START: ForEach Schleife <20>ber alle Monate
|
||||
|
||||
// echo $cur->format('Y-m')."<br />";
|
||||
|
||||
$akt_mon = $cur->format('Y-m');
|
||||
#$query_gueltig = $db->query("SELECT date_format(gueltig_bis, '%Y-%m') gueltig_bis_form
|
||||
# FROM prog_kat_funktionen
|
||||
# WHERE kfid=$row[kfid]
|
||||
# ");
|
||||
#$row_gueltig = $query_gueltig->fetch_array();
|
||||
if (($row['gueltig_bis_form'] == '0000-00' OR $row['gueltig_bis_form'] >= $akt_mon) AND $row['gueltig_ab_form'] <= $akt_mon) { // START: Wenn gueltig_bis im katalog <20>berschritten ist, dann keine weitere Hochrechnung mehr (inserts) bzw. wenn das Beginndatum erreicht wurde
|
||||
|
||||
// echo $cur->format('Y-m')." - $row[bezeichnung] - $row[gueltig_bis_form]<br />";
|
||||
|
||||
$query_aktbesetz = $db->query("SELECT count(*) Anz
|
||||
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 kfid=$row[kfid]
|
||||
");
|
||||
$row_aktbesetz = $query_aktbesetz->fetch_array();
|
||||
if ($row_aktbesetz['Anz'] > 0) {
|
||||
|
||||
// dann Wert gefunden, dann Art=B
|
||||
// START: Schleife <20>ber die hinterlegten Betr<74>ge, zu diesem Monat
|
||||
|
||||
$query_aktbes = "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 kfid=$row[kfid]";
|
||||
$result_aktbes = $db->query($query_aktbes) or die("Cannot execute query_aktbes");
|
||||
while ($row_aktbes = $result_aktbes->fetch_array()) {
|
||||
$result_insert = $db->query("INSERT INTO prog_tmp_lb_fz (lbfzid, monat, did, kfid, wert, art) VALUES ($row_aktbes[lbfzid], '$akt_mon-01', $row_aktbes[did], $row[kfid], $row_aktbes[wert], 'B')");
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
// ELSE: Wenn kein Eintrag in Tab prog_lb_fz gefunden wurde, dann letze Monatssumme mit Art=B zugrunde legen
|
||||
|
||||
$query_lastbes_mon = $db->query("SELECT max(monat) monat
|
||||
FROM prog_tmp_lb_fz
|
||||
WHERE date_format(monat, '%Y-%m') < '$akt_mon'
|
||||
AND kfid=$row[kfid]
|
||||
AND art='B'
|
||||
ORDER BY monat desc
|
||||
LIMIT 1
|
||||
");
|
||||
$row_lastbesetz_mon = $query_lastbes_mon->fetch_array();
|
||||
$query_lastbes = $db->query("SELECT sum(wert) wert
|
||||
FROM prog_tmp_lb_fz
|
||||
WHERE monat='$row_lastbesetz_mon[monat]'
|
||||
AND kfid=$row[kfid]
|
||||
AND art='B'
|
||||
");
|
||||
$row_lastbesetz = $query_lastbes->fetch_array();
|
||||
if ($row_lastbesetz['wert'] != "") {
|
||||
|
||||
// echo "INSERT INTO prog_tmp_lb_fz (lbfzid, monat, did, kfid, wert, art) VALUES (0, '$akt_mon-01', 0, $row[kfid], $row_lastbesetz[wert], 'F')<br />";
|
||||
|
||||
$result_insert = $db->query("INSERT INTO prog_tmp_lb_fz (lbfzid, monat, did, kfid, wert, art) VALUES (0, '$akt_mon-01', 0, $row[kfid], $row_lastbesetz[wert], 'F')");
|
||||
} // Ende wenn letzter wert ungleich 0
|
||||
} // ENDE: Wenn kein Eintrag in Tab prog_lb_fz gefunden wurde, dann letze Monatssumme mit Art=B zugrunde legen
|
||||
} // ENDE: Wenn gueltig_bis im katalog <20>berschritten ist, dann keine weitere Hochrechnung mehr (inserts)
|
||||
} // ENDE: ForEach Schleife <20>ber alle Monate
|
||||
} // ENDE: Schleife <20>ber alle Funktionen
|
||||
} // Ende Funktion
|
||||
//func_LB_FZ();
|
||||
?>
|
Reference in New Issue
Block a user