Subversion Repositories public

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 andreas 1
<?php
2
require_once('version.inc');
3
require_once('dbaccess.inc');
4
require_once('header.inc');
5
require_once('crypt.inc');
6
require_once('settings.inc');
7
require_once('menu.inc');
8
require_once('helper.inc');
9
require_once('knumber.inc');
10
 
11
$func = $_REQUEST['func'];
12
 
13
function ShowPeriod($wd_prnum, $user, $nav, $all = false) {
14
	global $phase;
15
	global $pmlight;
16
	global $leneinheit;
17
	global $unum;
18
 
19
	$db = OpenDB();
20
	$query = "select wd_datum, wd_minum, mi_nname, mi_vname, ta_name, ";
21
	$query .= "wd_task, wd_edit from wdone, mitarbeiter, task ";
22
	$query .= "where mi_num = wd_minum and ta_num = wd_task and ";
23
	$query .= "wd_prnum = $wd_prnum ";
24
 
25
	if (!$all)
26
	   $query .= "and wd_minum = $user order by ta_name, wd_datum";
27
	else
28
	   $query .= "order by mi_nname, mi_vname, ta_name, wd_datum";
29
 
30
	$result = QueryDB($db, $query);
31
 
32
	if (!$result) {
33
	   Error ("Es wurden keine IST-Buchungen gefunden!");
34
	   return false;
35
	}
36
 
37
	# Welches Projekt wurde gewaehlt?
38
	$query = "select pr_name, pr_pl, mi_nname, mi_vname from ";
39
	$query .= "project, mitarbeiter where pr_num = $wd_prnum and ";
40
	$query .= "mi_num = pr_pl";
41
	$respr = QueryDB($db, $query);
42
 
43
	if (!$respr) {
44
	   pg_close($db);
45
	   return;
46
	}
47
 
48
	$data = pg_fetch_row($respr, 0);
49
	$pr_name = $data[0];
50
	$pr_pl = $data[1];
51
	$mi_nname = $data[2];
52
	$mi_vname = $data[3];
53
 
54
	if ($all)
55
	   $cp = 5;
56
	else
57
	   $cp = 4;
58
?>
59
   <table class="sel">
60
   <tr>
61
<?
62
	echo "<td colspan=$cp class=\"selnf\">";
63
	ButtonLink("Hinzuf&uuml;gen", "ist.php", "func=FormIST&$nav");
64
?>
65
   </tr>
66
   <tr>
67
      <td colspan=<? echo "$cp"; ?> class="selinfo">
68
         <table border=0>
69
           <tr>
70
            <td class="selnf">Projekt:</td>
71
            <td class="selnf"><? echo "$wd_prnum $pr_name"; ?></td>
72
           </tr>
73
           <tr>
74
            <td class="selnf">Projektleiter:</td>
75
            <td class="selnf"><? echo "$mi_nname $mi_vname"; ?></td>
76
           </tr>
77
         </table>
78
      </td>
79
   </tr>
80
   <tr>
81
      <th class="sel">Aktion</td>
82
<?php
83
	if ($all)
84
	   echo "<th class=\"sel\">Mitarbeiter</td>\n";
85
?>
86
      <th class="sel">Taskname</td>
87
      <th class="sel">Periode</td>
88
      <th class="sel">Tage</td>
89
   </tr>
90
<?php
91
	$numrows = pg_num_rows($result);
92
	$r = 0;
93
	$oldfdate = 0;
94
	$oldldate = 0;
95
	$oldminum = 0;
96
	$oldtask = 0;
97
	$oldtaname = "";
98
	$oldnname = "";
99
	$oldvname = "";
100
	$sum = 0.0;
101
	$psum = 0.0;
102
 
103
	while ($r < $numrows) {
104
	   $data = pg_fetch_row($result, $r);
105
	   $wd_datum = $data[0];
106
	   $wd_minum = $data[1];
107
	   $mi_nname = $data[2];
108
	   $mi_vname = $data[3];
109
	   $ta_name = $data[4];
110
	   $wd_task = $data[5];
111
	   $wd_edit = $data[6];
112
 
113
	   GetDateRange($wd_datum, &$fdate, &$ldate);
114
 
115
	   if ($r == 0) {
116
	      $oldfdate = $fdate;
117
	      $oldldate = $ldate;
118
	      $oldminum = $wd_minum;
119
	      $oldtask = $wd_task;
120
	      $oldtaname = $ta_name;
121
	      $oldnname = $mi_nname;
122
	      $oldvname = $mi_vname;
123
	   }
124
 
125
	   if ($oldfdate != $fdate || $oldldate != $ldate || $oldminum != $wd_minum || $oldtask != $wd_task) {
126
	      # Um auf die Periodensumme pro Task (und Mitarbeiter) zu kommen,
127
	      # suchen wir alle Eintraege pro Periode.
128
	      $query = "select sum(wd_hours)/$leneinheit from wdone ";
129
	      $query .= "where wd_prnum = $wd_prnum and wd_minum = $oldminum ";
130
	      $query .= "and wd_datum between $oldfdate and $oldldate ";
131
	      $query .= "and wd_task = $oldtask";
132
	      $result2 = QueryDB($db, $query);
133
 
134
	      if (!$result2) {
135
	         return false;
136
	      }
137
 
138
	      $data = pg_fetch_row($result2, 0);
139
	      $hours = $data[0];
140
 
141
	      # Einfuegen der Aktionen
142
	      echo "<tr><td class=\"selakt\">";
143
 
144
	      if ($wd_edit) {
145
	         echo "<a href=\"#\" onClick=\"javascript:MoveTo('ist.php',";
146
	         echo "'$nav&wd_minum=$oldminum&wd_datum=$oldfdate&wd_task=$oldtask&wd_hours=$hours&func=FormIST')\">";
147
	         echo "<img src=\"image/edit.png\" border=0 alt=\"Edit\"></a>\n";
148
 
149
	         echo "<a href=\"#\" onClick=\"javascript:MoveTo('ist.php',";
150
	         echo "'$nav&wd_minum=$oldminum&wd_datum=$oldfdate&wd_task=$oldtask&func=AskISTdel')\">";
151
	         echo "<img src=\"image/editdelete.png\" border=0 alt=\"Delete\"></a>\n";
152
	      } else {
153
	         echo "&nbsp;";
154
	      }
155
 
156
	      echo "</td>\n";
157
 
158
	      if ($all)
159
	         echo "<td class=\"sel\">$oldnname $oldvname</td>\n";
160
 
161
	      echo "<td class=\"sel\">$oldtaname</td>\n";
162
	      $per = date("n.Y", $oldfdate);
163
	      echo "<td class=\"selnum\">$per</td>\n";
164
	      echo "<td class=\"selnum\">" . FormatNum($hours, 3) . "</td></tr>\n";
165
	      $sum += $hours;
166
	      $psum += $hours;
167
 
168
	      if ($all && $oldminum != $wd_minum) {
169
	         echo "<tr><td class=\"selnum\" colspan=4>Summe f&uuml;r <b>$oldnname $oldvname:</b></td>\n";
170
	         echo "<td class=\"lsum\" align=\"right\"><b>" . FormatNum($psum, 3) . "</b></td></tr>\n";
171
	         $psum = 0.0;
172
	      }
173
 
174
	      $oldfdate = $fdate;
175
	      $oldldate = $ldate;
176
	      $oldminum = $wd_minum;
177
	      $oldtask = $wd_task;
178
	      $oldtaname = $ta_name;
179
	      $oldnname = $mi_nname;
180
	      $oldvname = $mi_vname;
181
	   }
182
 
183
	   $r++;
184
	}
185
 
186
	if ($numrows <= 0) {
187
	   echo "</table>\n";
188
	   return true;
189
	}
190
 
191
	$query = "select sum(wd_hours)/$leneinheit from wdone ";
192
	$query .= "where wd_prnum = $wd_prnum and wd_minum = $wd_minum ";
193
	$query .= "and wd_datum between $fdate and $ldate ";
194
	$query .= "and wd_task = $wd_task";
195
	$result2 = QueryDB($db, $query);
196
 
197
	if (!$result2) {
198
	   return false;
199
	}
200
 
201
	$data = pg_fetch_row($result2, 0);
202
	$hours = $data[0];
203
 
204
	echo "<tr><td class=\"selakt\">";
205
 
206
	if ($wd_edit) {
207
	   echo "<a href=\"#\" onClick=\"javascript:MoveTo('ist.php',";
208
	   echo "'$nav&wd_minum=$oldminum&wd_datum=$oldfdate&wd_task=$oldtask&wd_hours=$hours&func=FormIST')\">";
209
	   echo "<img src=\"image/edit.png\" border=0 alt=\"Edit\"></a>\n";
210
 
211
	   echo "<a href=\"#\" onClick=\"javascript:MoveTo('ist.php',";
212
	   echo "'$nav&wd_minum=$oldminum&wd_datum=$oldfdate&wd_task=$oldtask&func=AskISTdel')\">";
213
	   echo "<img src=\"image/editdelete.png\" border=0 alt=\"Delete\"></a>\n";
214
	} else {
215
	   echo "&nbsp;";
216
	}
217
 
218
	echo "</td>\n";
219
 
220
	if ($all)
221
	   echo "<td class=\"sel\">$mi_nname $mi_vname</td>\n";
222
 
223
	echo "<td class=\"sel\">$ta_name</td>\n";
224
	$per = date("n.Y", $fdate);
225
	echo "<td class=\"selnum\">$per</td>\n";
226
	echo "<td class=\"selnum\">" . FormatNum($hours, 3) . "</td></tr>\n";
227
	$psum += $hours;
228
 
229
	if ($all) {
230
	   echo "<tr><td class=\"selnum\" colspan=4>Summe f&uuml;r <b>$oldnname $oldvname:</b></td>\n";
231
	   echo "<td class=\"lsum\" align=\"right\"><b>" . FormatNum($psum, 3) . "</b></td></tr>\n";
232
	}
233
 
234
	$sum += $hours;
235
 
236
	if ($all)
237
	   $span = 4;
238
	else
239
	   $span = 3;
240
 
241
	echo "<tr><td class=\"selnum\" colspan=$span>Gesamtsumme:</td>\n";
242
	echo "<td class=\"sum\" align=\"right\"> <b>" . FormatNum($sum, 3) . "</b></td></tr>\n";
243
	echo "</table>\n";
244
	return true;
245
}
246
 
