Subversion Repositories public

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 andreas 1
<?
2
require_once('version.inc');
3
require_once('dbaccess.inc');
4
require_once('language.inc');
5
require_once('header.inc');
6
require_once('helper.inc');
7
require_once('crypt.inc');
8
require_once('settings.inc');
9
 
10
$knopf = 0;
11
$func = $_REQUEST['func'];
12
 
13
# Auswertungsmenue
14
if (isset($_REQUEST['statusb'])) { $knopf = 24; $headline = 26; }
15
 
16
$drm = array(true, false, false, false, false, true, false);
17
 
18
require_once('menu.inc');
19
require_once('knumber.inc');
20
 
21
# Folgende Funktion erlaubt die Auswahl einer Periode fuer die der Statusbericht
22
# erzeugt werden soll.
23
#
24
function Preselect() {
25
	global $periode;
26
	global $unum;
27
	global $menu;
28
	global $rstufe;
29
 
30
	$db = OpenDB();
31
	$query = "select wd_datum from wdone order by wd_datum";
32
	$result = QueryDB($db, $query);
33
 
34
	if (!$result) {
35
	   closeDB($db);
36
	   return;
37
	}
38
 
39
	$numrows = numrowsDB($result);
40
 
41
	if ($numrows <= 0) {
42
	   Error("Es gibt keine IST-Erfassungen!");
43
	   closeDB($db);
44
	   return;
45
	}
46
 
47
	$rows = 0;
48
 
49
	while ($rows < $numrows) {
50
	   $data = fetchDB($result, $rows);
51
	   $wd_datum = $data[0];
52
 
53
	   if ($rows == 0)
54
	      $fdate = $wd_datum;
55
 
56
	   $rows++;
57
	}
58
 
59
	$ldate = $wd_datum;
60
 
61
	switch($periode) {
62
	   case 1:		// Jahr
63
	      $sper = GetPeriode($fdate);
64
	      $eper = GetPeriode($ldate);
65
	   break;
66
 
67
	   case 2:		// Quartal
68
	      $sper = 1;
69
	      $eper = 4;
70
	   break;
71
 
72
	   case 3:		// Monat
73
	      $sper = 1;
74
	      $eper = 12;
75
	   break;
76
 
77
	   case 4:		// Woche
78
	      $sper = 1;
79
	      $eper = 52;
80
	   break;
81
 
82
	   case 5:		// Tag
83
	      $sper = 1;
84
	      $eper = ($ldate - $fdate) / 86400;
85
	   break;
86
	}
87
 
88
	$fyear = gmdate("Y", $fdate);
89
	$eyear = gmdate("Y", $ldate);
90
?>
91
<form action="statusbericht.php" method="post">
92
<input type="hidden" name="menu" value="<? echo "$menu"; ?>">
93
<input type="hidden" name="headline" value="26">
94
<input type="hidden" name="func" value="statusb">
95
 
96
<table border=0>
97
   <tr>
98
      <td>Periode:</td>
99
      <td><select name="per">
100
<?php
101
	$mon = gmdate("n", time());
102
 
103
	for ($i = $sper; $i <= $eper; $i++) {
104
	   if ($i == $mon)
105
	      echo "            <option selected value=\"$i\">$i</option>\n";
106
	   else
107
	      echo "            <option value=\"$i\">$i</option>\n";
108
	}
109
?>
110
         </select>
111
      </td>
112
   </tr>
113
<?php
114
	if ($periode != 1) {
115
?>
116
   <tr>
117
      <td>Jahr:</td>
118
      <td><select name="year">
119
<?php
120
	   $y = gmdate("Y", time());
121
 
122
	   for ($i = $fyear; $i <= $eyear; $i++) {
123
	      if ($i == $y)
124
	         echo "<option selected value=\"$i\">$i</option>\n";
125
	      else
126
	         echo "<option value=\"$i\">$i</option>\n";
127
	   }
128
?>
129
          </select>
130
      </td>
131
   </tr>
132
<?php
133
	}
134
 
135
	# Auswahl eines Projekts
136
	echo "<tr><td>Projektauswahl:</td>\n";
137
	echo "<td>";
138
 
139
	if ($rstufe == 2) {		// Projektleiter
140
	   $query = "select distinct pr_num, pr_name, ks_status from ";
141
	   $query .= "project, plan, task, allocation, key_status ";
142
	   $query .= "where pl_prnum = pr_num and ta_plnum = pl_num and ";
143
	   $query .= "al_task = ta_num and ks_num = pr_status ";
144
	   $query .= "and (pr_pl = $unum or al_ressource = $unum) ";
145
	   $query .= "order by pr_num";
146
	} else if ($rstufe == 3) {	// Mitarbeiter
147
	   $query = "select distinct wd_prnum, pr_name, ks_status from ";
148
	   $query .= "wdone, project, key_status where ";
149
	   $query .= "pr_num = wd_prnum and ks_num = pr_status and ";
150
	   $query .= "wd_minum = $unum ";
151
	   $query .= "order by wd_prnum";
152
	} else {
153
	   $query = "select pr_num, pr_name, ks_status from ";
154
	   $query .= "project, key_status where ks_num = pr_status ";
155
	   $query .= "order by pr_num";
156
	}
157
 
158
	$result = QueryDB($db, $query);
159
 
160
	if (!$result) {
161
	   closeDB($db);
162
	   return;
163
	}
164
 
165
	echo "<select name=\"selpro\">\n";
166
	$numrows = numrowsDB($result);
167
	$rows = 0;
168
 
169
	while ($rows < $numrows) {
170
	   $data = fetchDB($result, $rows);
171
	   $pr_num = $data[0];
172
	   $pr_name = $data[1];
173
	   $ks_status = $data[2];
174
	   echo "<option value=\"$pr_num\">$pr_num $pr_name ($ks_status)</option>\n";
175
	   $rows++;
176
	}
177
 
178
	echo "</select></td></tr></table>\n";
179
	echo "</td></tr>\n";
180
	echo "</table>\n";
181
	echo "<br><input type=\"submit\" name=\"submit\" value=\"Senden\"> <input type=\"reset\">\n";
182
	echo "</form>\n";
183
	closeDB($db);
184
}
185
 
