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
$drm = array(true, false, false, false, false, true, false);
11
 
12
$knopf = 0;
13
$func = $_REQUEST['func'];
14
 
15
# Auswertungsmenue
16
if (isset($_REQUEST['IST'])) { $knopf = 23; $headline = 25; }
17
 
18
require_once('menu.inc');
19
require_once('knumber.inc');
20
 
21
# Folgende Funktion erlaubt die Auswahl einer Periode fuer die der IST-Bericht
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 name="istbericht" action="istbericht.php" method="post">
92
<input type="hidden" name="menu" value="<? echo "$menu"; ?>">
93
<input type="hidden" name="headline" value="25">
94
<input type="hidden" name="func" value="IST">
95
 
96
<table class="input">
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
	if (($rstufe >= 0 && $rstufe < 3) || $rstufe == 4 || $rstufe == 6) {
136
?>
137
   <tr>
138
      <td>Mitarbeiter:</td>
139
      <td><select name="minum">
140
<?php
141
	   $query = "select mi_num, mi_vname, mi_nname, kl_land from ";
142
	   $query .= "mitarbeiter, key_land where kl_num = mi_land and ";
143
	   $query .= "mi_plan = true ";
144
	   $query .= "order by mi_nname, mi_vname";
145
	   $result = QueryDB($db, $query);
146
 
147
	   if (!$result) {
148
	      closeDB($db);
149
	      return;
150
	   }
151
 
152
	   $numrows = numrowsDB($result);
153
	   $rows = 0;
154
 
155
	   while ($rows < $numrows) {
156
	      $data = fetchDB($result, $rows);
157
	      $mi_num = $data[0];
158
	      $mi_vname = $data[1];
159
	      $mi_nname = $data[2];
160
	      $kl_land = $data[3];
161
 
162
	      if ($mi_num == $unum)
163
	         echo "<option selected value=\"$mi_num\">$mi_nname $mi_vname ($kl_land)</option>\n";
164
	      else
165
	         echo "<option value=\"$mi_num\">$mi_nname $mi_vname ($kl_land)</option>\n";
166
 
167
	      $rows++;
168
	   }
169
?>
170
          </select>
171
	  &nbsp;&nbsp;Alle Mitarbeiter: <input type="checkbox" name="allmi" value="1" checked>
172
      </td>
173
   </tr>
174
<?php
175
	} else
176
	   echo "<input type=\"hidden\" name=\"minum\" value=\"$unum\">\n";
177
 
178
	# Auswahl eines Projekts oder auch alle zugleich
179
	echo "<tr><td>Projektauswahl:</td>\n";
180
	echo "<td><table border=0 cellspacing=0 cellpadding=0>\n";
181
	echo "<tr><td><input type=\"radio\" name=\"project\" value=\"1\">Alle Projekte</td>\n";
182
	echo "<td><input type=\"radio\" name=\"project\" value=\"0\" checked>Projekt:";
183
 
184
	if ($rstufe == 2) {		// Projektleiter
185
	   $query = "select distinct pr_num, pr_name from ";
186
	   $query .= "project, plan, task, allocation ";
187
	   $query .= "where pl_prnum = pr_num and ta_plnum = pl_num and ";
188
	   $query .= "al_task = ta_num ";
189
	   $query .= "and (pr_pl = $unum or al_ressource = $unum) ";
190
	   $query .= "order by pr_num";
191
	} else if ($rstufe == 3) {	// Mitarbeiter
192
	   $query = "select distinct wd_prnum, pr_name from ";
193
	   $query .= "wdone, project where ";
194
	   $query .= "pr_num = wd_prnum and wd_minum = $unum ";
195
	   $query .= "order by wd_prnum";
196
	} else {
197
	   $query = "select pr_num, pr_name from ";
198
	   $query .= "project where pr_status = 0 order by pr_num";
199
	}
200
 
201
	$result = QueryDB($db, $query);
202
 
203
	if (!$result) {
204
	   closeDB($db);
205
	   return;
206
	}
207
 
208
	echo "<select name=\"selpro\">\n";
209
	$numrows = numrowsDB($result);
210
	$rows = 0;
211
 
212
	while ($rows < $numrows) {
213
	   $data = fetchDB($result, $rows);
214
	   $pr_num = $data[0];
215
	   $pr_name = $data[1];
216
	   echo "<option value=\"$pr_num\">$pr_num $pr_name</option>\n";
217
	   $rows++;
218
	}
219
 
220
	echo "</select></td></tr></table>\n";
221
	echo "</td></tr>\n";
222
	echo "</table>\n";