247
# Folgende Funktion listet die bereits erfassten IST-Meldungen des
248
# angemeldeten Users auf und erlaubt deren Editierung, sofern die
249
# Meldung noch nicht durch den Projektleiter freigegeben wurde.
250
#
251
function ShowIST($wd_prnum, $all=false) {
252
	global $unum;
253
	global $rstufe;
254
	global $phase;
255
	global $einheit;
256
	global $leneinheit;
257
	global $dtformatshort;
258
	global $pmlight;
259
 
260
	$menu = $_REQUEST['menu'];
261
 
262
	if ($all == true) {
263
	   $superall = $_REQUEST['superall'];
264
	   $user = $_REQUEST['user'];
265
 
266
	   if (!isset($superall) || !isset($user)) {
267
	      Error("Interner Fehler: Zieluser fehlt!<br>");
268
	      return;
269
	   }
270
	}
271
	else
272
	   $superall = 1;
273
 
274
	if (!isset($wd_prnum) || $wd_prnum <= 0) {
275
	   Error("Interner Fehler: Projektnummer fehlt!<br>");
276
	   return;
277
	}
278
 
279
	$db = OpenDB();
280
	# Welches Projekt wurde gewaehlt?
281
	$query = "select pr_name, pr_pl, mi_nname, mi_vname from ";
282
	$query .= "project, mitarbeiter where pr_num = $wd_prnum and ";
283
	$query .= "mi_num = pr_pl";
284
	$result = QueryDB($db, $query);
285
 
286
	if (!$result) {
287
	   pg_close($db);
288
	   return;
289
	}
290
 
291
	$data = pg_fetch_row($result, 0);
292
	$pr_name = $data[0];
293
	$pr_pl = $data[1];
294
	$pl_nname = $data[2];
295
	$pl_vname = $data[3];
296
 
297
	# Wie heisst der angemeldete User?
298
	$query = "select mi_nname, mi_vname from mitarbeiter where ";
299
	$query .= "mi_num = $unum";
300
	$result = QueryDB($db, $query);
301
 
302
	if (!$result) {
303
	   pg_close($db);
304
	   return;
305
	}
306
 
307
	$data = pg_fetch_row($result, 0);
308
	$mi_nname = $data[0];
309
	$mi_vname = $data[1];
310
 
311
	if ($all == false || $rstufe >= 3) {
312
	   $user = $unum;
313
	   $all = false;
314
	}
315
 
316
	# Alle IST-Zeiten anzeigen ($superall) und fuer einen anderen User ($user)
317
	if ($all == true && $superall == 1) {
318
	   $query = "select mi_nname, mi_vname from mitarbeiter where ";
319
	   $query .= "mi_num = $user";
320
	   $result = QueryDB($db, $query);
321
 
322
	   if (!$result) {
323
	      pg_close($db);
324
	      return;
325
	   }
326
 
327
	   $data = pg_fetch_row($result, 0);
328
	   $mi_nname = $data[0];
329
	   $mi_vname = $data[1];
330
	   echo "<p class=\"cry\">F&uuml;r Mitarbeiter: $mi_vname $mi_nname</p>\n";
331
	}
332
 
333
	if (!$pmlight && ($all == false || $superall == 1)) {
334
	   $query = "select wd_num, wd_datum, wd_hours, wd_phase,";
335
	   $query .= "wd_edit, wd_task, wd_rk, ta_plnum, ta_name, ";
336
	   $query .= "wd_minum from wdone, task where ";
337
	   $query .= "wdone.wd_prnum = $wd_prnum and ";
338
	   $query .= "wdone.wd_minum = $user and task.ta_num = wdone.wd_task ";
339
	   $query .= "order by ";
340
 
341
	   if ($phase)
342
	      $query .= "wdone.wd_phase,";
343
 
344
	   $query .= "wdone.wd_datum";
345
	} else if (!$pmlight && $all == true && $superall == 0) {
346
	   $query = "select wd_num, wd_datum, wd_hours, wd_phase,";
347
	   $query .= "wd_edit, wd_task, wd_rk, ta_plnum, ta_name, ";
348
	   $query .= "wd_minum, mi_vname, mi_nname ";
349
	   $query .= "from wdone, task, mitarbeiter where ";
350
	   $query .= "wd_prnum = $wd_prnum and mi_num = wd_minum and ";
351
	   $query .= "ta_num = wd_task ";
352
 
353
	   if ($phase)
354
	      $query .= "order by wd_phase, wd_datum, mi_nname, mi_vname";
355
	   else
356
	      $query .= "order by wd_datum, mi_nname, mi_vname";
357
	}
358
 
359
	if (!$pmlight) {
360
	   $result = QueryDB($db, $query);
361
 
362
	   if (!result) {
363
	      pg_close($db);
364
	      return;
365
	   }
366
 
367
	   $numrows = pg_num_rows($result);
368
	   $row = 0;
369
	}
370
 
371
	if ($all == true) {
372
	   $nav = "user=$user&superall=$superall&menu=$menu&headline=10&";
373
	   $nav .= "wd_prnum=$wd_prnum";
374
	} else {
375
	   $nav = "menu=$menu&headline=10&wd_prnum=$wd_prnum";
376
	}
377
 
378
	$sumh = 0;
379
	$gsumh = 0;
380
	$otask = 0;
381
	$oper = 0;
382
 
383
	if ($rstufe == 1 || $pr_pl == $unum) {
384
?>
385
<form name="istlist" action="ist.php" method="post">
386
<input type="hidden" name="menu" value="<? echo "$menu"; ?>">
387
<input type="hidden" name="headline" value="10">
388
<input type="hidden" name="wd_prnum" value="<? echo "$wd_prnum"; ?>">
389
<input type="hidden" name="func" value="setsuper">
390
<table class="input">
391
<tr><td>
392
   <table border=0>
393
      <tr><td class="input"><input type="radio" name="superall" value="0" <? if (!$superall) echo "checked"; ?>>Alle IST</td>
394
          <td class="input"><input type="radio" name="superall" value="1" <? if ($superall) echo "checked"; ?>>Bestimmte IST:</td>
395
	  <td class="input"><select name="user">
396
<?php
397
	   $query = "select distinct mi_num, mi_vname, mi_nname from mitarbeiter,";
398
	   $query .= "allocation, task, plan where pl_prnum = $wd_prnum and ";
399
	   $query .= "ta_num = al_task and mi_num = al_ressource and ";
400
	   $query .= "pl_num = ta_plnum order by mi_nname, mi_vname";
401
	   $result2 = QueryDB($db, $query);
402
	   $nr = pg_num_rows($result2);
403
	   $r = 0;
404
 
405
	   while ($r < $nr) {
406
	      $data = pg_fetch_row($result2, $r);
407
	      $mi_num = $data[0];
408
	      $mi_vname = $data[1];
409
	      $mi_nname = $data[2];
410
 
411
	      if ($mi_num == $user)
412
	         echo "<option value=\"$mi_num\" selected>$mi_nname $mi_vname</option>\n";
413
	      else
414
	         echo "<option value=\"$mi_num\">$mi_nname $mi_vname</option>\n";
415
 
416
	      $r++;
417
	   }
418
?>
419
	     </select></td>
420
	 <td class="input"><? Button("Go", "istlist"); ?></td>
421
      </tr>
422
   </table>
423
</td></tr></table>
424
</form>
425
<br>
426
<?php
427
	}
428
 
429
	$hd = GetStrEinheit($einheit, false);
430
 
431
	# Ist die Periodensicht gewaehlt, brauchen wir eine vollkommen
432
	# andere Darstellung. Diese rufen wir an dieser Stelle auf.
433
	#
434
	if ($pmlight) {
435
	   ShowPeriod($wd_prnum, $user, $nav, !$superall);
436
	   pg_close($db);
437
	   return;
438
	}
439
 
440
	$cp = ($all && !$superall) ? 10 : 9;
441
?>
442
<table class="sel">
443
   <tr>
444
<?
445
	echo "<td colspan=$cp class=\"selnf\">";
446
	ButtonLink("Hinzuf&uuml;gen", "ist.php", "func=FormIST&$nav");
447
?>
448
      </td>
449
   <tr>
450
      <td colspan=<? echo "$cp"; ?> class="selinfo">
451
         <table border=0>
452
            <tr>
453
               <td>Projekt:</td>
454
               <td><? echo "$wd_prnum $pr_name"; ?></td>
455
            </tr>
456
            <tr>
457
               <td>Projektleiter:</td>
458
               <td><? echo "$pl_nname $pl_vname"; ?></td>
459
            </tr>
460
         </table>
461
      </td>
462
   </tr>
463
   <tr>
464
      <th class="sel">Aktion</td>
465
<?php
466
	if ($all == true && $superall == 0) {
467
	   echo "<th class=\"sel\">Mitarbeiter</th>\n";
468
	}
469
?>
470
      <th class="sel">Taskname</th>
471
      <th class="sel">Datum</th>
472
<?	if ($phase) { ?>
473
      <th class="sel">Phase</th>
474
<?	} ?>
475
      <th class="sel">Stunden</th>
476
      <th class="sel"><? echo "$hd"; ?></th>
477
<?	if (!$pmlight) { ?>
478
      <th class="sel">Rk.</th>
479
<?	} ?>
480
      <th class="sel">Plan</th>
481
      <th class="sel">Rest</th>
482
   </tr>
483
<?php
484
	$ohour = 0;
485
	$srest = 0;
486
 
487
	while ($row < $numrows) {
488
	   $data = pg_fetch_row($result, $row);
489
	   $wd_num = $data[0];
490
	   $wd_datum = $data[1];
491
	   $wd_hours = $data[2];
492
	   $wd_phase = $data[3];
493
	   $wd_edit = $data[4];
494
	   $wd_task = $data[5];
495
	   $wd_rk = $data[6];
496
	   $ta_plnum = $data[7];
497
	   $ta_name = $data[8];
498
	   $wd_minum = $data[9];
499
 
500
	   if ($all == true && $superall == 0) {
501
	      $mi_vname = $data[10];
502
	      $mi_nname = $data[11];
503
	   }
504
 
505
	   GetDateRange($wd_datum, &$fdate, &$ldate);
506
	   $aktper = GetPeriode($wd_datum);
507
 
508
	   $query = "select al_hours, al_phase, al_pstart from allocation ";
509
	   $query .= "where al_task = $wd_task and al_ressource = $wd_minum ";
510
	   $query .= "and al_pstart between $fdate and $ldate";
511
	   $res = QueryDB($db, $query);
512
 
513
	   if (!$res) {
514
	      pg_close($db);
515
	      return;
516
	   }
517
 
518
	   $nr = pg_num_rows($res);
519
	   $r = 0;
520
	   $su = 0;
521
 
522
	   while ($r < $nr) {
523
	      $data = pg_fetch_row($res, 0);
524
	      $al_hours = $data[0];
525
	      $al_phase = $data[1];
526
	      $al_pstart = $data[2];
527
	      $su += $al_hours;
528
	      $r++;
529
	   }
530
 
531
	   $al_hours = $su;
532
	   unset($su);
533
	   unset($r);
534
	   unset($nr);
535
	   unset($res);
536
 
537
	   if ($row > 0 && ($otask != $wd_task || $oper != $aktper)) {
538
	      if ($oper != $aktper && $otask == $wd_task)
539
	         $class = "lsum";
540
	      else
541
	         $class = "sum";
542
 
543
	      if ($phase) {
544
	         if ($all && !$superall)
545
	            echo "<tr><td class=\"$class\" colspan=5 align=\"right\">Zwischensummen:</td>\n";
546
	         else
547
	            echo "<tr><td class=\"$class\" colspan=4 align=\"right\">Zwischensummen:</td>\n";
548
	      } else {
549
	         if ($all && !$superall)
550
	            echo "<tr><td class=\"$class\" colspan=4 align=\"right\">Zwischensummen:</td>\n";
551
	         else
552
	            echo "<tr><td class=\"$class\" colspan=3 align=\"right\">Zwischensummen:</td>\n";
553
	      }
554
 
555
	      echo "<td class=\"$class\" align=\"right\"><b>$sumh</b></td>\n";
556
	      printf ("<td class=\"$class\" align=\"right\"><b>%s</b></td>", FormatNum($sumh / $leneinheit, 3));
557
 
558
	      if ($superall) {
559
	         if ($pmlight)
560
	            printf ("<td class=\"$class\" align=\"right\">%s</td>", FormatNum($ohour, 3));
561
		 else
562
	            printf ("<td class=\"$class\" align=\"right\">&nbsp;</td><td class=\"$class\">%s</td>", FormatNum($ohour, 3));
563
 
564
	         printf ("<td class=\"$class\" align=\"right\">%s</td></tr>\n", FormatNum($rest / $leneinheit, 3));
565
	      } else {
566
		 if ($pmlight)
567
	            echo "<td colspan=2 class=\"$class\">&nbsp;</td></tr>\n";
568
		 else
569
	            echo "<td colspan=3 class=\"$class\">&nbsp;</td></tr>\n";
570
	      }
571
 
572
	      $srest += $rest;
573
	      $sumh = 0;
574
	      $sump = 0;
575
	      $otask = $wd_task;
576
	      $ohour = $al_hours;
577
	      $oper = $aktper;
578
	   } else if ($row == 0) {
579
	      $otask = $wd_task;
580
	      $ohour = $al_hours;
581
	      $oper = $aktper;
582
	   }
583
 
584
	   echo "<tr><td class=\"selakt\">\n";
585
 
586
	   if ($wd_edit) {
587
	      echo "<a href=\"#\" onClick=\"javascript:MoveTo('ist.php',";
588
	      echo "'$nav&wd_num=$wd_num&func=FormShowIST')\">";
589
	      echo "<img src=\"image/edit.png\" border=0 alt=\"Edit\"></a>\n";
590
	      echo "<a href=\"#\" onClick=\"javascript:MoveTo('ist.php',";
591
	      echo "'$nav&wd_num=$wd_num&func=AskISTdel')\">";
592
	      echo "<img src=\"image/editdelete.png\" border=0 alt=\"Delete\"></a>\n";
593
	      echo "</td>\n";
594
	   } else {
595
	      echo "<td class=\"sel\"> /td>\n";
596
	   }
597
 
598
	   if ($all && !$superall)
599
	      echo "<td class=\"sel\">$mi_nname $mi_vname</td>\n";
600
 
601
	   echo "<td class=\"sel\">$ta_name</td>\n";
602
	   $datum = date($dtformatshort, $wd_datum);
603
	   echo "<td class=\"sel\">$datum</td>\n";
604
 
605
	   if ($phase)
606
	      echo "<td class=\"selnum\" align=\"right\">$wd_phase</td>\n";
607
 
608
	   echo "<td class=\"selnum\" align=\"right\">$wd_hours</td>\n";
609
	   printf ("<td class=\"selnum\" align=\"right\">%s</td>\n", FormatNum($wd_hours / $leneinheit, 3));
610
 
611
	   if (!$pmlight) {
612
	      if ($wd_rk)
613
	         echo "<td class=\"sel\"><b>Ja</b></td>\n";
614
	      else
615
	         echo "<td class=\"sel\">Nein</td>\n";
616
	   }
617
 
618
	   echo "<td class=\"sel\"> </td>";
619
 
620
	   if ($superall) {
621
	      $rest = ($al_hours * $leneinheit) - $wd_hours - $sumh;
622
 
623
	      if ($rest < 0)
624
	         printf ("<td class=\"five\" align=\"right\">%s</td>", FormatNum($rest / $leneinheit, 3));
625
	      else
626
	         printf ("<td class=\"selnum\" align=\"right\">%s</td>", FormatNum($rest / $leneinheit, 3));
627
	   } else {
628
	      echo "<td class=\"sel\"> </td>";
629
	   }
630
 
631
	   echo "</tr>\n";
632
	   $sumh += $wd_hours;
633
	   $gsumh += $wd_hours;
634
	   $row++;
635
	}
636
 
637
	if ($phase) {
638
	   $span1 = 5;
639
	   $span2 = 4;
640
	} else {
641
	   $span1 = 4;
642
	   $span2 = 3;
643
	}
644
 
645
	if ($all && !$superall)
646
	   echo "<tr><td class=\"sum\" colspan=$span1 align=\"right\">Zwischensummen:</td>\n";
647
	else
648
	   echo "<tr><td class=\"sum\" colspan=$span2 align=\"right\">Zwischensummen:</td>\n";
649
 
650
	echo "<td class=\"sum\" align=\"right\"><b>$sumh</b></td>\n";
651
	printf ("<td class=\"sum\" align=\"right\"><b>%s</b></td>", FormatNum($sumh / $leneinheit, 3));
652
 
653
	if ($superall) {
654
	   if ($pmlight)
655
	      printf ("<td class=\"sum\" align=\"right\">%s</td>", FormatNum($al_hours, 3));
656
	   else
657
	      printf ("<td class=\"sum\"> </td><td class=\"sum\" align=\"right\">%s</td>", FormatNum($al_hours, 3));
658
 
659
	   printf ("<td class=\"sum\" align=\"right\">%s</td></tr>\n", FormatNum($rest / $leneinheit, 3));
660
	} else {
661
	   if ($pmlight)
662
	      echo "<td colspan=2 class=\"sum\"> </td></tr>\n";
663
	   else
664
	      echo "<td colspan=3 class=\"sum\"> </td></tr>\n";
665
	}
666
 
667
	if ($all && !$superall)
668
	   echo "<tr><td class=\"sum\" colspan=$span1 align=\"right\">Summen:</td>\n";
669
	else
670
	   echo "<tr><td class=\"sum\" colspan=$span2 align=\"right\">Summen:</td>\n";
671
 
672
	echo "<td class=\"sum\" align=\"right\"><b>$gsumh</b></td>\n";
673
 
674
	if ($pmlight)
675
	   printf ("<td class=\"sum\" align=\"right\"><b>%s</b></td><td class=\"sum\"> </td>\n", FormatNum($gsumh / $leneinheit, 3));
676
	else
677
	   printf ("<td class=\"sum\" align=\"right\"><b>%s</b></td><td colspan=2 class=\"sum\"> </td>\n", FormatNum($gsumh / $leneinheit, 3));
678
 
679
	$srest += $rest;
680
 
681
	if ($srest < 0)
682
	   printf ("<td class=\"five\" align=\"right\"><b>%s</b></td></tr>", FormatNum($srest / $leneinheit, 3));
683
	else
684
	   printf ("<td class=\"sum\" align=\"right\"><b>%s</b></td></tr>", FormatNum($srest / $leneinheit, 3));
685
 
686
	echo "<tr><td colspan=$cp class=\"selnf\">";
687
	ButtonLink("Hinzuf&uuml;gen", "ist.php", "func=FormIST&$nav");
688
	echo "</td></tr>\n";
689
	echo "</table>\n";
690
	pg_close($db);
691
}
692
 