186
function ShowISTStatus($print=false) {
187
	global $leneinheit;
188
	$per = $_REQUEST['per'];
189
	$year = $_REQUEST['year'];
190
	$selpro = $_REQUEST['selpro'];
191
 
192
	$db = OpenDB();
193
	# Tabelle IST-Aufwaende
194
?>
195
<table width="80%" border=1>
196
   <tr>
197
      <td rowspan=2 class="stbb">Phase</td>
198
<?php
199
	# ermitteln der Laenderspalten
200
	$query = "select distinct kl_land, mi_land from wdone, mitarbeiter, key_land ";
201
	$query .= "where wd_prnum = $selpro and mi_num = wd_minum and kl_num = mi_land order by mi_land";
202
	$result = QueryDB($db, $query);
203
 
204
	if (!$result) {
205
	   closeDB($db);
206
	   return;
207
	}
208
 
209
	$numrows = numrowsDB($result);
210
	$rows = 0;
211
	echo "<td class=\"stbb\" colspan=$numrows>IST-Aufw&auml;nde</td>\n";
212
	echo "<td class=\"stbb\" rowspan=2>Summe</td></tr>\n<tr>";
213
 
214
	while ($rows < $numrows) {
215
	   $data = fetchDB($result, $rows);
216
	   $kl_land = $data[0];
217
	   $mi_land = $data[1];
218
	   echo "<td class=\"stb\">$kl_land</td>";
219
	   $land[$mi_land] = 0;
220
	   $zwland[$mi_land] = 0;
221
	   $lpos[$rows] = $mi_land;
222
	   $rows++;
223
	}
224
 
225
	echo "</tr>\n";
226
	$cols = $numrows;
227
 
228
	$days = daysinmonth($per, $year);
229
	$maxdate = gmmktime(0, 0, 0, $per, $days, $year);
230
	$query = "select wd_hours, wd_phase, ";
231
	$query .= "mi_land from wdone, mitarbeiter where wd_prnum = $selpro ";
232
	$query .= "and mi_num = wd_minum and wd_datum <= $maxdate ";
233
	$query .= "order by wd_phase, mi_land";
234
	$result = QueryDB($db, $query);
235
 
236
	if (!$result) {
237
	   closeDB($db);
238
	   return;
239
	}
240
 
241
	$numrows = numrowsDB($result);
242
	$rows = 0;
243
 
244
	if ($numrows <= 0) {
245
	   Error("F&uuml;r das Projekt $selpro existieren keine IST-Daten!<br>");
246
	   closeDB($db);
247
	   return;
248
	}
249
 
250
	$old_phase = -1;
251
	$sum = 0;
252
	$total = 0;
253
 
254
	while ($rows < $numrows) {
255
	   $data = fetchDB($result, $rows);
256
	   $wd_hours = $data[0];
257
	   $wd_phase = $data[1];
258
	   $mi_land = $data[2];
259
 
260
	   if ($old_phase != $wd_phase) {
261
	      if ($rows > 0) {
262
	         for ($i = 0; $i < $cols; $i++) {
263
		    $x = $lpos[$i];
264
		    printf("<td class=\"stbez\">%s</td>", FormatNum($zwland[$x] / $leneinheit, 3));
265
		    $zwland[$x] = 0;
266
		 }
267
 
268
	         printf("<td class=\"stb\">%s</td></tr>\n", FormatNum($sum / $leneinheit, 3));
269
	      }
270
 
271
	      echo "<tr><td class=\"stb\">$wd_phase</td>";
272
	      $old_phase = $wd_phase;
273
	      $sum = 0;
274
	   }
275
 
276
	   $land[$mi_land] += $wd_hours;
277
	   $zwland[$mi_land] += $wd_hours;
278
	   $sum += $wd_hours;
279
	   $total += $wd_hours;
280
	   $rows++;
281
	}
282
 
283
	for ($i = 0; $i < $cols; $i++) {
284
	   $x = $lpos[$i];
285
	   printf("<td class=\"stbez\">%s</td>", FormatNum($zwland[$x] / $leneinheit, 3));
286
	}
287
 
288
	printf("<td class=\"stb\">%s</td></tr>\n", FormatNum($sum / $leneinheit, 3));
289
	echo "<td class=\"stbb\">Summe</td>";
290
 
291
	for ($i = 0; $i < $cols; $i++) {
292
	   $x = $lpos[$i];
293
	   printf("<td class=\"stb\">%s</td>", FormatNum($land[$x] / $leneinheit, 3));
294
	}
295
 
296
	printf("<td class=\"stbb\">%s</td></tr>\n", FormatNum($total / $leneinheit, 3));
297
	echo "</table>\n";
298
	closeDB($db);
299
}
300
 