223
	echo "<table class=\"indent\"><tr><td>";
224
	ButtonSubmit("Senden", "istbericht");
225
	echo "</td></tr></table>";
226
	echo "</form>\n";
227
	closeDB($db);
228
}
229
 
230
function ShowIstErfassung() {
231
	global $leneinheit;
232
	global $periode;
233
	global $rstufe;
234
	global $unum;
235
 
236
	$per = $_REQUEST['per'];
237
	$year = $_REQUEST['year'];
238
	$minum = $_REQUEST['minum'];
239
	$project = $_REQUEST['project'];
240
	$selpro = $_REQUEST['selpro'];
241
	$allmi = $_REQUEST ['allmi'];
242
 
243
	switch($periode) {
244
	   case 1:		// Jahr
245
	      $smon = 1;
246
	      $sday = 1;
247
	      $emon = 12;
248
	      $eday = 31;
249
	   break;
250
 
251
	   case 2:		// Quartal
252
	      $sday = 1;
253
 
254
	      switch ($per) {
255
		 case 1:
256
		    $smon = 1;
257
		    $emon = 3;
258
		    $eday = 31;
259
		 break;
260
 
261
		 case 2:
262
		    $smon = 4;
263
		    $emon = 6;
264
		    $eday = 30;
265
		 break;
266
 
267
		 case 3:
268
		    $smon = 7;
269
		    $emon = 9;
270
		    $eday = 30;
271
		 break;
272
 
273
		 case 4:
274
		    $smon = 10;
275
		    $emon = 12;
276
		    $eday = 31;
277
		 break;
278
	      }
279
	   break;
280
 
281
	   case 3:		// Monat
282
	      $smon = $per;
283
	      $sday = 1;
284
	      $emon = $per;
285
	      $eday = daysinmonth($per, $year);
286
	   break;
287
 
288
	   case 4:		// Woche
289
		# FIXME: Currently not implemented
290
	   break;
291
 
292
	   case 5:		// Tag
293
		# FIXME: Currently not implemented
294
	   break;
295
	}
296
 
297
	$db = OpenDB();
298
	$anz = 0;
299
 
300
	if ($rstufe == 2) {	// Projektleiter
301
	   $query = "select distinct pr_num from ";
302
	   $query .= "project, plan, task, allocation ";
303
	   $query .= "where pl_prnum = pr_num and ta_plnum = pl_num and ";
304
	   $query .= "al_task = ta_num ";
305
	   $query .= "and (pr_pl = $unum or al_ressource = $unum) ";
306
	   $query .= "order by pr_num";
307
	   $result = QueryDB($db, $query);
308
 
309
	   if (!$result) {
310
	      closeDB($db);
311
	      return;
312
	   }
313
 
314
	   $numrows = numrowsDB($result);
315
	   $rows = 0;
316
 
317
	   while ($rows < $numrows) {
318
	      $data = fetchDB($result, $rows);
319
	      $pnum[$rows] = $data[0];
320
	      $rows++;
321
	   }
322
 
323
	   $anz = $numrows;
324
	   unset($rows);
325
	   unset($numrows);
326
	}
327
 
328
	$fdate = gmmktime(0, 0, 0, $smon, $sday, $year);
329
	$ldate = gmmktime(0, 0, 0, $emon, $eday, $year);
330
 
331
	$query = "select wd_prnum, wd_datum, wd_hours, wd_phase, wd_rk, ";
332
	$query .= "wd_minum, mi_nname, mi_vname, pr_name, kp_phase ";
333
	$query .= "from wdone, mitarbeiter, project, key_phase where ";
334
	$query .= "wd_datum between $fdate and $ldate and ";
335
 
336
	if (($rstufe > 2 && $rstufe < 4) || !isset($allmi) || $allmi != 1)
337
	   $query .= "wd_minum = $minum and mi_num = $minum and ";
338
	else
339
	   $query .= "mi_num = wd_minum and ";
340
 
341
	$query .= "pr_num = wd_prnum and kp_num = wd_phase and wd_hours > 0 ";
342
 
343
	if (!$project)
344
	   $query .= " and wd_prnum = $selpro";
345
	else if ($rstufe == 2) {
346
	   $query .= " and wd_prnum in (";
347
 
348
	   for ($i = 0; $i < $anz; $i++) {
349
	      if ($i > 0)
350
	         $query .= ",";
351
 
352
	      $query .= "$pnum[$i]";
353
	   }
354
 
355
	   $query .= ") ";
356
	   unset($pnum);
357
	}
358
 
359
	$query .= " order by wd_prnum, mi_nname, mi_vname, wd_phase, wd_datum";
360
	$result = QueryDB($db, $query);
361
 
362
	if (!$result) {
363
	   closeDB($db);
364
	   return;
365
	}
366
 
367
	$numrows = numrowsDB($result);
368
 
369
	if ($numrows <= 0) {
370
	   Error("F&uuml;r die Periode $per.$year und das gew&auml;hlte Projekt $selpro existiert keine IST-Erfassung!<br>");
371
	   closeDB($db);
372
	   return;
373
	}
374
 
375
	$rows = 0;
376
	$old_prnum = 0;
377
	$old_minum = 0;
378
	$old_phase = 0;
379
	$old_datum = 0;
380
	$pos = 1;
381
	$sum = 0;
382
	$total = 0;
383
	$all = 0;
384
	$flag = false;
385
 
386
	while ($rows < $numrows) {
387
	   $data = fetchDB($result, $rows);
388
	   $wd_prnum = $data[0];
389
	   $wd_datum = $data[1];
390
	   $wd_hours = $data[2];
391
	   $wd_phase = $data[3];
392
	   $wd_rk = $data[4];
393
	   $wd_minum = $data[5];
394
	   $mi_nname = $data[6];
395
	   $mi_vname = $data[7];
396
	   $pr_name = $data[8];
397
	   $kp_phase = $data[9];
398
 
399
	   if ($old_datum == $wd_datum) {
400
	      $rows++;
401
	      continue;
402
	   } else
403
	      $old_datum = $wd_datum;
404
 
405
	   if ($old_prnum != $wd_prnum || $old_minum != $wd_minum) {
406
	      # Die Summenzeile malen sofern es bereits eine gibt.
407
	      if ($rows > 0) {
408
 
409
		 while ($pos <= 31) {
410
		    echo "<td class=\"sel\">&nbsp;</td>";
411
		    $pos++;
412
		 }
413
 
414
	         printf("<td class=\"selnum\">%s</td>\n", FormatNum($sum, 3));
415
	         printf("<td class=\"selnum\">%s</td></tr>\n", FormatNum($sum / $leneinheit, 3));
416
	         $sum = 0;
417
	         $pos = 1;
418
	         $old_phase = $wd_phase;
419
	         $pos = 1;
420
	         # Summenzeile
421
		 echo "<tr><td class=\"selnum\" colspan=33><b>Summen:</b></td>\n";
422
	         printf("<td class=\"selnum\"><b>%s</b></td><td class=\"selnum\"><b>%s</b></td></tr>\n",
423
	         	FormatNum($total, 3), FormatNum($total / $leneinheit, 3));
424
		 printf("</table><p class=\"cry\">Zwischensumme: %s, PT: %s</p>\n", FormatNum($all, 3), FormatNum($all / $leneinheit, 3));
425
		 $total = 0;
426
		 $flag = true;
427
	      }
428
 
429
	      # Den Kopf malen
430
	      echo "<table class=\"sel\" width=\"95%\">\n";
431
	      echo "<tr><td class=\"sel\">Name:</td>\n";
432
	      echo "<td style=\"color: #ff0000;\"><b>$mi_nname $mi_vname</b></td><td class=\"sel\"> </td>\n";
433
	      echo "<td class=\"sel\" colspan=8>Jahr: <b>$year</b>&nbsp;&nbsp;&nbsp;Monat: <b>$per</b></td><td class=\"sel\"> </td>\n";
434
	      echo "<td class=\"sel\" colspan=23>ProjektNr.: <font color=\"#ff0000\"><b>$wd_prnum</b></font>&nbsp;&nbsp;&nbsp;&nbsp;Projekt: <font color=\"ff0000\"><b>$pr_name</b></font></td></tr>\n";
435
	      echo "<tr><td class=\"sel\" colspan=2> </td><td class=\"sel\">[Std]</td><td class=\"sel\" colspan=32> </td></tr>\n";
436
	      echo "<tr><th class=\"sel\">Phase</th><th class=\"sel\">Aktivit&auml;t</th>";
437
 
438
	      for ($i = 1; $i <= 31; $i++)
439
	         echo "<th class=\"sel\">$i</th>";
440
 
441
	      echo "<th class=\"sel\">Summe<br>in Std</th><th class=\"sel\">Summe<br>in PT</th></tr>\n";
442
	      $old_prnum = $wd_prnum;
443
	      $old_minum = $wd_minum;
444
	   }
445
 
446
	   if ($rows > 0 && $old_phase != $wd_phase) {
447
	      while ($pos <= 31) {
448
		 echo "<td>&nbsp;</td>";
449
		 $pos++;
450
	      }
451
 
452
	      printf("<td class=\"selnum\">%s</td>\n", FormatNum($sum, 3));
453
	      printf("<td class=\"selnum\">%s</td></tr>\n", FormatNum($sum / $leneinheit, 3));
454
	      $sum = 0;
455
	      $pos = 1;
456
	      echo "<tr><td class=\"selltgray\">Phase $wd_phase</td><td class=\"selltgray\">$kp_phase</td>\n";
457
	      $old_phase = $wd_phase;
458
	      $pos = 1;
459
	   } else if ($rows == 0 || $flag) {
460
	      echo "<tr><td class=\"selltgray\">Phase $wd_phase</td><td class=\"selltgray\">$kp_phase</td>\n";
461
	      $old_phase = $wd_phase;
462
	      $flag = false;
463
	   }
464
 
465
	   $p = gmdate("j", $wd_datum);
466
 
467
	   while ($pos < $p) {
468
	      echo "<td class=\"sel\">&nbsp;</td>";
469
	      $pos++;
470
	   }
471
 
472
	   # Die tatsaechliche IST-Summe fuer den aktuellen Tag und Phase
473
	   # berechnen.
474
	   $query = "select sum(wd_hours) from wdone where ";
475
	   $query .= "wd_phase = $wd_phase and wd_minum = $wd_minum and ";
476
	   $query .= "wd_prnum = $wd_prnum and wd_datum = $wd_datum";
477
 
478
	   if (!($reswd = QueryDB($db, $query))) {
479
	      closeDB($db);
480
	      return;
481
	   }
482
 
483
	   $data = fetchDB($reswd, 0);
484
	   $wd_hours = $data[0];
485
 
486
	   if ($wd_rk)
487
	      printf("<td class=\"selnum\">%s<small><b>+<font color=\"#ff0000\">Rk</font></b></small></td>", FormatNum($wd_hours, 1));
488
	   else
489
	      printf("<td class=\"selnum\">%s</td>", FormatNum($wd_hours, 1));
490
 
491
	   $sum += $wd_hours;
492
	   $total += $wd_hours;
493
	   $all += $wd_hours;
494
	   $pos++;
495
	   $rows++;
496
	}
497
 
498
	while ($pos <= 31) {
499
	   echo "<td class=\"sel\">&nbsp;</td>";
500
	   $pos++;
501
	}
502
 
503
	printf("<td class=\"selnum\">%s</td>\n", FormatNum($sum, 3));
504
	printf("<td class=\"selnum\">%s</td></tr>\n", FormatNum($sum / $leneinheit, 3));
505
	echo "<tr><td class=\"selnum\" colspan=33><b>Summen:</b></td>\n";
506
	printf("<td class=\"selnum\"><b>%s</b></td><td align=\"right\"><b>%s</b></td></tr>\n",
507
		FormatNum($total, 3), FormatNum($total / $leneinheit, 3));
508
	echo "</table>\n";
509
	printf("<p class=\"cry\">Gesamtsumme: %s, PT: %s</p>\n", FormatNum($all, 3), FormatNum($all / $leneinheit, 3));
510
	closeDB($db);
511
}
512
 