693
 
694
function FormIST($wd_prnum, $wd_num=0) {
695
	$menu = $_REQUEST['menu'];
696
	global $unum;
697
	global $rstufe;
698
	global $phase;
699
	global $dtformatshort;
700
	global $pmlight;
701
	global $leneinheit;
702
	$user = $_REQUEST['user'];
703
	$superall = $_REQUEST['superall'];
704
 
705
	if ($pmlight) {
706
	   $wd_minum = $_REQUEST['wd_minum'];
707
	   $wd_datum = $_REQUEST['wd_datum'];
708
 
709
	   if (!isset($wd_datum) || $wd_datum <= 0)
710
	      $wd_datum = time();
711
 
712
	   $datum = date("n.Y", $wd_datum);
713
	}
714
 
715
	if (!isset($user) || $user <= 0)
716
	   $user = $unum;
717
 
718
	$pmlg = $pmlight;
719
	$db = OpenDB();
720
 
721
	if (isset($wd_num) && $wd_num > 0) {
722
	   $pmlg = false;
723
	   $query = "select wd_prnum, wd_minum, wd_datum, wd_hours,";
724
	   $query .= "wd_phase, wd_task, wd_rk, wd_text, wd_verr from wdone ";
725
	   $query .= "where wd_num = $wd_num";
726
	   $result = QueryDB($db, $query);
727
 
728
	   if (!$result) {
729
	      pg_close($db);
730
	      return;
731
	   }
732
 
733
	   $data = pg_fetch_row($result, 0);
734
	   $wd_prnum = $data[0];
735
	   $wd_minum = $data[1];
736
	   $wd_datum = $data[2];
737
	   $wd_hours = $data[3];
738
	   $wd_phase = $data[4];
739
	   $wd_task = $data[5];
740
	   $wd_rk = $data[6];
741
	   $wd_text = $data[7];
742
	   $wd_verr = $data[8];
743
	   $user = $wd_minum;
744
	   $datum = date($dtformatshort, $wd_datum);
745
	}
746
 
747
	$query = "select pr_name, mi_nname, mi_vname from project, mitarbeiter ";
748
	$query .= "where mi_num = pr_pl and pr_num = $wd_prnum";
749
 
750
	if (!($result = QueryDB($db, $query))) {
751
	   pg_close($db);
752
	   return;
753
	}
754
 
755
	$data = pg_fetch_row($result, 0);
756
	$pr_name = $data[0];
757
	$mi_nname = $data[1];
758
	$mi_vname = $data[2];
759
 
760
	echo "<p class=\"cry\">Projekt: $wd_prnum $pr_name<br>\nProjektleiter: $mi_vname $mi_nname</p>\n";
761
	$query = "select mi_vname, mi_nname from mitarbeiter where mi_num = $user";
762
 
763
	if (!($result = QueryDB($db, $query))) {
764
	   pg_close($db);
765
	   return;
766
	}
767
 
768
	$data = pg_fetch_row($result, 0);
769
	$mi_vname = $data[0];
770
	$mi_nname = $data[1];
771
 
772
	echo "<form name=\"tatsache\" action=\"ist.php\" method=\"post\">\n";
773
	echo "<input type=\"hidden\" name=\"headline\" value=\"10\">\n";
774
	echo "<input type=\"hidden\" name=\"menu\" value=\"$menu\">\n";
775
	echo "<input type=\"hidden\" name=\"func\" value=\"SaveIST\">\n";
776
	echo "<input type=\"hidden\" name=\"wd_prnum\" value=\"$wd_prnum\">\n";
777
	echo "<input type=\"hidden\" name=\"user\" value=\"$user\">\n";
778
	echo "<input type=\"hidden\" name=\"superall\" value=\"$superall\">\n";
779
	echo "<input type=\"hidden\" name=\"pmlg\" value=\"$pmlg\">\n";
780
 
781
	if (isset($wd_num) && $wd_num > 0) {
782
	   echo "<input type=\"hidden\" name=\"wd_num\" value=\"$wd_num\">\n";
783
	} else {
784
	   if (!isset($datum))
785
	      $datum = $_REQUEST['datum'];
786
 
787
	   $wd_hours = $_REQUEST['wd_hours'];
788
	   $wd_phase = $_REQUEST['wd_phase'];
789
	   $wd_task = $_REQUEST['wd_task'];
790
	   $wd_rk = $_REQUEST['wd_rk'];
791
	   $wd_verr = $_REQUEST['wd_verr'];
792
 
793
	   if (isset($wd_hours) && $wd_hours > 0)
794
	      echo "<input type=\"hidden\" name=\"edit\" value=\"1\">\n";
795
	   else
796
	      echo "<input type=\"hidden\" name=\"edit\" value=\"0\">\n";
797
	}
798
 
799
	$VD = GetVisualDate ($dtformatshort, $pmlg);
800
 
801
	if ($pmlg)
802
	   $mx = 7;
803
	else
804
	   $mx = 10;
805
?>
806
<table class="input">
807
   <tr>
808
      <td>IST-Erfassung f&uuml;r:</td>
809
      <td><u><? echo "$mi_vname $mi_nname"; ?></u></td>
810
   </tr>
811
   <tr>
812
      <td>Datum (<? echo "$VD"; ?>):</td>
813
      <td><input type="text" name="datum" class="inputmust" value="<? echo "$datum"; ?>" size=<? echo "$mx"; ?> maxlength=<? echo "$mx"; ?>>
814
<?	if (!$pmlg) {?>
815
          <input type="button" value="..." onClick="javascript:open_window('calendar.php?header=1&target=window.opener.document.tatsache.datum', 'Calendar', 200, 250)">
816
<?	}?>
817
      </td>
818
   </tr>
819
   <tr>
820
<?
821
	if ($pmlg)
822
	   echo "      <td>Geleistete Tage:</td>\n";
823
	else
824
	   echo "      <td>Geleistete Stunden:</td>\n";
825
?>
826
      <td><input type="text" class="inputmust" name="wd_hours" value="<? echo "$wd_hours"; ?>" size=6 maxlength=6></td>
827
   </tr>
828
<?php
829
	if ($phase == 1) {
830
	   echo "<tr><td>Projektphase:</td>\n";
831
	   $query = "select kp_num, kp_phase from key_phase order by kp_num";
832
	   $result = QueryDB($db, $query);
833
 
834
	   if (!result) {
835
	      pg_close($db);
836
	      return;
837
	   }
838
 
839
	   $numrows = pg_num_rows($result);
840
	   $row = 0;
841
	   echo "<td><select name=\"wd_phase\">\n";
842
 
843
	   while ($row < $numrows) {
844
	      $data = pg_fetch_row($result, $row);
845
	      $kp_num = $data[0];
846
	      $kp_phase = $data[1];
847
 
848
              if ($wd_phase == $kp_num)
849
	         echo "<option value=\"$kp_num\" selected>$kp_num $kp_phase</option>\n";
850
	      else
851
	         echo "<option value=\"$kp_num\">$kp_num $kp_phase</option>\n";
852
 
853
	      $row++;
854
	   }
855
 
856
	   echo "</select></td></tr>\n";
857
	} else {
858
	   $wd_phase = 0;
859
	}
860
?>
861
  <tr>
862
      <td>Taskzuordnung:</td>
863
      <td><select name="wd_task">
864
<?php
865
	$query = "select pl_num from plan where pl_prnum = $wd_prnum and ";
866
	$query .= "pl_status in (2,3,4) order by pl_lfd desc";
867
	$result = QueryDB($db, $query);
868
 
869
	if (!$result) {
870
	   pg_close($db);
871
	   return;
872
	}
873
 
874
	$data = pg_fetch_row($result, 0);
875
	$pl_num = $data[0];
876
 
877
	SelectTask($pl_num, false, $wd_task);
878
?>
879
          </select>
880
      </td>
881
   </tr>
882
   <tr>
883
      <td>IST-Zeit Verrechenbar?</td>
884
      <td><input type="checkbox" name="wd_verr" <? if (!isset($wd_verr) || $wd_verr == true) echo "checked"; ?>></td>
885
   </tr>
886
<?
887
	if (!$pmlight) {?>
888
   <tr>
889
      <td>Reisekosten angefallen?</td>
890
      <td><input type="checkbox" name="wd_rk" <? if ($wd_rk == 1) echo "checked"; ?>></td>
891
   </tr>
892
   <tr>
893
      <td valign="top">Arbeitsbeschreibung:</td>
894
      <td><textarea name="wd_text" rows=5 cols=60><? echo "$wd_text"; ?></textarea></td>
895
   </tr>
896
<?
897
	} else {
898
	   $wd_rk = 0;
899
	   $wd_text = "";
900
	}?>
901
</table>
902
<table class="indent"><tr><td>
903
<?
904
ButtonSubmit("Daten senden", "tatsache");
905
//<input type="submit" name="submit" value="Daten senden"> <input type="reset">
906
?>
907
</td></tr></table>
908
</form>
909
<?php
910
}
911
 
