0,0 → 1,620 |
<? |
require_once('version.inc'); |
require_once('dbaccess.inc'); |
require_once('language.inc'); |
require_once('header.inc'); |
require_once('helper.inc'); |
require_once('crypt.inc'); |
require_once('settings.inc'); |
|
$knopf = 0; |
$func = $_REQUEST['func']; |
|
# Auswertungsmenue |
if (isset($_REQUEST['planung'])) { $knopf = 25; $headline = 29; } |
|
$drm = array(true, false, false, false, false, true, false); |
|
require_once('menu.inc'); |
require_once('knumber.inc'); |
|
# Folgende Funktion erlaubt die Auswahl einer Periode fuer die der Statusbericht |
# erzeugt werden soll. |
# |
function Preselect() { |
global $periode; |
global $unum; |
global $menu; |
global $rstufe; |
|
$db = OpenDB(); |
?> |
<form action="prplanhilf.php" method="post"> |
<input type="hidden" name="menu" value="<? echo "$menu"; ?>"> |
<input type="hidden" name="headline" value="29"> |
<input type="hidden" name="func" value="prplan"> |
|
<table border=0> |
<?php |
# Auswahl eines Projekts |
echo "<tr><td>Projektauswahl:</td>\n"; |
echo "<td>"; |
|
$query = "select pl_num, pl_prnum, pl_lfd, pr_name from plan, project "; |
$query .= "where pr_num = pl_prnum and pl_status in (2,3,4) "; |
$query .= "order by pl_prnum, pl_lfd desc"; |
|
$result = QueryDB($db, $query); |
|
if (!$result) { |
closeDB($db); |
return; |
} |
|
echo "<select name=\"pl_num\">\n"; |
$numrows = numrowsDB($result); |
$rows = 0; |
|
while ($rows < $numrows) { |
$data = fetchDB($result, $rows); |
$pl_num = $data[0]; |
$pl_prnum = $data[1]; |
$pl_lfd = $data[2]; |
$pr_name = $data[3]; |
echo "<option value=\"$pl_num\">$pl_lfd: $pl_prnum $pr_name</option>\n"; |
$rows++; |
} |
|
echo "</select>"; |
echo "</td></tr>\n"; |
echo "</table>\n"; |
echo "<br><input type=\"submit\" name=\"submit\" value=\"Senden\"> <input type=\"reset\">\n"; |
echo "</form>\n"; |
closeDB($db); |
} |
|
function ShowPlanGesamt($print=false) { |
global $leneinheit; |
$pl_num = $_REQUEST['pl_num']; |
|
$db = OpenDB(); |
# Tabelle Plan-Zusammenfassung |
?> |
<table width="40%" border=1> |
<tr> |
<td class="stbb">Gruppe</td> |
<td class="stbb">Jahr</td> |
<td class="stbb">Budget</td> |
</tr> |
<?php |
# Plan auslesen (alle Tasks) und Aufwaende summieren |
$query = "select al_hours, al_pstart, kl_land from "; |
$query .= "allocation, mitarbeiter, task, key_land "; |
$query .= "where mi_num = al_ressource and kl_num = mi_land and "; |
$query .= "ta_num = al_task and ta_plnum = $pl_num "; |
$query .= "and ta_meeting = 0 "; |
$query .= "order by kl_land, al_pstart"; |
$result = QueryDB($db, $query); |
|
if (!$result) { |
closeDB($db); |
return; |
} |
|
$numrows = numrowsDB($result); |
|
if ($numrows <= 0) { |
Error("Der von Ihnen gewählte Plan $pl_num enthält keine Tasks!"); |
closeDB($db); |
return; |
} |
|
$rows = 0; |
$sum = 0.0; |
$total = 0.0; |
$j = 0; |
$r = 0; |
$oldland = ""; |
|
while ($rows < $numrows) { |
$data = fetchDB($result, $rows); |
$al_hours = $data[0]; |
$al_pstart = $data[1]; |
$kl_land = $data[2]; |
|
$jahr = gmdate("Y", $al_pstart); |
|
if ($rows == 0) { |
$j = $jahr; |
$oldland = $kl_land; |
} |
|
if ($j != $jahr || $oldland != $kl_land) { |
printf ("<tr><td>$oldland</td><td align=\"center\">$j</td><td align=\"right\">%s</td></tr>\n", FormatNum($sum, 3)); |
$sum = 0; |
$j = $jahr; |
$oldland = $kl_land; |
$r = $rows; |
} |
|
$sum += $al_hours; |
$total += $al_hours; |
$rows++; |
} |
|
if ($r != $rows) |
printf ("<tr><td>$kl_land</td><td align=\"center\">$jahr</td><td align=\"right\">%s</td></tr>\n", FormatNum($sum, 3)); |
|
# Anzeigen der Summe |
printf ("<tr><td colspan=2 class=\"stbb\">Summe:</td><td align=\"right\"><b>%s</b></td></tr>\n", FormatNum($total, 3)); |
echo "</table>\n"; |
closeDB($db); |
} |
|
function ShowPlanBasis($print=false) { |
global $leneinheit; |
global $phase; |
$pl_num = $_REQUEST['pl_num']; |
|
$db = OpenDB(); |
?> |
<table width="80%" border=1> |
<tr> |
<? |
if ($phase) { |
echo "<td class=\"stbb\">Phase</td>\n"; |
echo "<td class=\"stbb\">Subphasen</td>\n"; |
} else { |
echo "<td class=\"stbb\">Task</td>\n"; |
} |
?> |
<td class="stbb">Aktivität/Tätigkeit</td> |
<td class="stbb">Gruppe</td> |
<td class="stbb">Monat</td> |
<td class="stbb">Jahr</td> |
<td class="stbb">Basis</td> |
</tr> |
<?php |
# Plan auslesen (alle Tasks) und Aufwaende summieren |
$query = "select al_hours, al_pstart, al_phase, ta_name, ta_notiz,"; |
$query .= "kl_land, kp_phase from "; |
$query .= "allocation, mitarbeiter, task, key_land, key_phase "; |
$query .= "where mi_num = al_ressource and kl_num = mi_land and "; |
$query .= "ta_num = al_task and kp_num = al_phase and ta_plnum = $pl_num "; |
$query .= "and ta_meeting = 0 "; |
$query .= "order by al_phase, al_pstart, mi_land, ta_id"; |
$result = QueryDB($db, $query); |
|
if (!$result) { |
closeDB($db); |
return; |
} |
|
$numrows = numrowsDB($result); |
|
if ($numrows <= 0) { |
Error("Der von Ihnen gewählte Plan $pl_num enthält keine Tasks!"); |
closeDB($db); |
return; |
} |
|
$rows = 0; |
$sum = 0.0; |
$total = 0.0; |
$j = 0; |
$m = 0; |
$r = 0; |
$oldland = ""; |
|
while ($rows < $numrows) { |
$data = fetchDB($result, $rows); |
$al_hours = $data[0]; |
$al_pstart = $data[1]; |
$al_phase = $data[2]; |
$ta_name = $data[3]; |
$ta_notiz = $data[4]; |
$kl_land = $data[5]; |
$kp_phase = $data[6]; |
|
$jahr = gmdate("Y", $al_pstart); |
$mon = gmdate("n", $al_pstart); |
|
if ($rows == 0) { |
$old['jahr'] = $jahr; |
$old['mon'] = $mon; |
$old['land'] = $kl_land; |
$old['phase'] = $al_phase; |
$old['tphase'] = $kp_phase; |
$old['name'] = $ta_name; |
$oldnotiz = $ta_notiz; |
} |
|
if ($old['jahr'] != $jahr || $old['mon'] != $mon || $old['land'] != $kl_land || $old['phase'] != $al_phase || $old['name'] != $ta_name) { |
if ($phase) |
echo "<tr><td>" . $old['phase'] . " " . $old['tphase'] . "</td>"; |
else |
echo "<tr>"; |
|
echo "<td>" . $old['name'] . "</td>"; |
echo "<td>$oldnotiz</td>"; |
echo "<td>" . $old['land'] . "</td>"; |
echo "<td align=\"center\">" . $old['mon'] . "</td>"; |
echo "<td align=\"center\">" . $old['jahr'] . "</td>"; |
printf ("<td align=\"right\">%s</td></tr>\n", FormatNum($sum, 3)); |
$sum = 0; |
$old['jahr'] = $jahr; |
$old['mon'] = $mon; |
$old['land'] = $kl_land; |
$old['phase'] = $al_phase; |
$old['tphase'] = $kp_phase; |
$old['name'] = $ta_name; |
$oldnotiz = ""; |
$r = $rows; |
} |
|
$sum += $al_hours; |
$total += $al_hours; |
|
if (strlen($ta_notiz)) { |
if (strlen($oldnotiz)) |
$oldnotiz .= "<br>"; |
|
$oldnotiz .= $ta_notiz; |
} |
|
$rows++; |
} |
|
if ($r != $rows) { |
if ($phase) |
echo "<tr><td>$al_phase $kp_phase</td>"; |
else |
echo "<tr>"; |
|
echo "<td>$ta_name</td>"; |
echo "<td>$ta_notiz</td>"; |
echo "<td>$kl_land</td>"; |
echo "<td align=\"center\">$mon</td>"; |
echo "<td align=\"center\">$jahr</td>"; |
printf ("<td align=\"right\">%s</td></tr>\n", FormatNum($sum, 3)); |
} |
|
# Anzeigen der Summe |
if ($phase) |
$span = 6; |
else |
$span = 5; |
|
printf ("<tr><td colspan=$span class=\"stbb\">Summe:</td><td align=\"right\"><b>%s</b></td></tr>\n", FormatNum($total, 3)); |
echo "</table>\n"; |
closeDB($db); |
} |
|
function CreateTempPlan($db, $pl_num, $prnum) { |
global $leneinheit; |
|
# Als erstes erzeugen wir eine temporaere Tabelle in die wir die |
# einzelnen Daten unseres Plans zusammentragen und korrekt zuordnen. |
# |
$query = "create local temporary table TempPlan ("; |
$query .= "tmp_lfd integer not null unique, tmp_miname integer,"; |
$query .= "tmp_phase integer, tmp_periode integer, tmp_plan double precision,"; |
$query .= "tmp_ist double precision, tmp_taname varchar(50), tmp_notiz varchar(8192),"; |
$query .= "constraint \"tempplan_pkey\" primary key (\"tmp_lfd\"))"; |
$result = QueryDB($db, $query); |
|
if (!$result) |
return false; |
|
# Nun erzeugen wir einen Plan, ausgehend von den Tasks. Das ist der |
# erste von insgesamt zwei Schritten! |
# |
$query = "select al_hours, al_pstart, al_phase, ta_name, ta_notiz,"; |
$query .= "al_ressource from allocation, task where "; |
$query .= "ta_num = al_task and ta_plnum = $pl_num "; |
$query .= "and ta_meeting = 0"; |
$result = QueryDB($db, $query); |
|
if (!$result) |
return false; |
|
$numrows = numrowsDB($result); |
|
if ($numrows <= 0) { |
Error("Der von Ihnen gewählte Plan $pl_num enthält keine Tasks!"); |
return false; |
} |
|
$rows = 0; |
$zaehler = 1; |
|
while ($rows < $numrows) { |
$data = fetchDB($result, $rows); |
$al_hours = $data[0]; |
$al_pstart = $data[1]; |
$al_phase = $data[2]; |
$ta_name = $data[3]; |
$ta_notiz = $data[4]; |
$al_ressource = $data[5]; |
|
$mon = gmdate("n", $al_pstart); |
$year = gmdate("Y", $al_pstart); |
$al_pstart = gmmktime(0, 0, 0, $mon, 1, $year); |
|
$query = "insert into TempPlan (tmp_lfd, tmp_miname, tmp_phase,"; |
$query .= "tmp_periode, tmp_plan, tmp_ist, tmp_taname, tmp_notiz) "; |
$query .= "values ($zaehler, $al_ressource, $al_phase, $al_pstart,"; |
$query .= "$al_hours, 0, '$ta_name', '$ta_notiz')"; |
|
if (!QueryDB($db, $query)) |
return false; |
|
$rows++; |
$zaehler++; |
} |
|
# Nun suchen wir alle IST-Meldungen und ergaenzen die Daten, sofern |
# sie bereits vorhanden sind, oder fuegen einen neuen Datensatz ein. |
# |
$query = "select wd_minum, wd_datum, wd_hours / $leneinheit, wd_phase, "; |
$query .= "ta_name from wdone, task where "; |
$query .= "wd_prnum = $prnum and ta_num = wd_task"; |
$result = QueryDB($db, $query); |
|
if (!$result) |
return false; |
|
$numrows = numrowsDB($result); |
|
if ($numrows <= 0) { |
Error("Der von Ihnen gewählte Plan $pl_num enthält keine IST-Buchungen!"); |
return true; |
} |
|
$rows = 0; |
|
while ($rows < $numrows) { |
$data = fetchDB($result, $rows); |
$wd_minum = $data[0]; |
$wd_datum = $data[1]; |
$wd_ist = $data[2]; |
$wd_phase = $data[3]; |
$ta_name = $data[4]; |
|
$mon = gmdate("n", $wd_datum); |
$year = gmdate("Y", $wd_datum); |
$per = gmmktime(0, 0, 0, $mon, 1, $year); |
$query = "select tmp_lfd, tmp_ist from TempPlan where "; |
$query .= "tmp_miname = $wd_minum and tmp_periode = $per "; |
$query .= "and tmp_taname = '$ta_name'"; |
$result2 = QueryDB($db, $query); |
|
if (!$result2) |
return false; |
|
$nr = numrowsDB($result2); |
|
if ($nr > 0) { |
$data = fetchDB($result2, 0); |
$tmp_lfd = $data[0]; |
$tmp_ist = $data[1]; |
|
$wd_ist += $tmp_ist; |
|
$query = "update TempPlan set tmp_ist = $wd_ist "; |
$query .= "where tmp_lfd = $tmp_lfd"; |
|
if (!QueryDB($db, $query)) |
return false; |
} else { |
$mon = gmdate("n", $wd_datum); |
$year = gmdate("Y", $wd_datum); |
$wd_datum = gmmktime(0, 0, 0, $mon, 1, $year); |
|
$query = "insert into TempPlan (tmp_lfd, tmp_miname, tmp_phase,"; |
$query .= "tmp_periode, tmp_plan, tmp_ist, tmp_taname) "; |
$query .= "values ($zaehler, $wd_minum, $wd_phase, $wd_datum,"; |
$query .= "0, $wd_ist, '$ta_name')"; |
|
if (!QueryDB($db, $query)) |
return false; |
|
$zaehler++; |
} |
|
$rows++; |
} |
|
return true; |
} |
|
function ShowPlanDetail($print=false) { |
global $leneinheit; |
global $phase; |
$pl_num = $_REQUEST['pl_num']; |
|
$db = OpenDB(); |
# Ermitteln der Projektnummer |
$query = "select pl_prnum from plan where pl_num = $pl_num"; |
$result = QueryDB($db, $query); |
|
if (!$result) { |
closeDB($db); |
return; |
} |
|
$data = fetchDB($result, 0); |
$prnum = $data[0]; |
|
# Folgende Funktion erzeugt uns einen Plan mit zugehoerigen IST-Werten, |
# wobei diese bereits innerhalb einer Periode aufsummiert wurden. |
# |
if (CreateTempPlan($db, $pl_num, $prnum) == false) { |
closeDB($db); |
return; |
} |
|
# Tabellenkopf |
?> |
<table width="99%" border=1> |
<tr> |
<? |
if ($phase) { |
echo "<td class=\"stbb\">Phase</td>\n"; |
echo "<td class=\"stbb\">Subphasen</td>\n"; |
} else { |
echo "<td class=\"stbb\">Task</td>\n"; |
} |
?> |
<td class="stbb">Aktivität/Tätigkeit</td> |
<td class="stbb">Ressource</td> |
<td class="stbb">Gruppe</td> |
<td class="stbb">Monat</td> |
<td class="stbb">Jahr</td> |
<td class="stbb">Ist</td> |
<td class="stbb">Rest</td> |
<td class="stbb">RM aktuell</td> |
</tr> |
<?php |
# Auslesen der zuvor temporaer erzeugten Tabelle und Darstellung |
# der Inhalte. |
# |
$query = "select tmp_miname, tmp_phase, tmp_periode, tmp_plan,"; |
$query .= "tmp_ist, tmp_taname, tmp_notiz, mi_nname, mi_vname,"; |
$query .= "kl_land, kp_phase from TempPlan, mitarbeiter, key_land,"; |
$query .= "key_phase where mi_num = tmp_miname and kl_num = mi_land "; |
$query .= "and kp_num = tmp_phase "; |
$query .= "order by tmp_phase, tmp_periode, mi_nname, mi_vname"; |
$result = QueryDB($db, $query); |
|
if (!$result) { |
closeDB($db); |
return; |
} |
|
$numrows = numrowsDB($result); |
|
if ($numrows <= 0) { |
Error("Der von Ihnen gewählte Plan $pl_num enthält keine Tasks!"); |
closeDB($db); |
return; |
} |
|
$rows = 0; |
$sum = 0.0; |
$total = 0.0; |
$tothour = 0.0; |
|
while ($rows < $numrows) { |
$data = fetchDB($result, $rows); |
$tmp_miname = $data[0]; |
$tmp_phase = $data[1]; |
$tmp_periode = $data[2]; |
$tmp_plan = $data[3]; |
$tmp_ist = $data[4]; |
$tmp_taname = $data[5]; |
$tmp_notiz = $data[6]; |
$mi_nname = $data[7]; |
$mi_vname = $data[8]; |
$kl_land = $data[9]; |
$kp_phase = $data[10]; |
|
$mon = gmdate("n", $tmp_periode); |
$jahr = gmdate("Y", $tmp_periode); |
|
# Schreiben der Zeile |
if ($phase) |
echo "<tr><td>$tmp_phase $kp_phase</td>"; |
else |
echo "<tr>"; |
|
echo "<td>$tmp_taname</td>"; |
echo "<td>$tmp_notiz</td>"; |
echo "<td>$mi_nname $mi_vname</td>"; |
echo "<td>$kl_land</td>"; |
echo "<td align=\"center\">$mon</td>"; |
echo "<td align=\"center\">$jahr</td>"; |
printf ("<td align=\"right\">%s</td>", FormatNum($tmp_ist, 3)); |
$h = $tmp_plan - $tmp_ist; |
|
if ($h < 0) |
printf ("<td align=\"right\" class=\"five\">%s</td>", FormatNum($h, 3)); |
else |
printf ("<td align=\"right\">%s</td>", FormatNum($h, 3)); |
|
if ($tmp_ist == 0 && $tmp_plan > 0) |
printf ("<td align=\"right\" class=\"green\">%s</td></tr>\n", FormatNum($tmp_plan, 3)); |
else |
printf ("<td align=\"right\">%s</td></tr>\n", FormatNum($tmp_plan, 3)); |
|
$tothour += $tmp_plan; |
$total += $h; |
$sum += $tmp_ist; |
$rows++; |
} |
|
# Anzeigen der Summen |
if ($phase) |
$span = 7; |
else |
$span = 6; |
|
echo "<tr><td colspan=$span class=\"stbb\">Summe:</td>"; |
printf("<td align=\"right\"><b>%s</b></td>", FormatNum($sum, 3)); |
printf("<td align=\"right\"><b>%s</b></td>", FormatNum($total, 3)); |
printf("<td align=\"right\"><b>%s</b></td></tr>\n", FormatNum($tothour, 3)); |
echo "</table>\n"; |
closeDB($db); |
} |
|
# Auswertung des Menues: |
# |
if ($knopf == 25) // Planungshilfe |
Preselect(); |
|
# Auswertung der Funktionen |
if ($func == "prplan") { |
$pl_num = $_REQUEST['pl_num']; |
|
# Ermitteln des Projektnamens und Anzeigen des selben. |
$db = OpenDB(); |
$query = "select pl_prnum, pr_name from plan, project "; |
$query .= "where pr_num = pl_prnum and pl_num = $pl_num"; |
$result = QueryDB($db, $query); |
$data = fetchDB($result, 0); |
$selpro = $data[0]; |
$pr_name = $data[1]; |
echo "<p class=\"cry\">Projekt: $selpro $pr_name</p>"; |
echo "<br>\n"; |
closeDB($db); |
|
echo "<a href=\"#\" onClick=\"javascript:open_mwindow('prplanhilf.php?pl_num=$pl_num&header=2&func=PrintPlan', 'Planungshilfe: $selpro $pr_name', 750, 550)\">"; |
echo "<img src=\"image/print.png\" border=0 alt=\"Drucken\"></a>\n"; |
|
ShowPlanGesamt(); |
ShowPlanBasis(); |
ShowPlanDetail(); |
} |
|
if ($func == "PrintPlan") { |
$pl_num = $_REQUEST['pl_num']; |
|
# Ermitteln des Projektnamens und Anzeigen des selben. |
$db = OpenDB(); |
$query = "select pl_prnum, pr_name from plan, project "; |
$query .= "where pr_num = pl_prnum and pl_num = $pl_num"; |
$result = QueryDB($db, $query); |
$data = fetchDB($result, 0); |
$selpro = $data[0]; |
$pr_name = $data[1]; |
echo "<p class=\"cry\">Projekt: $selpro $pr_name</p>"; |
echo "<br>\n"; |
closeDB($db); |
|
ShowPlanGesamt(true); |
ShowPlanBasis(true); |
ShowPlanDetail(true); |
} |
|
require('footer.inc'); |
?> |