Subversion Repositories public

Rev

Blame | Last modification | View Log | RSS feed

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

$drm = array(true, false, false, false, false, true, false, true);

$knopf = 0;
$func = $_REQUEST['func'];

# Auswertungsmenue
if (isset($_REQUEST['pjplan'])) { $knopf = 21; $headline = 27; }

require_once('menu.inc');
require_once('knumber.inc');

# Folgende Funktion erlaubt die Auswahl eines Projekts dessen Plan
# erzeugt werden soll.
#
function Preselect() {
        global $periode;
        global $unum;
        global $menu;
        global $rstufe;
        global $pmlight;
        global $dtformatshort;

        $db = OpenDB();
?>
<form name="preselect" action="printplan.php" method="post">
<input type="hidden" name="menu" value="<? echo "$menu"; ?>">
<input type="hidden" name="headline" value="27">
<input type="hidden" name="func" value="printplan">

<table class="input">
<?php
        # Auswahl eines Projekts
        echo "<tr><td>Projektauswahl:</td>\n";
        echo "<td>";

        $query = "select pl_num, pl_prnum, pl_lfd, pr_name, pl_status from ";
        $query .= "plan, project where pr_num = pl_prnum and pr_status = 0 ";
        $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];
           $pl_status = $data[4];

           switch ($pl_status) {
              case 1: $stat = "In Erstellung"; break;
              case 2: $stat = "Freigegeben"; break;
              case 3: $stat = ""; break;
              case 4: $stat = "Aktiv"; break;
              case 5: $stat = "Inaktiv"; break;
              case 6: $stat = "Abgeschlossen"; break;
           }

           echo "<option value=\"$pl_num\">$pl_lfd ($stat): $pl_prnum $pr_name</option>\n";
           $rows++;
        }

        echo "</select>";
        echo "</td></tr>\n";
        echo "<tr><td>IST-Werte ber&uuml;cksichtigen bis:</td>\n";
        $sd = GetVisualDate($dtformatshort, true);

        if (!$pmlight) {
           $dat = time();
           $day = gmdate("j", $dat);
           $mon = gmdate("n", $dat);
           $year = gmdate("Y", $dat);
           $dm = daysinmonth($mon, $year);

           if ($day < ($dm / 2)) {
              $mon--;

              if ($mon < 1) {
                 $year--;
                 $mon = 12;
              }
           }

           $vd = GetShortDate(gmmktime(0, 0, 0, $mon, daysinmonth($mon, $year), $year));
        } else
           $vd = "";

        echo "<td><input type=\"text\" name=\"datum\" value=\"$vd\" size=7 maxlength=7> $sd</td></tr>\n";
        echo "</table>\n";
        echo "<table class=\"indent\"><tr><td>";
        ButtonSubmit("Senden", "preselect");
        echo "</td></tr></table>\n";
        echo "</form>\n";
        closeDB($db);
}

function GetWD_HOURS($db, $dt, $ressource, $hash) {
        global $leneinheit;

        $mon = gmdate("n", $dt);
        $year = gmdate("Y", $dt);
        $dta = gmmktime(0, 0, 0, $mon, 1, $year);
        $dte = gmmktime(0, 0, 0, $mon, daysinmonth($mon, $year), $year);
        $query = "select sum(wd_hours)/$leneinheit from wdone where ";
        $query .= "wd_minum = $ressource and ";
        $query .= "wd_datum between $dta and $dte and ";
        $query .= "wd_task in (select ta_num from task, allocation where ";
        $query .= "al_task = ta_num and ta_hash = '$hash' and ";
        $query .= "al_ressource = $ressource)";

        if (!($reswd = QueryDB($db, $query)))
           return 0;

        if (numrowsDB($reswd)> 0) {
           $data = fetchDB($reswd, 0);
           $wd_hours = $data[0];
        } else
           $wd_hours = 0;

        return $wd_hours;
}

