Delete field
[misc/kostenrechnung] / masks / overview_stunden.php
1 <?php
2
3 include_once($_SESSION['sys']['basedir'].'/lib/overview_utils.php');
4
5 if (empty($_SESSION['overview_stunden.year'])) $_SESSION['overview_stunden.year'] = 0;
6
7 $details = <<<EOC
8 <div style="padding-left: 3px; margin-top: -10px;">
9 <b>Gebiet</b>: <span id="detail_gebiet"></span><br>
10 <b>Gewässer</b>: <span id="detail_kostenstelle"></span><br>
11 <b>Länge</b>: <span id="detail_laenge"></span><br>
12 <b>Gesamtstunden</b>: <span id="detail_gewaesserstunden"></span><br>
13 <b>Personalstunden</b>: <span id="detail_personalstunden"></span><br>
14 <b>Gerätestunden</b>: <span id="detail_geraetestunden"></span><br>
15 <b>Gewässer gereinigt</b>: <span id="detail_gereinigt"></span>
16 </div>
17 EOC;
18
19 $mask = array(
20               'table' => 'einsatz',
21               'title' => 'Stundenübersicht nach Kostenstellen',
22               'join' => array(
23                               'arbeitsarten ON einsatz.arbeiten = arbeitsarten.id',
24                               'einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id',
25                               'einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id',
26                               'gebiet ON einsatz.gebiet = gebiet.id',
27                               'kostenstellen ON einsatz.kostenstelle = kostenstellen.id',
28                               'personal ON einsatzpersonal.personal = personal.id',
29                               'gerate ON einsatzgeraete.geraet = gerate.id',
30                               'anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id',
31                               ),
32               'where' => "arbeitsarten.arbeitsart <> 'Urlaub' AND arbeitsarten.arbeitsart <> 'Krank' AND arbeitsarten.arbeitsart <> 'Sonstige Fehltage'"
33                        . " AND date_part('year', datum) = " . $_SESSION['overview_stunden.year'],
34               'select' => array(
35                                 'title' => 'Auswahl',
36                                 'options' => discover_years(),
37                                 'default' => 'Jahr wählen',
38                                 'selected' => $_SESSION['overview_stunden.year'],
39                                 'onchange' => "setvar(this,'year',select_year_calback,select_year_status)",
40                                 ),
41               'variables' => array(
42                                    'year' => array(),
43                                    ),
44               'list' => array(
45                               'id' => array(
46                                             'name' => 'ID',
47                                             'visible' => false,
48                                             'width' => 60,
49                                             'sql' => 'einsatz.id',
50                                             ),
51                               'datum' => array(
52                                             'name' => 'Datum',
53                                             'type' => 'date',
54                                             'width' => 70,
55                                             ),
56                               'gebiet' => array(
57                                             'name' => 'Gebiet',
58                                             'sql' => "gebiet.gebiet",
59                                             'width' => 150,
60                                             'specs' => "filterUI: 's'",
61                                             ),
62                               'kostenstelle' => array(
63                                             'name' => 'Kostenstelle',
64                                             'sql' => "kostenstellen.kostenstelle",
65                                             'width' => 150,
66                                             'specs' => "filterUI: 's'",
67                                             ),
68                               'arbeitsarten' => array(
69                                             'name' => 'Arbeiten',
70                                             'sql' => "arbeitsarten.arbeitsart",
71                                             'width' => 150,
72                                             'specs' => "filterUI: 's'",
73                                             ),
74                               'personal' => array(
75                                             'name' => 'Mitarbeiter',
76                                             'sql' => "personal.name || ', ' || personal.vorname",
77                                             'width' => 150,
78                                             'specs' => "filterUI: 's'",
79                                             ),
80                               'stunden' => array(
81                                             'name' => 'Mitarbeiterstunden',
82                                             'type' => 'number',
83                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
84                                             'width' => 60,
85                                             'sql' => 'einsatzpersonal.stunden'
86                                             ),
87                               'geraet' => array(
88                                             'name' => 'Gerät',
89                                             'sql' => "gerate.geraet",
90                                             'width' => 150,
91                                             'specs' => "filterUI: 's'",
92                                             ),
93                               'anbaugeraet' => array(
94                                             'name' => 'Anbaugerät',
95                                             'sql' => "anbaugeraete.anbaugeraet",
96                                             'width' => 150,
97                                             'specs' => "filterUI: 's'",
98                                             ),
99                               'geraetstunden' => array(
100                                             'name' => 'Gerätstunden',
101                                             'type' => 'number',
102                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
103                                             'width' => 60,
104                                             'sql' => 'einsatzgeraete.stunden'
105                                             ),
106                               'gesamtstunden' => array(
107                                             'name' => 'Gesamtstunden',
108                                             'type' => 'number',
109                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
110                                             'width' => 60,
111                                             'sql' => 'einsatzpersonal.stunden + einsatzgeraete.stunden',
112                                             ),
113                               ),
114               'details' => array(
115                                  'html' => $details,
116                                  'list' => array(
117                                                  'gebiet' => array('fetch' => fetch_gebiet),
118                                                  'kostenstelle' => array('fetch' => fetch_kostenstelle),
119                                                  'laenge' => array('fetch' => fetch_laenge),
120                                                  'gewaesserstunden' => array('fetch' => fetch_gewaesserstunden),
121                                                  'personalstunden' => array('fetch' => fetch_personalstunden),
122                                                  'geraetestunden' => array('fetch' => fetch_geraetestunden),
123                                                  'gereinigt' => array('fetch' => fetch_gereinigt),
124                                                  ),
125
126                               ),
127               );
128
129 function fetch_gebiet()
130 {
131   $sql = 'SELECT gebiet.gebiet FROM gebiet JOIN einsatz ON einsatz.gebiet = gebiet.id WHERE einsatz.id = ' . intval($_POST['id']);
132   $res = query_db($sql);
133   if ($res === false) return '';
134
135   return $res[0]['gebiet'];
136 }
137
138 function fetch_kostenstelle()
139 {
140   $sql = 'SELECT kostenstellen.kostenstelle FROM kostenstellen JOIN einsatz ON einsatz.kostenstelle = kostenstellen.id WHERE einsatz.id = ' . intval($_POST['id']);
141   $res = query_db($sql);
142   if ($res === false) return '';
143
144   return $res[0]['kostenstelle'];
145 }
146
147 function fetch_laenge()
148 {
149   $sql = 'SELECT laenge FROM kostenstellen JOIN einsatz ON einsatz.kostenstelle = kostenstellen.id WHERE einsatz.id = ' . intval($_POST['id']);
150   $res = query_db($sql);
151   if ($res === false) return '';
152
153   return $res[0]['laenge'] . ' m';
154 }
155
156 function fetch_gewaesserstunden()
157 {
158   $sql = <<<EOC
159   SELECT sum(stunden) AS gesamt
160   FROM einsatzpersonal
161   WHERE einsatz IN
162     (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
163     (SELECT kostenstelle FROM einsatz WHERE id = %d))
164 EOC;
165
166   $sql = sprintf($sql, $_SESSION['overview_stunden.year'], $_POST['id']);
167   $pstunden = query_db($sql);
168   if ($pstunden === false) return '';
169
170   $sql = <<<EOC
171   SELECT sum(stunden) AS gesamt
172   FROM einsatzgeraete
173   WHERE einsatz IN
174     (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
175     (SELECT kostenstelle FROM einsatz WHERE id = %d))
176 EOC;
177
178   $sql = sprintf($sql, $_SESSION['overview_stunden.year'], $_POST['id']);
179   $gstunden = query_db($sql);
180   if ($gstunden === false) return '';
181
182   return sprintf('%.2f', $pstunden[0]['gesamt'] + $gstunden[0]['gesamt']);
183 }
184
185 function fetch_personalstunden()
186 {
187   $sql = <<<EOC
188   SELECT sum(stunden) AS gesamt
189   FROM einsatzpersonal
190   WHERE einsatz IN
191     (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
192     (SELECT kostenstelle FROM einsatz WHERE id = %d))
193 EOC;
194
195   $sql = sprintf($sql, $_SESSION['overview_stunden.year'], $_POST['id']);
196   $res = query_db($sql);
197   if ($res === false) return '';
198
199   return sprintf('%.2f', $res[0]['gesamt']);
200 }
201
202 function fetch_geraetestunden()
203 {
204   $sql = <<<EOC
205   SELECT sum(stunden) AS gesamt
206   FROM einsatzgeraete
207   WHERE einsatz IN
208     (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
209     (SELECT kostenstelle FROM einsatz WHERE id = %d))
210 EOC;
211
212   $sql = sprintf($sql, $_SESSION['overview_stunden.year'], $_POST['id']);
213   $res = query_db($sql);
214   if ($res === false) return '';
215
216   return sprintf('%.2f', $res[0]['gesamt']);
217 }
218
219 function fetch_gereinigt()
220 {
221   $sql = <<<EOC
222   SELECT count(*) AS count
223   FROM gereinigt
224   JOIN kostenstellen ON gereinigt.kostenstelle = kostenstellen.id
225   JOIN einsatz ON einsatz.kostenstelle = kostenstellen.id
226   WHERE jahr = %d AND einsatz.id = %d
227 EOC;
228
229   $sql = sprintf($sql, $_SESSION['overview_kosten.year'], $_POST['id']);
230
231   $res = query_db($sql);
232   if ($res === false) return '';
233
234   return $res[0]['count'] == 0 ? 'nein' : 'ja';
235 }
236
237 ?>