301
function ShowRestStatus($print=false) {
302
	global $leneinheit;
303
	$per = $_REQUEST['per'];
304
	$year = $_REQUEST['year'];
305
	$selpro = $_REQUEST['selpro'];
306
 
307
	$db = OpenDB();
308
	# Tabelle REST-Aufwaende
309
?>
310
<br>
311
<table width="80%" border=1>
312
   <tr>
313
      <td rowspan=3 class="stbb">Phase</td>
314
<?php
315
	# ermitteln des gueltigen Plans
316
	$query = "select pl_lfd from plan where pl_prnum = $selpro and ";
317
	$query .= "pl_status in (2,3,4) order by pl_lfd desc";
318
	$result = QueryDB($db, $query);
319
 
320
	if (!$result) {
321
	   closeDB($db);
322
	   return;
323
	}
324
 
325
	$numrows = numrowsDB($result);
326
 
327
	if ($numrows <= 0) {
328
	   echo "</table>\n";
329
	   Error("Es existiert kein gueltiger Plan f&uuml;r diese Auswertung!");
330
	   closeDB($db);
331
	   return;
332
	}
333
 
334
	$data = fetchDB($result, 0);
335
	$pl_lfd = $data[0];
336
 
337
	# ermitteln der Laenderspalten
338
	$query = "select distinct kl_land, mi_land from allocation, task, ";
339
	$query .= "plan, mitarbeiter, key_land where ";
340
	$query .= "ta_num = al_task and mi_num = al_ressource and ";
341
	$query .= "pl_num = ta_plnum and pl_prnum = $selpro and ";
342
	$query .= "pl_lfd = $pl_lfd and kl_num = mi_land order by mi_land";
343
	$result = QueryDB($db, $query);
344
 
345
	if (!$result) {
346
	   closeDB($db);
347
	   return;
348
	}
349
 
350
	$numrows = numrowsDB($result);
351
	$cols = $numrows * 2;
352
	$rows = 0;
353
	echo "<td class=\"stbb\" colspan=$cols>REST-Aufw&auml;nde</td>\n";
354
	echo "<td class=\"stbb\" rowspan=2 colspan=2>Summe</td></tr>\n<tr>";
355
 
356
	while ($rows < $numrows) {
357
	   $data = fetchDB($result, $rows);
358
	   $kl_land = $data[0];
359
	   $mi_land = $data[1];
360
	   echo "<td class=\"stb\" colspan=2>$kl_land</td>";
361
	   $land[$mi_land] = 0;
362
	   $landr[$mi_land] = 0;
363
	   $zwland[$mi_land] = 0;
364
	   $lpos[$rows] = $mi_land;
365
	   $rows++;
366
	}
367
 
368
	echo "</tr><tr>\n";
369
 
370
	for ($i = 0; $i < ($cols / 2); $i++)
371
	   echo "<td class=\"stb\">lf.Jahr</td><td class=\"stb\">ff.Jahr</td>\n";
372
 
373
	echo "<td class=\"stbb\">lf.Jahr</td><td class=\"stbb\">ff.Jahr</td></tr>\n";
374
	$days = daysinmonth($per, $year);
375
	$maxdate = gmmktime(0, 0, 0, $per, $days, $year);
376
	$mindate = gmmktime(0, 0, 0, 1, 1, $year);
377
	$enddate = gmmktime(0, 0, 0, 12, 31, $year);
378
	$query = "select al_hours, al_phase, mi_land from allocation, task, ";
379
	$query .= "plan, mitarbeiter, key_land where ";
380
	$query .= "ta_num = al_task and mi_num = al_ressource and ";
381
	$query .= "pl_num = ta_plnum and pl_prnum = $selpro and ";
382
	$query .= "pl_lfd = $pl_lfd and kl_num = mi_land and ";
383
	$query .= "al_pstart >= $mindate ";
384
	$query .= "order by al_phase, mi_land, al_pstart";
385
 
386
	$result = QueryDB($db, $query);
387
 
388
	if (!$result) {
389
	   closeDB($db);
390
	   return;
391
	}
392
 
393
	$numrows = numrowsDB($result);
394
	$rows = 0;
395
 
396
	if ($numrows <= 0) {
397
	   Error("F&uuml;r das Projekt $selpro existieren keine geplanten Aufw&auml;nde im Jahr $year!<br>");
398
	   closeDB($db);
399
	   return;
400
	}
401
 
402
	$db2 = OpenDB();
403
	$old_phase = -1;
404
	$sum = 0;
405
	$sumr = 0;
406
	$total = 0;
407
	$totalr = 0;
408
 
409
	while ($rows < $numrows) {
410
	   $data = fetchDB($result, $rows);
411
	   $al_hours = $data[0];
412
	   $al_phase = $data[1];
413
	   $mi_land = $data[2];
414
 
415
	   if (!isset($al_phase))
416
	      $al_phase = 0;
417
 
418
	   if ($old_phase != $al_phase) {
419
	      if ($rows > 0) {
420
		 $sum = 0;
421
		 $sumr = 0;
422
 
423
	         for ($i = 0; $i < ($cols / 2); $i++) {
424
		    $x = $lpos[$i];
425
		    $query = "select sum(wd_hours), count(*) from wdone, mitarbeiter ";
426
		    $query .= "where wd_prnum = $selpro and mi_num = wd_minum";
427
		    $query .= " and wd_datum >= $mindate and ";
428
		    $query .= "wd_datum <= $maxdate and ";
429
		    $query .= "mi_land = $x and wd_phase = $old_phase";
430
		    $result2 = QueryDB($db2, $query);
431
 
432
		    if (!$result2) {
433
		       closeDB($db2);
434
		       closeDB($db);
435
		       return;
436
		    }
437
 
438
		    if (numrowsDB($result2) > 0) {
439
		       $data = fetchDB($result2, 0);
440
		       $wd_hours = $data[0];
441
		       $menge = $data[1];
442
 
443
		       if ($menge == 0)
444
		          $wd_hours = 0;
445
		    }
446
		    else
447
		       $wd_hours = 0;
448
 
449
		    #
450
		    # Ermitteln der geplanten Zeiten fuer das folgende Jahr.
451
		    #
452
		    $query = "select sum(al_hours), count(*) from allocation, task, ";
453
		    $query .= "plan, mitarbeiter where mi_land = $x and ";
454
		    $query .= "ta_num = al_task and mi_num = al_ressource and ";
455
		    $query .= "pl_num = ta_plnum and pl_prnum = $selpro and ";
456
		    $query .= "pl_lfd = $pl_lfd and al_pstart > $enddate ";
457
		    $query .= "and al_phase = $old_phase";
458
		    $result2 = QueryDB($db2, $query);
459
 
460
		    if (!$result2) {
461
		       closeDB($db);
462
		       closeDB($db2);
463
		       return;
464
		    }
465
 
466
		    $r = numrowsDB($result2);
467
 
468
		    if ($r > 0) {
469
		       $data = fetchDB($result2, 0);
470
		       $resth = $data[0];
471
		       $menge = $data[1];
472
 
473
		       if ($menge == 0)
474
		          $resth = 0;
475
 
476
		       $zwland[$x] -= $resth;
477
		    }
478
		    else
479
		       $resth = 0;
480
 
481
		    $wert = ($zwland[$x] - ($wd_hours / $leneinheit));
482
		    printf("<td class=\"stbez\">%s</td><td class=\"stbez\">%s</td>",
483
		    	FormatNum($wert, 3), FormatNum($resth, 3));
484
		    $sum += $wert;
485
		    $sumr += $resth;
486
		    $total += $wert;
487
		    $totalr += $resth;
488
		    $land[$x] += $wert;
489
		    $landr[$x] += $resth;
490
		    $zwland[$x] = 0;
491
		 }
492
 
493
	         printf("<td class=\"stb\">%s</td><td class=\"stb\">%s</td></tr>\n",
494
	         	FormatNum($sum, 3), FormatNum($sumr, 3));
495
	      }
496
 
497
	      echo "<tr><td class=\"stb\">$al_phase</td>";
498
	      $old_phase = $al_phase;
499
	   }
500
 
501
	   $zwland[$mi_land] += $al_hours;
502
	   $rows++;
503
	}
504
 
505
	$sum = 0;
506
	$sumr = 0;
507
 
508
	for ($i = 0; $i < ($cols / 2); $i++) {
509
	   $x = $lpos[$i];
510
	   $query = "select sum(wd_hours), count(*) from wdone, mitarbeiter ";
511
	   $query .= "where wd_prnum = $selpro and mi_num = wd_minum";
512
	   $query .= " and wd_datum >= $mindate and ";
513
	   $query .= "wd_datum <= $maxdate and ";
514
	   $query .= "mi_land = $x and wd_phase = $old_phase";
515
 
516
	   if (!$result2) {
517
	      closeDB($db2);
518
	      closeDB($db);
519
	      return;
520
	   }
521
 
522
	   if (numrowsDB($result2) > 0) {
523
	      $data = fetchDB($result2, 0);
524
	      $wd_hours = $data[0];
525
	      $menge = $data[1];
526
 
527
	      if ($menge == 0)
528
	         $wd_hours = 0;
529
	   } else
530
	      $wd_hours = 0;
531
 
532
	   #
533
	   # Ermitteln der geplanten Zeiten fuer das folgende Jahr.
534
	   #
535
	   $query = "select sum(al_hours), count(*) from allocation, task, ";
536
	   $query .= "plan, mitarbeiter where mi_land = $x and ";
537
	   $query .= "ta_num = al_task and mi_num = al_ressource and ";
538
	   $query .= "pl_num = ta_plnum and pl_prnum = $selpro and ";
539
	   $query .= "pl_lfd = $pl_lfd and al_pstart > $enddate ";
540
	   $query .= "and al_phase = $old_phase";
541
	   $result2 = QueryDB($db2, $query);
542
 
543
	   if (!$result2) {
544
	      closeDB($db);
545
	      closeDB($db2);
546
	      return;
547
	   }
548
 
549
	   $r = numrowsDB($result2);
550
 
551
	   if ($r > 0) {
552
	      $data = fetchDB($result2, 0);
553
	      $resth = $data[0];
554
	      $menge = $data[1];
555
 
556
	      if ($menge == 0)
557
	         $resth = 0;
558
 
559
	      $zwland[$x] -= $resth;
560
	   }
561
	   else
562
	      $resth = 0;
563
 
564
	   $wert = ($zwland[$x] - ($wd_hours / $leneinheit));
565
	   printf("<td class=\"stbez\">%s</td><td class=\"stbez\">%s</td>",
566
	   	FormatNum($wert, 3), FormatNum($resth, 3));
567
	   $sum += $wert;
568
	   $sumr += $resth;
569
	   $total += $wert;
570
	   $totalr += $resth;
571
	   $land[$x] += $wert;
572
	   $landr[$x] += $resth;
573
	}
574
 
575
	printf("<td class=\"stb\">%s</td><td class=\"stb\">%s</td></tr>\n",
576
		FormatNum($sum, 3), FormatNum($sumr, 3));
577
	echo "<td class=\"stbb\">Summe</td>";
578
 
579
	for ($i = 0; $i < ($cols / 2); $i++) {
580
	   $x = $lpos[$i];
581
	   printf("<td class=\"stb\">%s</td><td class=\"stb\">%s</td>",
582
	   	FormatNum($land[$x], 3), FormatNum($landr[$x], 3));
583
	}
584
 
585
	printf("<td class=\"stbb\">%s</td><td class=\"stbb\">%s</td></tr>\n",
586
		FormatNum($total, 3), FormatNum($totalr, 3));
587
	$i = $cols + 1;
588
	printf("<tr><td colspan=$i> </td><td colspan=2 class=\"stbb\">%s</td></tr>\n",
589
		FormatNum($total + $totalr, 3));
590
	echo "</table>\n";
591
	closeDB($db);
592
}
593
 