function PrintMa($db, $dstart, $dend, $al_task, $color, $pl_num, $ressource) {
        global $periode;
        global $einheit;
        global $leneinheit;
        global $menu;
        global $role;
        global $pmlight;

        $nav = "pl_num=$pl_num&al_task=$al_task&menu=$menu&headline=20";
        $dt = $_REQUEST['datum'];

        if (isset($dt) && strlen($dt) > 0) {
           $darr = explode(".", $dt);
           $datum = gmmktime(0, 0, 0, $darr[0], daysinmonth($darr[0], $darr[1]), $darr[1]);
        } else
           $datum = 0;

        $query = "select am_num, am_task, am_ressource, am_hours, am_pstart,";
        $query .= "am_pduration, am_role, am_krnum, am_nname, am_vname, am_phase ";
        $query .= "from allocmi where am_task = $al_task order by ";
        $query .= "am_nname, am_vname, am_pstart";
        $erg = QueryDB($db, $query);

        if (!$erg)
           return 0;

        $erganz = numrowsDB($erg);
        $ergrow = 0;
        $oressource = 0;
        $dt = 0;
        $sum = 0;
        $sumi = 0;
        $sumip = 0;
        $total = 0;

        while ($ergrow < $erganz) {
           $data = fetchDB($erg, $ergrow);
           $am_num = $data[0];
           $am_task = $data[1];
           $am_ressource = $data[2];
           $am_hours = $data[3];
           $am_pstart = $data[4];
           $am_pduration = $data[5];
           $am_role = $data[6];
           $am_krnum = $data[7];
           $am_nname = $data[8];
           $am_vname = $data[9];
           $am_phase = $data[10];

           if ($oressource != $am_ressource) {
              if ($oressource != 0) {
                 $ed = GetEDate($einheit, $ta_start, $ta_duration);

                 if ($dt < $ed) {
                    while (PerDateComp($dt, $ed) >= 0) {
                       if ($datum > 0 && $dt <= $datum) {
                          $wd_hours = GetWD_HOURS($db, $dt, $oressource, $ta_hash);
                          $sumip += $wd_hours;

                          if ($wd_hours > 0)
                             printf("<td style=\"background-color: #$color; border: 1px solid black;\">I:&nbsp;%s</td>\n",
                                FormatNum($wd_hours, 3));
                          else
                             echo "<td style=\"background-color: #$color; border: 1px solid black;\">&nbsp;</td>\n";
                       } else
                          echo "<td style=\"background-color: #$color; border: 1px solid black;\">&nbsp;</td>\n";

                       $dt = IncDate($periode, $dt);
                    }
                 }

                 while (PerDateComp($dt, $dend) >= 0) {
                    if ($datum > 0 && $dt <= $datum) {
                       if (($wd_hours = GetWD_HOURS($db, $dt, $oressource, $ta_hash)) > 0) {
                          printf("<td class=\"selnum\">I:&nbsp;%s</td>\n", FormatNum($wd_hours, 3));
                          $sumip += $wd_hours;
                       } else
                          echo "<td class=\"sel\">&nbsp;</td>";
                    } else
                       echo "<td class=\"sel\">&nbsp;</td>";

                    $dt = IncDate($periode, $dt);
                 }

                 echo "<td class=\"selnum\"";

                 if ($datum > 0)
                    printf("<b>%s</b></td>", FormatNum($sumip, 3));
                 else
                    printf("><b>%s</b></td>", FormatNum($sum, 3));

                 $total += $sumip;
                 $sum = 0;
                 $sumi = 0;
                 $sumip = 0;
                 echo "</tr>\n";
              }

              # Starrer Zeilenbegin ...
              echo "<tr>\n";
              # Nummerierung
              echo "<td class=\"sel\">&nbsp;</td>\n";
              # Ressource
              echo "<td class=\"sel\" colspan=2 width=\"20%\"> </td>\n";
              echo "<td class=\"sel\"><i>$am_nname $am_vname</i></td>\n";
              # Tasklaenge mit Einheit
              echo "<td class=\"sel\" colspan=3>&nbsp</td>\n";
              # Mitarbeiterrolle
              if ($role)
                 echo "<td class=\"sel\">$am_role</td>\n";

              # Zellen bis zum Taskanfang schreiben
              $query = "select ta_start, ta_duration, ta_hash from task where ta_num = $am_task";

              if (!($res = QueryDB($db, $query))) {
                 Error("Keinen dazupassenden Task gefunden!");
                 return 0;
              }

              $data = fetchDB($res, 0);
              $ta_start = $data[0];
              $ta_duration = $data[1];
              $ta_hash = $data[2];
              $dt = $dstart;

              while (PerDateComp($dt, $ta_start) > 0) {
                 if ($datum > 0 && $dt <= $datum) {
                    if (($wd_hours = GetWD_HOURS($db, $dt, $am_ressource, $ta_hash)) > 0) {
                       printf("<td class=\"selnum\">I:&nbsp;%s</td>\n", FormatNum($wd_hours, 3));
                       $sumip += $wd_hours;
                    } else
                       echo "<td class=\"sel\">&nbsp;</td>\n";
                 } else
                    echo "<td class=\"sel\">&nbsp;</td>";

                 $dt = IncDate($periode, $dt);
              }

              $oressource = $am_ressource;
           }

           # Rest der Zeile schreiben
           $PerStart = GetPeriode($am_pstart);
           $pyear = gmdate("Y", $am_pstart);
           $PerAkt = GetPeriode($dt);
           $tyear = gmdate("Y", $dt);

           # Wurde ein gueltiges Datum angegeben, dann blenden wir
           # die IST-Daten zum Task ein.
           if ($datum > 0 && $dt <= $datum) {
              $wd_hours = GetWD_HOURS($db, $dt, $am_ressource, $ta_hash);
              $sumi += $wd_hours;
           }

           if ($PerStart == $PerAkt && $pyear == $tyear) {
              echo "<td style=\"background-color: #$color; text-align: right; border: 1px solid black;\">";

              if ($datum > 0 && $dt <= $datum)
                 printf("I:&nbsp;%s</td>\n", FormatNum($wd_hours, 3));
              else if ($datum > 0)
                 printf("P:&nbsp;%s</td>\n", FormatNum($am_hours, 3));
              else
                 printf("%s</td>\n", FormatNum($am_hours, 3));

              $sum += $am_hours;

              if ($datum > 0 && $dt > $datum)
                 $sumip += $am_hours;
              else if ($datum > 0 && $dt <= $datum)
                 $sumip += $wd_hours;

              $ergrow++;
           } else if ($datum > 0 && $wd_hours > 0 && $dt <= $datum) {
              printf("<td style=\"background-color: #$color; text-align: right; border: 1px solid black;\">I:&nbsp;%s</td>\n",
                FormatNum($wd_hours, 3));
              $sumip += $wd_hours;
           } else
              echo "<td style=\"background-color: #$color; border: 1px solid black;\">&nbsp;</td>\n";

           $dt = IncDate($periode, $dt);
        }

        if ($erganz > 0) {
           $ed = GetEDate($einheit, $ta_start, $ta_duration);

           if ($dt < $ed) {
              while (PerDateComp($dt, $ed) >= 0) {
                 if ($datum > 0 && $dt <= $datum) {
                    $wd_hours = GetWD_HOURS($db, $dt, $am_ressource, $ta_hash);
                    $sumip += $wd_hours;

                    if ($wd_hours > 0)
                       printf ("<td style=\"background-color: #$color; border: 1px solid black;\">I:&nbsp;%s</td>\n",
                        FormatNum($wd_hours, 3));
                    else
                       echo "<td style=\"background-color: #$color; border: 1px solid black;\">&nbsp;</td>\n";
                 } else
                    echo "<td style=\"background-color: #$color; border: 1px solid black;\">&nbsp;</td>\n";

                 $dt = IncDate($periode, $dt);
              }
           }

           while (PerDateComp($dt, $dend) >= 0) {
              if ($datum > 0 && $dt <= $datum) {
                 $wd_hours = GetWD_HOURS($db, $dt, $am_ressource, $ta_hash);
                 $sumip += $wd_hours;

                 if ($wd_hours > 0)
                    printf ("<td class=\"selnum\">I:&nbsp;%s</td>\n",
                        FormatNum($wd_hours, 3));
                 else
                    echo "<td class=\"sel\">&nbsp;</td>\n";
              } else
                 echo "<td class=\"sel\">&nbsp;</td>";

              $dt = IncDate($periode, $dt);
           }

           echo "<td class=\"selnum\">";

           if ($datum > 0)
              printf("<b>%s</b></td>", FormatNum($sumip, 3));
           else
              printf("<b>%s</b></td>", FormatNum($sum, 3));

           $total += $sumip;
           echo "</tr>\n";
        }

        return $total;
}