513
# Auswertung des Menues:
514
#
515
if ($knopf == 23)		// IST-Erfassung
516
   Preselect();
517
 
518
# Auswertung der Funktionen
519
if ($func == "IST") {
520
   $per = $_REQUEST['per'];
521
   $year = $_REQUEST['year'];
522
   $minum = $_REQUEST['minum'];
523
   $project = $_REQUEST['project'];
524
   $selpro = $_REQUEST['selpro'];
525
   $allmi = $_REQUEST ['allmi'];
526
   echo "<table class=\"indent\"><tr><td>";
527
   buttonPrint("Drucken", "istbericht.php", "selpro=$selpro&per=$per&year=$year&minum=$minum&project=$project&allmi=$allmi&header=2&func=PrintIST");
528
   echo "</td></tr></table>";
529
//   echo "<a href=\"#\" onClick=\"javascript:open_mwindow('istbericht.php?selpro=$selpro&per=$per&year=$year&minum=$minum&project=$project&allmi=$allmi&header=2&func=PrintIST', 'IST-Bericht', 1000, 650)\">";
530
//   echo "<img src=\"image/print.png\" border=0 alt=\"Drucken\"></a>\n";
531
 
532
   ShowIstErfassung();
533
}
534
 
535
if ($func == "PrintIST") {
536
   echo "<br>\n";
537
   ShowIstErfassung();
538
}
539
 
540
require('footer.inc');
541
?>