912
function AskOldIST () {
913
	global $phase;
914
 
915
	$headline = $_REQUEST['headline'];
916
	$menu = $_REQUEST['menu'];
917
	$wd_num = $_REQUEST['wd_num'];
918
	$wd_prnum = $_REQUEST['wd_prnum'];
919
	$datum = $_REQUEST['datum'];
920
	$wd_hours = $_REQUEST['wd_hours'];
921
	$wd_task = $_REQUEST['wd_task'];
922
	$wd_rk = $_REQUEST['wd_rk'];
923
	$wd_text = $_REQUEST['wd_text'];
924
	$wd_verr = $_REQUEST['wd_verr'];
925
	$user = $_REQUEST['user'];
926
	$superall = $_REQUEST['superall'];
927
	$pmlg = $_REQUEST['pmlg'];
928
	$edit = $_REQUEST['edit'];
929
 
930
	if ($phase)
931
	   $wd_phase = $_REQUEST['wd_phase'];
932
	else
933
	   $wd_phase = 0;
934
 
935
	if (!isset($wd_rk))
936
	   $wd_rk = 0;
937
	else
938
	   $wd_rk = 1;
939
 
940
	$nav = "wd_num=$wd_num&wd_prnum=$wd_prnum&menu=$menu&";
941
	$nav .= "datum=$datum&wd_hours=$wd_hours&wd_phase=$wd_phase&";
942
	$nav .= "wd_task=$wd_task&wd_rk=$wd_rk&wd_text=$wd_text&wd_verr=$wd_verr&";
943
	$nav .= "headline=$headline&user=$user&superall=$superall&";
944
	$nav .= "pmlg=$pmlg&func=SaveISTreal&edit=$edit";
945
?>
946
<br>
947
<form name="Alarm" method="post">
948
<table border=2 class="alarm">
949
   <tr><td colspan=2><big>Warnung!</big><br><br>
950
           Sie versuchen einen Aufwand f&uuml;r einen Zeitraum zu erfassen,
951
	   der schon &auml;lter als 40 Tage ist!<br><br>
952
	   <center>Datum: <? echo "$datum"; ?></center><br><br>
953
	   Wollen Sie wirklich diesen Aufwand
954
	   f&uuml;r dieses Datum erfassen?<br>
955
      </td>
956
   </tr>
957
   <tr>
958
      <td><center><input type="button" name="yes" value="Erfassen" onClick="javascript:MoveTo('ist.php','yes=yes&<? echo "$nav"; ?>')"></center></td>
959
      <td><center><input type="button" name="no" value="Abbruch" onClick="javascript:MoveTo('ist.php','no=no&<? echo "$nav"; ?>')"></center></td>
960
   </tr>
961
</table>
962
</form>
963
<?php
964
}
965
 