# Folgende Funktion zeichnet einen Plan in einer Form, welche gedruckt
# werden kann.
# Es wird immer der Zeitraum vom Start des Projekts bis zu seinem Ende
# dargestellt. Bei sehr langen Projekten oder sehr kleinen Perioden, kann
# die Tabelle durchaus sehr breit werden.
#
function PrintPlan($pl_num) {
        global $rstufe;
        global $unum;
        global $periode;
        global $verteil;
        global $einheit;
        global $menu;
        global $dtformatshort;
        global $role;
        global $leneinheit;

        if ($pl_num <= 0) {
           Error("Interner Fehler: Es wurde keine Plannummer an \"PrintPlan\" &uuml;bergeben!");
           return;
        }

        if ($rstufe == 0 || $rstufe == 5 || $rstufe == 7) {
           Error("Berechtigungsfehler!");
           return;
        }

        $dt = $_REQUEST['datum'];

        if (isset($dt) && strlen($dt) > 0) {
           $darr = explode(".", $dt);
           $datum = gmmktime(0, 0, 0, $darr[0], daysinmonth($darr[0], $darr[1]), $darr[1]);
        } else
           $datum = 0;

        $db = OpenDB();
        $query = "select pr_name, pl_prnum, mi_nname, mi_vname from ";
        $query .= "plan, project, mitarbeiter where pl_num = $pl_num and ";
        $query .= "pr_num = pl_prnum and mi_num = pr_pl";
        $result = QueryDB($db, $query);

        if (!$result) {
           closeDB($db);
           return;
        }

        $data = fetchDB($result, 0);
        $pr_name = $data[0];
        $pl_prnum = $data[1];
        $mi_nname = $data[2];
        $mi_vname = $data[3];
        echo "<table class=\"sel\"><tr><td class=\"selakt\"><table border=0>";
        echo "<tr><td>Projekt:</td><td>$pl_prnum $pr_name</td></tr>\n";
        echo "<tr><td>Projektleiter:</td><td>$mi_nname $mi_vname</td></tr>\n";
        # Anzeigen, bis zu welchem Datum IST-Buchungen beruecksichtigt
        # werden.
        if ($datum > 0) {
           echo "<tr><td>IST&minus;Buchungen ber&uuml;cksichtigt bis:</td>";
           echo "<td>" . GetShortDate($datum) . "</td></tr>\n";
        }
        
        echo "</table></tr></td></table>\n";
        # Zeichnen der fixen Kopfspalten.
        $nav = "pl_num=$pl_num&menu=$menu&headline=27";
?>
<table class="sel">
   <tr>
      <th class="sel" rowspan=2>Num.</th>
      <th class="sel" colspan=3 rowspan=2>
         <table border=0 width="100%"><tr><td align="center" colspan=2>Taskname</td></tr>
            <tr><td>&nbsp;</td><td align="right">Ressource</td></tr>
         </table>
      </th>
      <th class="sel" rowspan=2 colspan=3>
         <table border=0 width="100%"><tr><td align="center" colspan=3>Arbeit</td></tr>
            <td align="center">Dauer</td>
            <td align="center">Start</td>
            <td align="center">Ende</td></tr>
         </table>
      </th>
<?php
        if ($role)
           echo "      <th class=\"sel\" rowspan=2>Rolle</th>\n";

        # Ermitteln des Projektstarts um den Tabellenkopf fertig zu schreiben.
        $query = "select ta_start, ta_duration, ta_meeting from task where ";
        $query .= "ta_plnum = $pl_num order by ta_start";
        $result = QueryDB($db, $query);

        if (!$result) {
           closeDB($db);
           return;
        }

        $numrows = numrowsDB($result);
        $row = 0;
        $fdate = 0;
        $ldate = 0;

        while ($row < $numrows) {
           $data = fetchDB($result, $row);
           $ta_start = $data[0];
           $ta_duration = $data[1];
           $ta_meeting = $data[2];

           if ($row == 0)
              $fdate = $ta_start;

           if ($ta_meeting)
              $ed = $ta_start;
           else
              $ed = GetEDate($einheit, $ta_start, $ta_duration);

           if ($ed > $ldate)
              $ldate = $ed;

           $row++;
        }

        # Erstellen des restlichen Tabellenkopfs ...
        $tm = gmdate("j.n.Y", $fdate);
        $dt = explode(".", $tm);
        $smon = $dt[1];
        $syear = $dt[2];
        $dt = $fdate;
        $cols = 0;
        $tbcols = 1;
        $oyear = $syear;

        while (PerDateComp($dt, $ldate) > 0) {
           $syear = gmdate("Y", $dt);

           if ($oyear != $syear) {
              if ($cols <= 1)
                 echo "<th class=\"sel\">$oyear</th>\n";
              else
                 echo "<th class=\"sel\" colspan=$cols>$oyear</th>\n";

              $oyear = $syear;
              $cols = 0;
           }

           $cols++;
           $tbcols++;
           $dt = IncDate($periode, $dt);
        }

        $cols++;

        if ($cols <= 1)
           echo "<th class=\"sel\">$syear</th>\n";
        else
           echo "<th class=\"sel\" colspan=$cols>$syear</th>\n";

        # Ueberschrift der letzten Spalte, welche die Summierungen der
        # geplanten Aufwaende enthaelt.
        echo "<th class=\"sel\" rowspan=2>Summe<br>Aufwand</th>\n";
        echo "</tr>\n";
        $dt = $fdate;

        while (PerDateComp($dt, $ldate) >= 0) {
           printf ("<th class=\"sel\">%s</th>\n", GetStrMonth($smon));
           $smon++;
           $dt = IncDate($periode, $dt);

           if ($smon > 12) {
              $syear++;
              $smon = 1;
           }
        }

        echo "</tr>\n";

        # Nun muessen wir die Tabelle mit Inhalten fuellen
        $query = "select ta_num, ta_id, ta_name, ta_meeting, ta_start,";
        $query .= "ta_duration, ta_level, ta_phase, ta_color, ta_plnum ";
        $query .= "from task where ta_plnum = $pl_num order by ta_id";
        $result = QueryDB($db, $query);

        if (!$result) {
           closeDB($db);
           return;
        }

        $numrows = numrowsDB($result);
        $row = 0;
        $snum = "1";
        $ma = false;
        $done = false;
        $total = 0;

        while ($row < $numrows) {
           if (!$ma) {
              $data = fetchDB($result, $row);
              $ta_num = $data[0];
              $ta_id = $data[1];
              $ta_name = $data[2];
              $ta_meeting = $data[3];
              $ta_start = $data[4];
              $ta_duration = $data[5];
              $ta_level = $data[6];
              $ta_phase = $data[7];
              $ta_color = $data[8];
              $ta_plnum = $data[9];

              # Der Task muss oben summiert sein, also in der Taskzeile
              # selbst. Wurde jedoch ein Datum angegeben, dann muessen wir
              # bis zum Datum die IST-Werte summieren und erst ab da die
              # Planwerte.
              if ($ta_level == 1) {
                 $query = "select ta_num, ta_level, ta_name from task where ";
                 $query .= "ta_plnum = $ta_plnum and ta_id > $ta_id and ";
                 $query .= "ta_meeting = 0 order by ta_id";

                 if (!($resta = QueryDB($db, $query))) {
                    closeDB($db);
                    return;
                 }

                 $men = numrowsDB($resta);
                 $i = 0;
                 $al_hours = 0;
                 $wd_hours = 0;

                 while ($i < $men) {
                    $data = fetchDB($resta, $i);
                    $xnum = $data[0];
                    $xlevel = $data[1];
                    $xname = $data[2];

                    if ($xlevel <= $ta_level)
                       break;

                    $query = "select sum(al_hours) from allocation where ";
                    $query .= "al_task = $xnum and al_pstart > $datum";

                    if (!($resal = QueryDB($db, $query))) {
                       closeDB($db);
                       return;
                    }

                    $data = fetchDB($resal, 0);
                    $al_hours += $data[0];
                    # Summieren der IST-Werte
                    $query = "select sum(wd_hours)/$leneinheit from wdone where ";
                    $query .= "wd_datum <= $datum and ";
                    $query .= "wd_task in (select ta_num from task, plan where ";
                    $query .= "pl_num = ta_plnum and ta_name = '$xname' and ";
                    $query .= "pl_prnum = $pl_prnum)";

                    if (!($reswd = QueryDB($db, $query)))
                       return 0;

                    $data = fetchDB($reswd, 0);
                    $wd_hours += $data[0];
                    $i++;
                 }
              } else {
                 $query = "select sum(al_hours) from allocation where ";
                 $query .= "al_task = $ta_num and al_pstart > $datum";

                 if (!($resal = QueryDB($db, $query))) {
                    closeDB($db);
                    return;
                 }

                 $data = fetchDB($resal, 0);
                 $al_hours = $data[0];
                 # Summieren der IST-Werte
                 $query = "select sum(wd_hours)/$leneinheit from wdone where ";
                 $query .= "wd_datum <= $datum and ";
                 $query .= "wd_task in (select ta_num from task, plan where ";
                 $query .= "pl_num = ta_plnum and ta_name = '$ta_name' and ";
                 $query .= "pl_prnum = $pl_prnum)";

                 if (!($reswd = QueryDB($db, $query)))
                    return 0;

                 $data = fetchDB($reswd, 0);
                 $wd_hours = $data[0];
              }
           }

           # Starrer Zeilenbegin ...
           echo "<tr>\n";
           if (!$ma)
              $snum = GetTaskNum($pl_num, $ta_id, $ta_level, $ta_phase, $ta_meeting, $snum, &$typ, $db);

           # Nummerierung
           if (!$ma) {
              if ($ta_meeting)
                 echo "<td class=\"nwb\">$snum</td>\n";
              else
                 echo "<td class=\"sel\">$snum</td>\n";
           } else {
              echo "<td class=\"sel\">&nbsp;</td>\n";
           }

           # Tasknamendarstellung abhaenging vom Level
           if (!$ma) {
              if ($ta_level == 1 || !$typ) {
                 if ($ta_meeting)
                    echo "<td class=\"nwb\" colspan=3>$ta_name</td>\n";
                 else
                    echo "<td class=\"nw\" colspan=3>$ta_name</td>\n";
              } else {
                 if ($ta_meeting)
                    echo "<td class=\"sel\" width=\"10%\"> </td><td class=\"nwb\" colspan=2>$ta_name</td>\n";
                 else
                    echo "<td class=\"sel\" width=\"10%\"> </td><td class=\"nw\" colspan=2>$ta_name</td>\n";
              }
           }

           # Anzeigen Spalte: Arbeit
           if (!$ta_meeting) {
              if ($typ) {
                 $sein = GetStrEinheit($einheit);
                 echo "<td class=\"nw\" align=\"right\">$ta_duration $sein</td>\n";
                 $dt = gmdate($dtformatshort, $ta_start);
                 $ed = GetEDate($einheit, $ta_start, $ta_duration);
                 $dte = gmdate($dtformatshort, $ed);
                 echo "<td class=\"selmid\">$dt</td>\n";
                 echo "<td class=\"selmid\">$dte</td>\n";
              } else {
                 echo "<td class=\"sel\" colspan=3>&nbsp;</td>\n";
              }
           } else {
              echo "<td class=\"nwb\" align=\"center\">M</td>\n";
              $dt = gmdate($dtformatshort, $ta_start);
              echo "<td class=\"selmid\" colspan=2>$dt</td>\n";
           }

           # Spalte "Mitarbeierrolle" nur bei Mitarbeitern!
           if ($role)
              echo "<td class=\"sel\">&nbsp;</td>\n";

           # Dynamischer Aufbau der restlichen Tabelle.
           $color = dechex($ta_color);
           $len = strlen($color);

           while ($len < 6) {
              $color = "0" . $color;
              $len++;
           }

           $dt = $fdate;

           # Die leeren Spalten vor Beginn eines Tasks zeichnen.
           while (PerDateComp($dt, $ta_start) > 0) {
              $dt = IncDate($periode, $dt);
              echo "<td class=\"sel\">&nbsp;</td>";
           }

           if ($ta_meeting)
              $edate = $ta_start;
           else
              $edate = GetEDate($einheit, $ta_start, $ta_duration);

           # Den Zeitraum eines Tasks "grafisch" darstellen und den Aufwand
           # pro Periode anzeigen.
           do {
              if ($typ)
                 echo "<td style=\"background-color: #$color; border: 1px solid black;\">&nbsp;</td>\n";
              else if ($ta_meeting)
                 echo "<td style=\"color: #$color;background-color: #969696; border: 1px solid black;\"><center>###</center></td>\n";
              else
                 echo "<td style=\"color: #$color;background-color: #dddddd; border: 1px solid black;\"><center>===</center></td>\n";

              $dt = IncDate($periode, $dt);
           }
           while (PerDateComp($dt, $edate) >= 0);

           # Die leeren Spalten nach dem Ende eines Tasks zeichnen.
           while (PerDateComp($dt, $ldate) >= 0) {
              $dt = IncDate($periode, $dt);
              echo "<td class=\"sel\">&nbsp;</td>";
           }

           # Ausfuellen der Summenspalte
           if (($typ && !$ma) || $ta_level == 1) {
              echo "<td class=\"two\" align=\"right\">";
              printf ("<b><u>%s</u></b></td>\n", FormatNum($al_hours+$wd_hours, 3));
           } else
              echo "<td class=\"sel\">&nbsp;</td>\n";

           if ($typ && !$ma) {
              if ($ta_num == $tanum)
                 $sum = PrintMa($db, $fdate, $ldate, $ta_num, $color, $pl_num, $ressource);
              else
                 $sum = PrintMa($db, $fdate, $ldate, $ta_num, $color, $pl_num, 0);

              $total += $sum;
           }

           echo "</tr>\n";

           if ($ma) {
              $ma = false;
              $done = true;
           }

           if (!$done && $ta_num == $id)
              $ma = true;

           if (!$ma)
              $row++;
        }

        # Anfuegen der Summierungen
        if ($datum == 0 && $total > 0) {
           if ($role)
              $span = 8 + $tbcols;
           else
              $span = 7 + $tbcols;

           if (($typ && !$ma) || $ta_level == 1) {
              echo "<tr><td class=\"sel\" colspan=$span>&nbsp;</td>";
              echo "<td class=\"two\" align=\"right\">";
              printf("<b><u>%s</u></b></td></tr>\n", FormatNum($al_hours+$wd_hours, 3));
           }

           echo "<tr><td class=\"selnum\" colspan=$span>Gesamtsumme:</td>";
           printf("<td class=\"selgray\" align=\"right\"><b><u>%s</u></b></td></tr>\n", FormatNum($total, 3));
        }

        echo "</table>\n";
        closeDB($db);
}

# Auswertung des Menues:
#
if ($knopf == 21)               // Statusbericht
   Preselect();

# Auswertung der Funktionen
if ($func == "printplan") {
   $pl_num = $_REQUEST['pl_num'];
   $datum = $_REQUEST['datum'];
   echo "<table class=\"indent\"><tr><td>\n";
   ButtonPrint("Drucken", "printplan.php", "pl_num=$pl_num&datum=$datum&header=2&func=PlanPrint");
   echo "</td></tr></table>\n";
   PrintPlan($pl_num);
}

if ($func == "PlanPrint") {
   $pl_num = $_REQUEST['pl_num'];

   PrintPlan($pl_num);
}

require('footer.inc');

?>