Subversion Repositories public

Compare Revisions

Ignore whitespace Rev 3 → Rev 4

/pm/trunk/prtressource.php
0,0 → 1,583
<?
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['ressource'])) { $knopf = 26; $headline = 30; }
 
$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="prtressource.php" method="post">
<input type="hidden" name="menu" value="<? echo "$menu"; ?>">
<input type="hidden" name="headline" value="30">
<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 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&auml;hlte Plan $pl_num enth&auml;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&auml;hlte Plan $pl_num enth&auml;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 PrintRessource($pl_num) {
global $phase;
 
$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;
}
 
# Wieviele Perioden gibt es insgesamt?
$query = "select count(distinct tmp_periode) from TempPlan";
$result = QueryDB($db, $query);
 
if (!$result) {
closeDB($db);
return;
}
 
$data = fetchDB($result, 0);
$numper = $data[0];
$np = $numper * 2;
 
# Zeichnen des Tabellenkopfs
?>
<table border=1>
<tr>
<td colspan=2>&nbsp;</td>
<td colspan=<? echo "$np"; ?> class="stbb">Periode</td>
<td colspan=2 class="stbb">Summe</td>
<td colspan=2 class="stbb">Total</td>
</tr>
<tr>
<td rowspan=2 valign="top" class="stbb">Ressource</td>
<?php
if ($phase)
echo "<td rowspan=2 valign=\"top\" class=\"stbb\">Phase / Task</td>\n";
else
echo "<td rowspan=2 valign=\"top\" class=\"stbb\">Task</td>\n";
 
$query = "select distinct tmp_periode from TempPlan order by tmp_periode";
$result = QueryDB($db, $query);
 
if (!$result) {
echo "</tr></table>";
closeDB($db);
return;
}
 
$numrows = numrowsDB($result);
$r = 0;
 
while ($r < $numrows) {
$data = fetchDB($result, $r);
$tmp_periode = $data[0];
 
$mon = gmdate("n", $tmp_periode);
$year = gmdate("Y", $tmp_periode);
 
if ($r == 0) {
$fmon = $mon;
$fyear = $year;
}
 
echo " <td colspan=2 class=\"stbb\">$mon/$year</td>\n";
$sumperp[$r] = 0.0;
$sumperi[$r] = 0.0;
$r++;
}
 
$lmon = $mon;
$lyear = $year;
echo " <td colspan=2>&nbsp;</td>\n";
echo " <td colspan=2>&nbsp;</td>\n";
echo " </tr>\n <tr>\n";
$r = 0;
 
while ($r < $numrows) {
echo " <td class=\"stbb\">Plan</td>\n";
echo " <td class=\"stbb\">IST</td>\n";
$r++;
}
 
echo " <td class=\"stbb\">Plan</td>\n";
echo " <td class=\"stbb\">IST</td>\n";
echo " <td class=\"stbb\">Plan</td>\n";
echo " <td class=\"stbb\">IST</td>\n </tr>\n";
 
# Nun fuellen wir die Tabelle mit Daten...
#
$query = "select tmp_miname, tmp_phase, tmp_periode, tmp_plan, tmp_ist, ";
$query .= "tmp_taname, mi_nname, mi_vname from TempPlan, mitarbeiter ";
$query .= "where mi_num = tmp_miname order by mi_nname, mi_vname, ";
$query .= "tmp_phase, tmp_taname, tmp_periode";
$result = QueryDB($db, $query);
 
if (!$result) {
closeDB($db);
return;
}
 
$numrows = numrowsDB($result);
$r = 0;
$pz = 0;
$first = true;
$last = false;
$sump = 0.0;
$totp = 0.0;
$sumptotal = 0.0;
$sumi = 0.0;
$toti = 0.0;
$sumitotal = 0.0;
$oldname = 0;
$oldtaname = "";
$oldphase = -1;
$class = "nw";
$ldate = gmmktime(0, 0, 0, $lmon, 1, $lyear);
$adate = gmmktime(0, 0, 0, $fmon, 1, $fyear);
$flag = 0;
 