966
# Folgende Funktion speichert einen IST-Aufwand. Es werden allerdings
967
# zuvor einige Plausibilitaetspruefungen durchgefuehrt um sicher zu
968
# stellen, das nicht auf einen Task gebucht wird, dessen Zeit bereits
969
# aufgebraucht ist.
970
#
971
function SaveIST() {
972
	global $rstufe;
973
	global $unum;
974
	global $phase;
975
	global $leneinheit;
976
	global $pmlight;
977
 
978
	if ($rstufe < 1 || $rstufe > 3) {
979
	   Error("Berechtigungsfehler!<br>\n");
980
	   return false;
981
	}
982
 
983
	$wd_prnum = $_REQUEST['wd_prnum'];
984
	$wd_num = $_REQUEST['wd_num'];
985
	$datum = $_REQUEST['datum'];
986
	$wd_hours = $_REQUEST['wd_hours'];
987
	$wd_hours = str_replace(",", ".", $wd_hours);
988
 
989
	if ($phase)
990
	   $wd_phase = $_REQUEST['wd_phase'];
991
	else
992
	   $wd_phase = 0;
993
 
994
	$wd_task = $_REQUEST['wd_task'];
995
	$wd_rk = $_REQUEST['wd_rk'];
996
	$wd_text = $_REQUEST['wd_text'];
997
	$wd_verr = $_REQUEST['wd_verr'];
998
	$user = $_REQUEST['user'];
999
	$superall = $_REQUEST['superall'];
1000
	$pmlg = $_REQUEST['pmlg'];
1001
	$edit = $_REQUEST['edit'];
1002
 
1003
	if (!isset($pmlg))
1004
	   $pmlg = $pmlight;
1005
 
1006
	if (!isset($edit))
1007
	   $edit = 0;
1008
 
1009
	$err = 0;
1010
	$db = OpenDB();
1011
 
1012
	if (!isset($wd_prnum) || $wd_prnum <= 0) {
1013
	   Error("Error: Interner Fehler: Projektnummer fehlt!<br>");
1014
	   $err = 1;
1015
	}
1016
 
1017
	if ($pmlg && (!isset($wd_hours) || $wd_hours < 0.1 || $wd_hours > 31)) {
1018
	   Error("Error: Die Anzahl Tage muss im Bereich 0.1 bis 31 Tage sein!");
1019
	   $err = 1;
1020
	} else if (!$pmlg && (!isset($wd_hours) || $wd_hours < 1 || $wd_hours > 24)) {
1021
	   Error("Error: Die Anzahl Stunden m&uuml;ssen im Bereich 1 bis 24 sein!");
1022
	   $err = 1;
1023
	}
1024
 
1025
	if (!isset($datum)) {
1026
	   Error("Error: Sie m&uuml;ssen ein Datum angeben!");
1027
	   $err = 1;
1028
	} else if ($pmlg) {
1029
	   if (strlen($datum) < 5 || strlen($datum) > 7) {
1030
	      Error("Error: Ung&uuml;ltige Periode!");
1031
	      $err = 1;
1032
	   } else {
1033
	      $dt = explode(".", $datum);
1034
	      $mon = $dt[0];
1035
	      $year = $dt[1];
1036
 
1037
	      if ($year < 50)
1038
	         $year += 2000;
1039
	      else if ($year >= 50 && $year < 100)
1040
	         $year += 1900;
1041
 
1042
	      $datum = "1.$mon.$year";
1043
	   }
1044
	} else if (strlen($datum) < 8 || strlen($datum) > 10) {
1045
	   Error("Error: Ung&uuml;ltiges Datum!");
1046
	   $err = 1;
1047
	} else if (strlen($datum == 8)) {
1048
	   $dt = explode(".", $datum);
1049
	   $day = $dt[0];
1050
	   $mon = $dt[1];
1051
	   $year = $dt[2];
1052
 
1053
	   if ($year < 50)
1054
	      $year += 2000;
1055
	   else if ($year >= 50 && $year < 100)
1056
	      $year += 1900;
1057
 
1058
	   $datum = "$day.$mon.$year";
1059
	}
1060
 
1061
	if (!isset($wd_task) || $wd_task <= 0) {
1062
	   Error("Error: Sie haben keinen Task ausgew&auml;hlt!<br>");
1063
	   $err = 1;
1064
	}
1065
 
1066
	if (!isset($user) || $user <= 0)
1067
	   $user = $unum;
1068
 
1069
	if ($err) {
1070
	   return false;
1071
	}
1072
 
1073
	if (isset($wd_rk) && ($wd_rk == 1 || $wd_rk == "on" || $wd_rk == "true" || $wd_rk == "t"))
1074
	   $wd_rk = 1;
1075
	else
1076
	   $wd_rk = 0;
1077
 
1078
	if (isset($wd_verr) && ($wd_verr == 1 || $wd_verr == "on" || $wd_verr == "true" || $wd_verr == "t"))
1079
	   $wd_verr = "true";
1080
	else
1081
	   $wd_verr = "false";
1082
 
1083
	if (!isset($wd_text))
1084
	   $wd_text = "";
1085
 
1086
	$dt = explode(".", $datum);
1087
 
1088
	if ($pmlg) {
1089
	   $fdate = mktime(0, 0, 0, $dt[1], 1, $dt[2]);
1090
	   $days = daysinmonth($dt[1], $dt[2]);
1091
	   $ldate = mktime(23, 59, 59, $dt[1], $days, $dt[2]);
1092
	   $wd_datum = $fdate;
1093
	} else {
1094
	   $wd_datum = mktime(0, 0, 0, $dt[1], $dt[0], $dt[2]);
1095
	}
1096
 
1097
	if (isset($wd_num) && $wd_num > 0) {
1098
	   $t = time() - (86400 * 40);
1099
	   $func = $_REQUEST['func'];
1100
 
1101
	   if (!$edit && (!isset($func) || $func != "SaveISTreal") && $wd_datum < $t) {
1102
	      pg_close($db);
1103
	      AskOldIST();
1104
	      require('footer.inc');
1105
	      exit;
1106
	   }
1107
 
1108
	   QueryDB($db, "begin");
1109
	   $query = "update wdone set wd_datum = $wd_datum,";
1110
 
1111
	   if ($phase)
1112
	      $query .= "wd_hours = $wd_hours, wd_phase = $wd_phase,";
1113
	   else
1114
	      $query .= "wd_hours = $wd_hours, ";
1115
 
1116
	   $query .= "wd_task = $wd_task, wd_rk = $wd_rk,";
1117
	   $query .= "wd_text = '$wd_text', wd_verr = $wd_verr ";
1118
	   $query .= "where wd_num = $wd_num";
1119
	   $result = QueryDB($db, $query);
1120
 
1121
	   if (!result) {
1122
	      QueryDB($db, "rollback");
1123
	      pg_close($db);
1124
	      return false;
1125
	   }
1126
 
1127
	   QueryDB($db, "commit");
1128
	   return true;
1129
	}
1130
 
1131
	$t = time() - (86400 * 40);
1132
	$func = $_REQUEST['func'];
1133
 
1134
	if (!$edit && (!isset($func) || $func != "SaveISTreal") && $wd_datum < $t) {
1135
	   pg_close($db);
1136
	   AskOldIST();
1137
	   require('footer.inc');
1138
	   exit;
1139
	}
1140
 
1141
	# Es soll mindestens ein neuer Datensatz eingefuegt werden.
1142
	# Wenn wir die light Version verwenden, wurden nicht Stunden
1143
	# fuer einen bestimmten Tag eingegeben, sondern Tage fuer eine
1144
	# bestimmte Periode. Diese Tage muessen nun auf die Periode
1145
	# aufgeteilt werden, wobei bereits vorhandene Tage in der Periode
1146
	# beruecksichtigt werden muessen und nicht doppelt belegt werden
1147
	# sollten. Jedenfalls so lange nicht, wie Tage in der Periode
1148
	# frei zur Verfuegung stehen.
1149
	#
1150
	# Finden des naechsten freien Tags in der Periode bei light Version.
1151
	if ($pmlg) {
1152
	   if ($edit) {
1153
	      QueryDB($db, "begin");
1154
	      $query = "delete from wdone where wd_task = $wd_task and ";
1155
	      $query .= "wd_prnum = $wd_prnum and wd_minum = $user and ";
1156
	      $query .= "wd_datum between $fdate and $ldate";
1157
 
1158
	      if (!QueryDB($db, $query)) {
1159
	         QueryDB($db, "rollback");
1160
	         pg_close($db);
1161
	         return false;
1162
	      }
1163
 
1164
	      QueryDB($db, "commit");
1165
	   }
1166
 
1167
	   $query = "select wd_datum from wdone where ";
1168
	   $query .= "wd_task = $wd_task and wd_prnum = $wd_prnum and ";
1169
	   $query .= "wd_minum = $user and wd_datum >= $fdate and ";
1170
	   $query .= "wd_datum <= $ldate ";
1171
	   $query .= "order by wd_datum desc";
1172
 
1173
	   $result = QueryDB($db, $query);
1174
 
1175
	   if (!$result) {
1176
	      pg_close($db);
1177
	      return false;
1178
	   }
1179
 
1180
	   $numrows = pg_num_rows($result);
1181
 
1182
	   if ($numrows > 0) {
1183
	      $data = pg_fetch_row($result, 0);
1184
	      $dt = $data[0];
1185
	      $day = date("j", $dt) + 1;
1186
	   }
1187
	   else
1188
	      $day = 1;
1189
 
1190
	   $query = "select co_wdone from counter";
1191
	   $result = QueryDB($db, $query);
1192
	   $data = pg_fetch_row($result, 0);
1193
	   $co_wdone = $data[0];
1194
 
1195
	   $j = 0;
1196
	   $wd_hours *= $leneinheit;
1197
	   QueryDB($db, "begin");
1198
 
1199
	   while ($j < $wd_hours) {
1200
	      if ($day > $days)
1201
		 $day = 1;
1202
 
1203
	      $dt = mktime(0, 0, 0, date("n", $wd_datum), $day, date("Y", $wd_datum));
1204
	      $co_wdone++;
1205
 
1206
	      if (($wd_hours - $j) < $leneinheit)
1207
	         $h = $wd_hours - $j;
1208
	      else
1209
	         $h = $leneinheit;
1210
 
1211
	      $query = "insert into wdone (wd_num, wd_prnum, wd_minum, wd_datum,";
1212
	      $query .= "wd_hours, wd_phase, wd_task, wd_rk, wd_edit, wd_text, wd_verr) ";
1213
	      $query .= "values ($co_wdone, $wd_prnum, $user, $dt,";
1214
	      $query .= "$h, $wd_phase, $wd_task, $wd_rk, true, '$wd_text', $wd_verr)";
1215
	      $result = QueryDB($db, $query);
1216
 
1217
	      if (!$result) {
1218
		 QueryDB($db, "rollback");
1219
		 pg_close($db);
1220
		 return false;
1221
	      }
1222
 
1223
	      $day++;
1224
	      $j += $leneinheit;
1225
	   }
1226
 
1227
	   $query = "update counter set co_wdone = $co_wdone";
1228
	   $result = QueryDB($db, $query);
1229
 
1230
	   if (!$result) {
1231
	      QueryDB($db, "rollback");
1232
	      pg_close($db);
1233
	      return false;
1234
	   }
1235
 
1236
	   QueryDB($db, "commit");
1237
	   pg_close($db);
1238
	   return true;
1239
	}
1240
 
1241
	$query = "select co_wdone from counter";
1242
	$result = QueryDB($db, $query);
1243
	$data = pg_fetch_row($result, 0);
1244
	$co_wdone = $data[0] + 1;
1245
 
1246
	QueryDB($db, "begin");
1247
	$query = "insert into wdone (wd_num, wd_prnum, wd_minum, wd_datum,";
1248
	$query .= "wd_hours, wd_phase, wd_task, wd_rk, wd_edit, wd_text, wd_verr) ";
1249
	$query .= "values ($co_wdone, $wd_prnum, $user, $wd_datum,";
1250
	$query .= "$wd_hours, $wd_phase, $wd_task, $wd_rk, true, '$wd_text', $wd_verr)";
1251
	$result = QueryDB($db, $query);
1252
 
1253
	if (!$result) {
1254
	   QueryDB($db, "rollback");
1255
	   pg_close($db);
1256
	   return false;
1257
	}
1258
 
1259
	$query = "update counter set co_wdone = $co_wdone";
1260
	$result = QueryDB($db, $query);
1261
 
1262
	if (!$result) {
1263
	   QueryDB($db, "rollback");
1264
	   pg_close($db);
1265
	   return false;
1266
	}
1267
 
1268
	QueryDB($db, "commit");
1269
	pg_close($db);
1270
	return true;
1271
}
1272
 