594
function ShowGesamtStatus($print=false) {
595
	global $leneinheit;
596
	$per = $_REQUEST['per'];
597
	$year = $_REQUEST['year'];
598
	$selpro = $_REQUEST['selpro'];
599
 
600
	$db = OpenDB();
601
	# Tabelle REST-Aufwaende
602
?>
603
<br>
604
<table width="80%" border=1>
605
   <tr>
606
      <td rowspan=2 class="stbb">Phase</td>
607
<?php
608
	# ermitteln des gueltigen Plans
609
	$query = "select pl_lfd from plan where pl_prnum = $selpro and ";
610
	$query .= "pl_status in (2,3,4) order by pl_lfd desc";
611
	$result = QueryDB($db, $query);
612
 
613
	if (!$result) {
614
	   closeDB($db);
615
	   return;
616
	}
617
 
618
	$numrows = numrowsDB($result);
619
 
620
	if ($numrows <= 0) {
621
	   echo "</table>\n";
622
	   Error("Es existiert kein gueltiger Plan f&uuml;r diese Auswertung!");
623
	   closeDB($db);
624
	   return;
625
	}
626
 
627
	$data = fetchDB($result, 0);
628
	$pl_lfd = $data[0];
629
 
630
	# ermitteln der Laenderspalten
631
	$query = "select distinct kl_land, mi_land from allocation, task, ";
632
	$query .= "plan, mitarbeiter, key_land where ";
633
	$query .= "ta_num = al_task and mi_num = al_ressource and ";
634
	$query .= "pl_num = ta_plnum and pl_prnum = $selpro and ";
635
	$query .= "pl_lfd = $pl_lfd and kl_num = mi_land order by mi_land";
636
 
637
	$result = QueryDB($db, $query);
638
 
639
	if (!$result) {
640
	   closeDB($db);
641
	   return;
642
	}
643
 
644
	$numrows = numrowsDB($result);
645
	$cols = $numrows;
646
	$rows = 0;
647
	echo "<td class=\"stbb\" colspan=$cols>Gesamt-Aufw&auml;nde</td>\n";
648
	echo "<td class=\"stbb\" rowspan=2>Summe</td></tr>\n<tr>";
649
 
650
	while ($rows < $numrows) {
651
	   $data = fetchDB($result, $rows);
652
	   $kl_land = $data[0];
653
	   $mi_land = $data[1];
654
	   echo "<td class=\"stb\">$kl_land</td>";
655
	   $land[$mi_land] = 0;
656
	   $zwland[$mi_land] = 0;
657
	   $lpos[$rows] = $mi_land;
658
	   $rows++;
659
	}
660
 
661
	echo "</tr><tr>\n";
662
 
663
	$query = "select al_hours, al_phase, mi_land from allocation, task, ";
664
	$query .= "plan, mitarbeiter, key_land where ";
665
	$query .= "ta_num = al_task and mi_num = al_ressource and ";
666
	$query .= "pl_num = ta_plnum and pl_prnum = $selpro and ";
667
	$query .= "pl_lfd = $pl_lfd and kl_num = mi_land ";
668
	$query .= "order by al_phase, mi_land";
669
	$result = QueryDB($db, $query);
670
 
671
	if (!$result) {
672
	   closeDB($db);
673
	   return;
674
	}
675
 
676
	$numrows = numrowsDB($result);
677
	$rows = 0;
678
 
679
	if ($numrows <= 0) {
680
	   Error("F&uuml;r das Projekt $selpro existieren keine Ressourcen!<br>");
681
	   closeDB($db);
682
	   return;
683
	}
684
 
685
	$old_phase = -1;
686
	$sum = 0;
687
	$total = 0;
688
	$days = daysinmonth($per, $year);
689
	$maxdate = gmmktime(0, 0, 0, $per, $days, $year);
690
 
691
	while ($rows < $numrows) {
692
	   $data = fetchDB($result, $rows);
693
	   $al_hours = $data[0];
694
	   $al_phase = $data[1];
695
	   $mi_land = $data[2];
696
 
697
	   if ($old_phase != $al_phase) {
698
	      if ($rows > 0) {
699
		 $sum = 0;
700
 
701
	         for ($i = 0; $i < $cols; $i++) {
702
		    $x = $lpos[$i];
703
		    printf("<td class=\"stbez\">%s</td>", FormatNum($zwland[$x], 3));
704
		    $sum += $zwland[$x];
705
		    $total += $zwland[$x];
706
	   	    $land[$x] += $zwland[$x];
707
		    $zwland[$x] = 0;
708
		 }
709
 
710
	         printf("<td class=\"stb\">%s</td></tr>\n", FormatNum($sum, 3));
711
	      }
712
 
713
	      echo "<tr><td class=\"stb\">$al_phase</td>";
714
	      $old_phase = $al_phase;
715
	   }
716
 
717
	   $zwland[$mi_land] += $al_hours;
718
	   $rows++;
719
	}
720
 
721
	$sum = 0;
722
 
723
	for ($i = 0; $i < $cols; $i++) {
724
	   $x = $lpos[$i];
725
	   printf("<td class=\"stbez\">%s</td>", FormatNum($zwland[$x], 3));
726
	   $sum += $zwland[$x];
727
	   $total += $zwland[$x];
728
	   $land[$x] += $zwland[$x];
729
	}
730
 
731
	printf("<td class=\"stb\">%s</td></tr>\n", FormatNum($sum, 3));
732
	echo "<td class=\"stbb\">Summe</td>";
733
 
734
	for ($i = 0; $i < $cols; $i++) {
735
	   $x = $lpos[$i];
736
	   printf("<td class=\"stb\">%s</td>", FormatNum($land[$x], 3));
737
	}
738
 
739
	printf("<td class=\"stbb\">%s</td></tr>\n", FormatNum($total, 3));
740
	echo "</table>\n";
741
	closeDB($db);
742
}
743
 
