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); ?>