1273
function AskISTdel () {
1274
	global $pmlight;
1275
 
1276
	$headline = $_REQUEST['headline'];
1277
	$menu = $_REQUEST['menu'];
1278
	$wd_num = $_REQUEST['wd_num'];
1279
	$wd_prnum = $_REQUEST['wd_prnum'];
1280
 
1281
	if ($pmlight) {
1282
	   $wd_minum = $_REQUEST['wd_minum'];
1283
	   $wd_datum = $_REQUEST['wd_datum'];
1284
	   $wd_task = $_REQUEST['wd_task'];
1285
	   $wd_prnum = $_REQUEST['wd_prnum'];
1286
	}
1287
 
1288
	$user = $_REQUEST['user'];
1289
	$superall = $_REQUEST['superall'];
1290
 
1291
	$nav = "wd_num=$wd_num&wd_prnum=$wd_prnum&user=$user&menu=$menu&";
1292
	$nav .= "superall=$superall&headline=$headline&func=DeleteIST&";
1293
	$nav .= "user=$user";
1294
 
1295
	if ($pmlight)
1296
	   $nav .= "&wd_minum=$wd_minum&wd_datum=$wd_datum&wd_task=$wd_task&wd_prnum=$wd_prnum";
1297
?>
1298
<br>
1299
<form name="Alarm" method="post">
1300
<table border=2 class="alarm">
1301
   <tr><td colspan=2><big>Warnung!</big><br><br>
1302
           Sie sind im Begriff einen erfassten Aufwand zu
1303
	   l&ouml;schen!<br><br>
1304
	   Wollen Sie wirklich diesen Aufwand
1305
	   unwiederbringlich l&ouml;schen?<br>
1306
      </td>
1307
   </tr>
1308
   <tr>
1309
      <td><center><input type="button" name="yes" value="L&ouml;schen" onClick="javascript:MoveTo('ist.php','yes=yes&<? echo "$nav"; ?>')"></center></td>
1310
      <td><center><input type="button" name="no" value="Abbruch" onClick="javascript:MoveTo('ist.php','no=no&<? echo "$nav"; ?>')"></center></td>
1311
   </tr>
1312
</table>
1313
</form>
1314
<?php
1315
}
1316
 