744
function ShowPlanDate($print=false) {
745
	global $einheit;
746
	global $dtformatshort;
747
 
748
	$per = $_REQUEST['per'];
749
	$year = $_REQUEST['year'];
750
	$selpro = $_REQUEST['selpro'];
751
 
752
	$db = OpenDB();
753
	# Tabelle REST-Aufwaende
754
?>
755
<br>
756
<table border=1>
757
   <tr>
758
      <td colspan=4 class="stbb">Aktuelle Plantermine</td>
759
   </tr>
760
   <tr>
761
      <td class="stbb">Phase</td>
762
      <td class="stb">Beginn</td>
763
      <td class="stb">Ende</td>
764
      <td class="stb">Tage</td>
765
   </tr>
766
<?php
767
	# Finde als erstes den leuesten plan
768
	$query = "select pl_lfd from plan where pl_prnum = $selpro ";
769
	$query .= "order by pl_lfd desc";
770
	$result = QueryDB($db, $query);
771
 
772
	if (!$result) {
773
	   closeDB($db);
774
	   return;
775
	}
776
 
777
	$data = fetchDB($result, 0);
778
	$pl_lfd = $data[0];
779
 
780
	# Hole die Plandaten
781
	$query = "select ta_start, ta_duration, ta_phase, ta_meeting, ta_level from ";
782
	$query .= "task, plan where pl_num = ta_plnum and ";
783
	$query .= "pl_prnum = $selpro and pl_lfd = $pl_lfd ";
784
	$query .= "order by ta_phase, ta_start";
785
	$result = QueryDB($db, $query);
786
 
787
	if (!$result) {
788
	   closeDB($db);
789
	   return;
790
	}
791
 
792
	$numrows = numrowsDB($result);
793
	$rows = 0;
794
	$old_phase = -1;
795
	$sum = 0;
796
	$sdate = 0;
797
	$edate = 0;
798
	$fdate = 0;
799
	$ldate = 0;
800
 
801
	while ($rows < $numrows) {
802
	   $data = fetchDB($result, $rows);
803
	   $ta_start = $data[0];
804
	   $ta_duration = $data[1];
805
	   $ta_phase = $data[2];
806
	   $ta_meeting = $data[3];
807
	   $ta_level = $data[4];
808
 
809
	   if ($rows == 0)
810
	      $old_phase = $ta_phase;
811
 
812
	   if ($old_phase != $ta_phase) {
813
	      $strsd = gmdate($dtformatshort, $sdate);
814
	      $stred = gmdate($dtformatshort, $edate);
815
	      $diff = (integer)(($edate - $sdate) / 86400);
816
	      echo "<tr><td class=\"stb\">$old_phase</td>";
817
	      echo "<td class=\"stbez\">$strsd</td>";
818
	      echo "<td class=\"stbez\">$stred</td>";
819
	      echo "<td class=\"stb\">$diff</td></tr>\n";
820
 
821
	      if ($ldate < $edate)
822
	         $ldate = $edate;
823
 
824
	      $sdate = 0;
825
	      $edate = 0;
826
	      $old_phase = $ta_phase;
827
	   }
828
 
829
	   if ($sdate == 0)
830
	      $sdate = $ta_start;
831
 
832
	   if ($fdate == 0)
833
	      $fdate = $ta_start;
834
 
835
	   if ($ta_meeting == 0 && $ta_level > 1)
836
	      $dt = GetEDate($einheit, $ta_start, $ta_duration);
837
	   else if ($ta_level == 0)
838
	      $dt = 0;
839
	   else
840
	      $dt = $ta_start;
841
 
842
	   if ($dt > $edate)
843
	      $edate = $dt;
844
 
845
	   $rows++;
846
	}
847
 
848
	$strsd = gmdate($dtformatshort, $sdate);
849
	$stred = gmdate($dtformatshort, $edate);
850
	$diff = (integer)(($edate - $sdate) / 86400);
851
	echo "<tr><td class=\"stb\">$ta_phase</td>";
852
	echo "<td class=\"stbez\">$strsd</td>";
853
	echo "<td class=\"stbez\">$stred</td>";
854
	echo "<td class=\"stb\">$diff</td></tr>\n";
855
 
856
	if ($ldate < $edate)
857
	   $ldate = $edate;
858
 
859
	$strsd = gmdate($dtformatshort, $fdate);
860
	$stred = gmdate($dtformatshort, $ldate);
861
	$diff = (integer)(($ldate - $fdate) / 86400);
862
	echo "<tr><td class=\"stbb\">Maximal:</td>";
863
	echo "<td class=\"stb\">$strsd</td>";
864
	echo "<td class=\"stb\">$stred</td>";
865
	echo "<td class=\"stb\">$diff</td></tr>\n";
866
	echo "</table>\n";
867
}
868
# Auswertung des Menues:
869
#
870
if ($knopf == 24)		// Statusbericht
871
   Preselect();
