prognose_kehl/func_LB_BZ_fiktiv.php
2023-01-30 08:01:11 +01:00

58 lines
2.3 KiB
PHP
Executable File

<?php
require_once ("config.inc.php");
function func_LB_BZ_fiktiv($wert, $prozentsatz)
{
// Berechnung der Leistungszulagen BZ in die Zukunft sowie die fiktiven Zulagen für FIKTIVE PROFESSOREN.
$db = dbconnect();
$result_anz_fikt = $db->query("SELECT count(*) Anz
FROM prog_tmp_professor
WHERE art='F'
");
$row_anz_fikt = $result_anz_fikt->fetch_array();
if($row_anz_fikt['Anz'] >0){
// Die Tabelle darf nicht geleert werden, da sie durch die vorher laufende fun_lb_bz gelöscht wird. Aufruf in func_gesamtberechnung.php
$result_truncate = $db->query("DELETE FROM prog_tmp_lb_bz WHERE did IN (SELECT did FROM prog_tmp_professor WHERE art='F')");
// Teil 1: Vorhandene Leistungsbezüge monatlich hochrechnen
# 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
$result_weggang = $db->query("SELECT did, date_format(zugang, '%Y-%m-01') zugang_form, date_format(date_sub(weggang, INTERVAL 1 MONTH) ,'%Y-%m-28') enddat_form
FROM prog_tmp_professor
WHERE art='F'
ORDER BY tdid ASC
");
$row = $result_weggang->fetch_array();
$ende = $row['enddat_form'];
$start = date_create_from_format('Y-m-d', $row['zugang_form'], new DateTimeZone('GMT'));
$end = date_create($ende, new DateTimeZone('GMT'));
$wert2 = $wert;
// Foreach Schleife dauert lange. Ggf.
// Es scheint so, dass DateInterval den letzten Monat weglässt wenn jmd z.B. am 01. August in Ruhestand , dann rechnet die foreach-Schleife nur bis Juli. Daher wird oben im Select der 28 als Monatsende eingetragen
foreach(new DatePeriod($start, new DateInterval('P1M') , $end) as $cur) {
if($cur->format('m') == '01'){
$prozent = $wert * $prozentsatz / 100;
$wert = $wert + $prozent;
$wert2 = round($wert,2);
}else{
$wert2 = $wert2;
}
$result_insert = $db->query("INSERT INTO prog_tmp_lb_bz (lbbzid, monat, did, wert, anpassung, art) VALUES (0, '" . $cur->format('Y-m-01') . "', $row[did], $wert2, 'Y', 'F')");
}
}
} // Ende Funktion
#func_LB_BZ_fiktiv(250,2);
?>