1317
function DeleteIST() {
1318
	global $pmlight;
1319
 
1320
	$wd_num = $_REQUEST['wd_num'];
1321
 
1322
	if (!$pmlight && (!isset($wd_num) || $wd_num <= 0)) {
1323
	   Error("Interner Fehler: Zu l&ouml;schende Datensatznummer fehlt!<br>");
1324
	   return false;
1325
	}
1326
 
1327
	if ($pmlight) {
1328
	   $wd_minum = $_REQUEST['wd_minum'];
1329
	   $wd_datum = $_REQUEST['wd_datum'];
1330
	   $wd_task = $_REQUEST['wd_task'];
1331
	   $wd_prnum = $_REQUEST['wd_prnum'];
1332
 
1333
	   if (!isset($wd_prnum) || $wd_prnum <= 0) {
1334
	      Error("Interner Fehler: Projektnummer fehlt!");
1335
	      return false;
1336
	   }
1337
 
1338
	   if (!isset($wd_minum) || $wd_minum <= 0) {
1339
	      Error("Interner Fehler: Mitarbeiternummer fehlt!");
1340
	      return false;
1341
	   }
1342
 
1343
	   if (!isset($wd_datum) || $wd_datum <= 0) {
1344
	      Error("Interner Fehler: Periode fehlt!");
1345
	      return false;
1346
	   }
1347
 
1348
	   $mon = date("n", $wd_datum);
1349
	   $year = date("Y", $wd_datum);
1350
	   $fdate = mktime(0, 0, 0, $mon, 1, $year);
1351
	   $days = daysinmonth($mon, $year);
1352
	   $ldate = mktime(23, 59, 59, $mon, $days, $year);
1353
	}
1354
 
1355
	$db = OpenDB();
1356
 
1357
	if (!$pmlight) {
1358
	   $query = "delete from wdone where wd_num = $wd_num";
1359
	} else {
1360
	   $query = "delete from wdone where wd_minum = $wd_minum and ";
1361
	   $query .= "wd_datum between $fdate and $ldate and ";
1362
	   $query .= "wd_task = $wd_task and wd_prnum = $wd_prnum";
1363
	}
1364
 
1365
	if (!TQueryDB($db, $query)) {
1366
	   pg_close($db);
1367
	   return false;
1368
	}
1369
 
1370
	pg_close($db);
1371
	return true;
1372
}
1373
 