872
 
873
# Auswertung der Funktionen
874
if ($func == "statusb") {
875
   $per = $_REQUEST['per'];
876
   $year = $_REQUEST['year'];
877
   $selpro = $_REQUEST['selpro'];
878
 
879
   # Ermitteln des Projektnamens und Anzeigen des selben.
880
   $db = OpenDB();
881
   $query = "select pr_name from project where pr_num = $selpro";
882
   $result = QueryDB($db, $query);
883
   $data = fetchDB($result, 0);
884
   $pr_name = $data[0];
885
   echo "<p class=\"cry\">Projekt: $selpro $pr_name<br>Zeitraum: $per.$year</p>";
886
   echo "<br>\n";
887
   closeDB($db);
888
 
889
   echo "<a href=\"#\" onClick=\"javascript:open_mwindow('statusbericht.php?selpro=$selpro&per=$per&year=$year&header=2&func=PrintStatus', 'Statusbericht: $selpro $pr_name', 750, 550)\">";
890
   echo "<img src=\"image/print.png\" border=0 alt=\"Drucken\"></a>\n";
891
 
892
   ShowISTStatus();
893
   ShowRestStatus();
894
   ShowGesamtStatus();
895
   ShowPlanDate();
896
}
897
 
898
if ($func == "PrintStatus") {
899
   $per = $_REQUEST['per'];
900
   $year = $_REQUEST['year'];
901
   $selpro = $_REQUEST['selpro'];
902
 
903
   # Ermitteln des Projektnamens und Anzeigen des selben.
904
   $db = OpenDB();
905
   $query = "select pr_name from project where pr_num = $selpro";
906
   $result = QueryDB($db, $query);
907
   $data = fetchDB($result, 0);
908
   $pr_name = $data[0];
909
   echo "<p class=\"cry\">Projekt: $selpro $pr_name<br>Zeitraum: $per.$year</p>";
910
   echo "<br>\n";
911
   closeDB($db);
912
 
913
   ShowISTStatus(true);
914
   ShowRestStatus(true);
915
   ShowGesamtStatus(true);
916
   ShowPlanDate(true);
917
}
918
 
919
require('footer.inc');
920
?>