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