1374
if (isset($func)) {
1375
   if ($func == "ShowIST") {
1376
      $pr_num = $_REQUEST['pr_num'];
1377
      $user = $_REQUEST['user'];
1378
 
1379
      if (isset($user) && $user > 0)
1380
	 $all = true;
1381
      else
1382
	 $all = false;
1383
 
1384
      ShowIST($pr_num, $all);
1385
   }
1386
 
1387
   if ($func == "FormShowIST") {
1388
      $wd_prnum = $_REQUEST['wd_prnum'];
1389
      $wd_num = $_REQUEST['wd_num'];
1390
      FormIST($wd_prnum, $wd_num);
1391
   }
1392
 
1393
   if ($func == "FormIST") {
1394
      $pr_num = $_REQUEST['wd_prnum'];
1395
      FormIST($pr_num);
1396
   }
1397
 
1398
   if ($func == "setsuper" && ($rstufe == 1 || $rstufe == 2)) {
1399
      $pr_num = $_REQUEST['wd_prnum'];
1400
      ShowIST($pr_num, true);
1401
   } else if ($func == "setsuper") {
1402
      Error("Ihnen fehlt eine Berechtigung!<br>");
1403
      $pr_num = $_REQUEST['wd_prnum'];
1404
      ShowIST($pr_num, false);
1405
   }
1406
 
1407
   if ($func == "SaveIST") {
1408
      $user = $_REQUEST['user'];
1409
 
1410
      if (isset($user) && $user > 0)
1411
	 $all = true;
1412
      else
1413
	 $all = false;
1414
 
1415
      if (!SaveIST()) {
1416
         $pr_num = $_REQUEST['wd_prnum'];
1417
	 FormIST($pr_num);
1418
      } else {
1419
         $wd_prnum = $_REQUEST['wd_prnum'];
1420
         ShowIST($wd_prnum, $all);
1421
      }
1422
   }
1423
 
1424
   if ($func == "AskISTdel") {
1425
      AskISTdel();
1426
   }
1427
 
1428
   if ($func == "DeleteIST") {
1429
      if ($_REQUEST['yes'] == "yes")
1430
         DeleteIST();
1431
 
1432
      $wd_prnum = $_REQUEST['wd_prnum'];
1433
      ShowIST($wd_prnum);
1434
   }
1435
 
1436
   if ($func == "SaveISTreal") {
1437
      $user = $_REQUEST['user'];
1438
 
1439
      if (isset($user) && $user > 0)
1440
	 $all = true;
1441
      else
1442
	 $all = false;
1443
 
1444
      if ($_REQUEST['yes'] == "yes") {
1445
         if (!SaveIST()) {
1446
            $pr_num = $_REQUEST['wd_prnum'];
1447
	    FormIST($pr_num);
1448
         } else {
1449
            $wd_prnum = $_REQUEST['wd_prnum'];
1450
            ShowIST($wd_prnum, $all);
1451
	 }
1452
      } else {
1453
         $wd_prnum = $_REQUEST['wd_prnum'];
1454
	 ShowIST($wd_prnum, $all);
1455
      }
1456
   }
1457
}
1458
 
1459
require('footer.inc');
1460
?>