b98b48cff6d21a53ae3a49e7261f8011c5f60e41
[misc/kostenrechnung] / masks / arbeitsberichte.php
1 <?php
2
3 $jscode[] = <<<EOC
4
5 function select_gebiet_callback(data)
6 {
7     var obj = document.getElementById('edit_kostenstelle');
8     if (!obj) return;
9
10     obj.options.length = 0;
11
12     for (var i=0; i < data.info.length; i++)
13       obj.options[i] = new Option(data.info[i].kostenstelle,data.info[i].id,false,false);
14 }
15
16 function select_group(obj)
17 {
18   setvar(obj,'gebiet',false,false);
19
20   get_info('kostenstellen', {gebiet: obj.options[obj.selectedIndex].value}, select_gebiet_callback);
21 }
22
23 function select_geraet_callback(data)
24 {
25     var obj = document.getElementById('edit_anbaugeraet');
26     if (!obj) return;
27
28     obj.options.length = 0;
29
30     for (var i=0; i < data.info.length; i++)
31       obj.options[i] = new Option(data.info[i].anbaugeraet,data.info[i].id,false,false);
32 }
33
34 function select_geraet(obj)
35 {
36   setvar(obj,'geraet',false,false);
37
38   get_info('anbaugeraete', {geraet: obj.options[obj.selectedIndex].value}, select_geraet_callback);
39 }
40 EOC;
41
42 function first_gebiet()
43 {
44   $sql = "SELECT id FROM gebiet ORDER BY gebiet LIMIT 1";
45
46   $sth = pg_query($sql);
47
48   if ($sth === false) return 0;
49
50   if ($row = pg_fetch_assoc($sth))
51     return $row['id'];
52
53   return 0;
54 }
55
56 if (empty($_SESSION['arbeitsberichte.gebiet'])) $_SESSION['arbeitsberichte.gebiet'] = first_gebiet();
57 if (empty($_SESSION['arbeitsberichte.geraet'])) $_SESSION['arbeitsberichte.geraet'] = 0;
58
59 $mask = array(
60               'table' => 'einsatz',
61               'title' => 'Arbeitsberichte',
62               'subtitle' => 'Eingabe und Übersicht',
63               'join' => array(
64                               'einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id',
65                               'personal ON einsatzpersonal.personal = personal.id',
66                               'einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id',
67                               'gebiet ON einsatz.gebiet = gebiet.id',
68                               'gerate ON einsatzgeraete.geraet = gerate.id',
69                               'anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id',
70                               'arbeitsarten ON einsatz.arbeiten = arbeitsarten.id',
71                               'kostenstellen ON einsatz.kostenstelle = kostenstellen.id',
72                               ),
73               'where' => "arbeitsarten.arbeitsart <> 'Urlaub' AND arbeitsarten.arbeitsart <> 'Krank' AND arbeitsarten.arbeitsart <> 'Sonstige Fehltage'",
74               'variables' => array(
75                                    'gebiet' => array(),
76                                    'geraet' => array(),
77                                    ),
78               'list' => array(
79                               'id' => array(
80                                             'name' => 'ID',
81                                             'visible' => false,
82                                             'sql' => 'einsatz.id',
83                                             ),
84                               'datum' => array(
85                                             'name' => 'Datum',
86                                             'type' => 'date',
87                                             'width' => 70,
88                                             ),
89                               'kostenstelle' => array(
90                                             'name' => 'Gewässer',
91                                             'sql' => "kostenstellen.kostenstelle",
92                                             'width' => 200,
93                                             'specs' => "filterUI: 's'",
94                                             ),
95                               'gebiet' => array(
96                                             'name' => 'Gebiet',
97                                             'sql' => "gebiet.gebiet",
98                                             'width' => 150,
99                                             'specs' => "filterUI: 's'",
100                                             'visible' => false,
101                                             ),
102                               'name' => array(
103                                             'name' => 'Personal',
104                                             'sql' => "personal.vorname || ' ' || personal.name",
105                                             'width' => 150,
106                                             'specs' => "filterUI: 's'",
107                                             'visible' => false,
108                                             ),
109                               'geraet' => array(
110                                             'name' => 'Gerät',
111                                             'sql' => 'gerate.geraet',
112                                             'width' => 150,
113                                             'specs' => "filterUI: 's'",
114                                             ),
115                               'anbaugeraet' => array(
116                                             'name' => 'Anbaugerät',
117                                             'sql' => 'anbaugeraete.anbaugeraet',
118                                             'width' => 150,
119                                             'specs' => "filterUI: 's'",
120                                             ),
121                               'personalstunden' => array(
122                                             'name' => 'Mitarbeiterstunden',
123                                             'type' => 'number',
124                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
125                                             'sql' => 'einsatzpersonal.stunden',
126                                             'width' => 60,
127                                             'visible' => false,
128                                             ),
129                               'geraetstunden' => array(
130                                             'name' => 'Gerätstunden',
131                                             'type' => 'number',
132                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
133                                             'sql' => 'einsatzgeraete.stunden',
134                                             'width' => 60,
135                                             'visible' => false,
136                                             ),
137                               ),
138               'edit' => array(
139                               'datum' => array(
140                                             'name' => 'Datum',
141                                             'type' => 'date',
142                                             ),
143                               'personal' => array(
144                                             'name' => 'Mitarbeiter',
145                                             'type' => 'select',
146                                             'options' => "SELECT id,vorname || ' ' || name AS text FROM personal ORDER BY text",
147                                             ),
148                               'gebiet' => array(
149                                             'name' => 'Gebiet',
150                                             'type' => 'select',
151                                             'options' => "SELECT id,gebiet AS text FROM gebiet ORDER BY text",
152                                             'selected' => $_SESSION['arbeitsberichte.gebiet'],
153                                             'onchange' => 'select_group(this)',
154                                             ),
155                               'kostenstelle' => array(
156                                             'name' => 'Gewässer',
157                                             'type' => 'select',
158                                             'options' => "SELECT id,kostenstelle AS text FROM kostenstellen WHERE gebiet = " .
159                                                          intval($_SESSION['arbeitsberichte.gebiet']) .
160                                                          " ORDER BY text",
161                                             ),
162                               'geraet' => array(
163                                             'name' => 'Gerät',
164                                             'type' => 'select',
165                                             'options' => "SELECT id,geraet AS text FROM gerate ORDER BY text",
166                                             'selected' => $_SESSION['arbeitsberichte.geraet'],
167                                             'onchange' => 'select_geraet(this)',
168                                             ),
169                               'anbaugeraet' => array(
170                                             'name' => 'Anbaugerät',
171                                             'type' => 'select',
172                                             'options' => "SELECT anbaugeraete.id,anbaugeraet AS text FROM anbaugeraete " . 
173                                                          "JOIN gerate ON anbaugeraete.geraetetyp = gerate.geraetetyp " .
174                                                          "WHERE gerate.id = " . intval($_SESSION['arbeitsberichte.geraet']) . " " .
175                                                          "ORDER BY text",
176                                             ),
177                               'arbeiten' => array(
178                                             'name' => 'Arbeitsart',
179                                             'type' => 'select',
180                                             'options' => "SELECT id,arbeitsart AS text FROM arbeitsarten ORDER BY text",
181                                             ),
182                               'stunden' => array(
183                                             'name' => 'Stunden',
184                                             'type' => 'decimal',
185                                             'size' => 5,
186                                             ),
187                               'geraetstunden' => array(
188                                             'name' => 'Gerätstunden',
189                                             'type' => 'decimal',
190                                             'size' => 5,
191                                             ),
192                               'ordnung' => array(
193                                             'name' => 'Gewässerordnung',
194                                             'type' => 'select',
195                                             'options' => "SELECT id,name AS text FROM ordnungen ORDER BY text",
196                                             ),
197                               'akkord' => array(
198                                             'name' => 'Akkord',
199                                             'type' => 'boolean',
200                                             ),
201                               'bemerkung' => array(
202                                             'name' => 'Bemerkung',
203                                             'type' => 'textarea',
204                                             ),
205                               ),
206               'info' => array(
207                               'kostenstellen' => array(
208                                             'sql' => 'SELECT id,kostenstelle FROM kostenstellen WHERE gebiet = {gebiet}',
209                                             ),
210                               'anbaugeraete' => array(
211                                             'sql' => 'SELECT anbaugeraete.id,anbaugeraet FROM anbaugeraete ' .
212                                                      'JOIN gerate ON anbaugeraete.geraetetyp = gerate.geraetetyp ' .
213                                                      'WHERE gerate.id = {geraet}',
214                                             ),
215                                    ),
216               );
217
218 ?>