while ($r < $numrows) {
$data = fetchDB($result, $r);
$tmp_miname = $data[0];
$tmp_phase = $data[1];
$tmp_periode = $data[2];
$tmp_plan = $data[3];
$tmp_ist = $data[4];
$tmp_taname = $data[5];
$mi_nname = $data[6];
$mi_vname = $data[7];
 
$mon = gmdate("n", $tmp_periode);
$year = gmdate("Y", $tmp_periode);
 
if ($r == 0) {
$oldname = $tmp_miname;
$oldphase = $tmp_phase;
$oldtaname = $tmp_taname;
}
 
if ($oldphase != $tmp_phase || $oldname != $tmp_miname || $oldtaname != $tmp_taname) {
while ($adate <= $ldate) {
echo "<td class=\"$class\" align=\"right\">&nbsp;</td><td class=\"$class\" align=\"right\">&nbsp;</td>\n";
$aktmon++;
 
if ($aktmon > 12) {
$aktyear++;
$aktmon = 1;
}
 
$adate = gmmktime(0, 0, 0, $aktmon, 1, $aktyear);
 
if ($class == "nw")
$class = "nw1";
else
$class = "nw";
}
 
printf ("<td class=\"sum\" align=\"right\">%s</td>", FormatNum($sump, 3));
printf ("<td class=\"sum\" align=\"right\">%s</td>\n", FormatNum($sumi, 3));
echo "<td colspan=2>&nbsp;</td></tr>\n";
 
if ($oldname != $tmp_miname) {
echo "<tr><td colspan=2>&nbsp;</td>";
$pz = 0;
 
while ($pz < $numper) {
printf ("<td class=\"lsum\" align=\"right\">%s</td>", FormatNum($sumperp[$pz], 3));
printf ("<td class=\"lsum\" align=\"right\">%s</td>", FormatNum($sumperi[$pz], 3));
$sumperp[$pz] = 0.0;
$sumperi[$pz] = 0.0;
$pz++;
}
 
echo "<td colspan=2>&nbsp;</td>";
printf("<td class=\"lsum\" align=\"right\">%s</td>", FormatNum($totp, 3));
printf("<td class=\"lsum\" align=\"right\">%s</td></tr>\n", FormatNum($toti, 3));
$oldname = $tmp_miname;
$totp = 0.0;
$toti = 0.0;
}
 
$oldphase = $tmp_phase;
$oldtaname = $tmp_taname;
$sump = 0.0;
$sumi = 0.0;
$pz = 0;
$first = true;
$last = true;
$class = "nw";
}
 
if ($first) {
echo "<tr><td class=\"nw\">$mi_nname $mi_vname</td>\n";
 
if ($phase)
echo "<td class=\"nw\">$tmp_phase: $tmp_taname</td>\n";
else
echo "<td class=\"nw\">$tmp_taname</td>\n";
 
$aktmon = $fmon;
$aktyear = $fyear;
$adate = gmmktime(0, 0, 0, $aktmon, 1, $aktyear);
$first = false;
$class = "nw";
$pz = 0;
}
 
if ($mon != $aktmon || $year != $aktyear) {
while ($adate < $ldate && $adate != $tmp_periode) {
echo "<td class=\"$class\" align=\"right\">&nbsp;</td><td class=\"$class\" align=\"right\">&nbsp;</td>\n";
$aktmon++;
$pz++;
 
if ($aktmon > 12) {
$aktyear++;
$aktmon = 1;
}
 
$adate = gmmktime(0, 0, 0, $aktmon, 1, $aktyear);
 
if ($class == "nw")
$class = "nw1";
else
$class = "nw";
}
}
 
printf ("<td class=\"$class\" align=\"right\">%s</td>", FormatNum($tmp_plan, 3));
 
if (($tmp_plan - $tmp_ist) < 0) {
$class = "five";
 
if ($class == "nw")
$flag = 1;
}
 
printf ("<td class=\"$class\" align=\"right\">%s</td>\n", FormatNum($tmp_ist, 3));
$aktmon++;
 
if ($aktmon > 12) {
$aktmon = 1;
$aktyear++;
}
 
$adate = gmmktime(0, 0, 0, $aktmon, 1, $aktyear);
 
if ($flag)
$class = "nw";
 
if ($class == "nw")
$class = "nw1";
else
$class = "nw";
 
$sump += $tmp_plan;
$sumi += $tmp_ist;
$totp += $tmp_plan;
$toti += $tmp_ist;
$sumptotal += $tmp_plan;
$sumitotal += $tmp_ist;
$sumperp[$pz] += $tmp_plan;
$sumperi[$pz] += $tmp_ist;
$pz++;
$last = false;
$r++;
}
 
while ($adate <= $ldate) {
echo "<td class=\"$class\" align=\"right\">&nbsp;</td><td class=\"$class\" align=\"right\">&nbsp;</td>\n";
$aktmon++;
 
if ($aktmon > 12) {
$aktyear++;
$aktmon = 1;
}
 
$adate = gmmktime(0, 0, 0, $aktmon, 1, $aktyear);
 
if ($class == "nw")
$class = "nw1";
else
$class = "nw";
}
 
printf ("<td class=\"sum\" align=\"right\">%s</td>", FormatNum($sump, 3));
printf ("<td class=\"sum\" align=\"right\">%s</td>\n", FormatNum($sumi, 3));
echo "<td colspan=2>&nbsp;</td></tr>\n";
 
echo "<tr><td colspan=2>&nbsp;</td>";
$pz = 0;
 
while ($pz < $numper) {
printf ("<td class=\"lsum\" align=\"right\">%s</td>", FormatNum($sumperp[$pz], 3));
printf ("<td class=\"lsum\" align=\"right\">%s</td>", FormatNum($sumperi[$pz], 3));
$pz++;
}
 
printf ("<td colspan=2>&nbsp;</td><td class=\"lsum\" align=\"right\">%s</td>", FormatNum($totp, 3));
printf ("<td class=\"lsum\" align=\"right\">%s</td></tr>\n", FormatNum($toti, 3));
$cs = 2 + $np + 2;
printf ("<tr><td colspan=$cs>&nbsp;</td><td class=\"two\" align=\"right\">%s</td>", FormatNum($sumptotal, 3));
printf ("<td class=\"two\" align=\"right\">%s</td></tr>\n", FormatNum($sumitotal, 3));
echo "</table>\n";
closeDB($db);
}
 
# Auswertung des Menues:
#
if ($knopf == 26) // Ressourcenauslastung
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<br>\n";
echo "Ressourcenauslastung der Mitarbeiter in PT</p>";
echo "<br>\n";
closeDB($db);
 
echo "<a href=\"#\" onClick=\"javascript:open_mwindow('prtressource.php?pl_num=$pl_num&header=2&func=PrintPlan', 'Ressourcenauslastung: $selpro $pr_name', 750, 550)\">";
echo "<img src=\"image/print.png\" border=0 alt=\"Drucken\"></a>\n";
 
PrintRessource($pl_num);
}
 
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<br>\n";
echo "Ressourcenauslastung der Mitarbeiter in PT</p>";
echo "<br>\n";
closeDB($db);
 
PrintRessource($pl_num);
}
 
require('footer.inc');
?>