Adjustment of list according to mail specification
[misc/kostenrechnung] / masks / overview_kosten.php
1 <?php
2
3 include_once($_SESSION['sys']['basedir'].'/lib/overview_utils.php');
4
5 if (empty($_SESSION['overview_kosten.year'])) $_SESSION['overview_kosten.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>Gesamtkosten</b>: <span id="detail_gewaesserkosten"></span><br>
12 <b>Personalkosten</b>: <span id="detail_personalkosten"></span><br>
13 <b>Gerätekosten</b>: <span id="detail_geraetekosten"></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' => 'Kostenaufwand für Kostenstellen',
21               'join' => array(
22                               'einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id',
23                               'einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id',
24                               'personal ON einsatzpersonal.personal = personal.id',
25                               'gerate ON einsatzgeraete.geraet = gerate.id',
26                               'anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id',
27                               'arbeitsarten ON einsatz.arbeiten = arbeitsarten.id',
28                               'gebiet ON einsatz.gebiet = gebiet.id',
29                               'kostenstellen ON einsatz.kostenstelle = kostenstellen.id',
30                               ),
31               'where' => "arbeitsarten.arbeitsart <> 'Urlaub' AND arbeitsarten.arbeitsart <> 'Krank' AND arbeitsarten.arbeitsart <> 'Sonstige Fehltage'"
32                        . " AND date_part('year', datum) = " . $_SESSION['overview_kosten.year'],
33               'select' => array(
34                                 'title' => 'Auswahl',
35                                 'options' => discover_years(),
36                                 'default' => 'Jahr wählen',
37                                 'selected' => $_SESSION['overview_kosten.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' => 250,
65                                             'specs' => "filterUI: 's'",
66                                             ),
67                               'arbeitsart' => array(
68                                             'name' => 'Arbeiten',
69                                             'sql' => "arbeitsarten.arbeitsart",
70                                             'width' => 250,
71                                             'specs' => "filterUI: 's'",
72                                             ),
73                               'personal' => array(
74                                             'name' => 'Mitarbeiter',
75                                             'sql' => "personal.name || ', ' || personal.vorname",
76                                             'width' => 150,
77                                             'specs' => "filterUI: 's'",
78                                             ),
79                               'geraet' => array(
80                                             'name' => 'Gerät',
81                                             'sql' => "gerate.geraet",
82                                             'width' => 150,
83                                             'specs' => "filterUI: 's'",
84                                             ),
85                               'laenge' => array(
86                                             'name' => 'Länge',
87                                             'type' => 'number',
88                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
89                                             'width' => 70,
90                                             ),
91                               'personalkosten' => array(
92                                             'name' => 'Mitarbeiterkosten',
93                                             'type' => 'number',
94                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
95                                             'width' => 90,
96                                             'sql' => 'einsatzpersonal.stunden * personal.persstdsatz',
97                                             ),
98                               'geraetkosten' => array(
99                                             'name' => 'Gerätkosten',
100                                             'type' => 'number',
101                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
102                                             'width' => 90,
103                                             'sql' => 'einsatzgeraete.stunden * gerate.geraetkst_intern + ' .
104                                                      'einsatzgeraete.stunden * anbaugeraete.anbkst_intern',
105                                             ),
106                               'gesamtkosten' => array(
107                                             'name' => 'Gesamtkosten',
108                                             'type' => 'number',
109                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
110                                             'width' => 90,
111                                             'sql' => 'einsatzpersonal.stunden * personal.persstdsatz + ' . 
112                                                      'einsatzgeraete.stunden * gerate.geraetkst_intern + ' .
113                                                      'einsatzgeraete.stunden * anbaugeraete.anbkst_intern',
114                                             ),
115                               'prolfdm' => array(
116                                             'name' => 'pro lfdm',
117                                             'type' => 'number',
118                                             'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', canSort: false",
119                                             'width' => 60,
120                                             'sql' => '(einsatzpersonal.stunden * personal.persstdsatz + ' . 
121                                                      'einsatzgeraete.stunden * gerate.geraetkst_intern + ' .
122                                                      'einsatzgeraete.stunden * anbaugeraete.anbkst_intern) / laenge',
123                                             ),
124                               ),
125               'details' => array(
126                                  'html' => $details,
127                                  'list' => array(
128                                                  'gebiet' => array('fetch' => fetch_gebiet),
129                                                  'laenge' => array('fetch' => fetch_laenge),
130                                                  'gewaesserkosten' => array('fetch' => fetch_gewaesserkosten),
131                                                  'personalkosten' => array('fetch' => fetch_personalkosten),
132                                                  'geraetekosten' => array('fetch' => fetch_geraetekosten),
133                                                  'gereinigt' => array('fetch' => fetch_gereinigt),
134                                                  ),
135
136                               ),
137               );
138
139 function fetch_gebiet()
140 {
141   $sql = 'SELECT gebiet.gebiet FROM gebiet JOIN einsatz ON einsatz.gebiet = gebiet.id WHERE einsatz.id = ' . intval($_POST['id']);
142   $res = query_db($sql);
143   if ($res === false) return '';
144
145   return $res[0]['gebiet'];
146 }
147
148 function fetch_laenge()
149 {
150   $sql = 'SELECT laenge FROM kostenstellen JOIN einsatz ON einsatz.kostenstelle = kostenstellen.id WHERE einsatz.id = ' . intval($_POST['id']);
151   $res = query_db($sql);
152   if ($res === false) return '';
153
154   return $res[0]['laenge'] . ' m';
155 }
156
157 function fetch_gewaesserkosten()
158 {
159   $sql = <<<EOC
160   SELECT sum(einsatzpersonal.stunden * personal.persstdsatz +
161              einsatzgeraete.stunden * gerate.geraetkst_intern +
162              einsatzgeraete.stunden * anbaugeraete.anbkst_intern) AS gesamt
163   FROM einsatz
164   JOIN einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id
165   JOIN einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id
166   JOIN personal ON einsatzpersonal.personal = personal.id
167   JOIN gerate ON einsatzgeraete.geraet = gerate.id
168   JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
169   WHERE einsatz.id = %d
170 EOC;
171
172   $sql = sprintf($sql, $_POST['id']);
173   $res = query_db($sql);
174   if ($res === false) return '';
175
176   return sprintf('%.2f &euro;', $res[0]['gesamt']);
177 }
178
179 function fetch_personalkosten()
180 {
181   $sql = <<<EOC
182   SELECT sum(einsatzpersonal.stunden * personal.persstdsatz) AS kosten
183   FROM einsatz
184   JOIN einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id
185   JOIN personal ON einsatzpersonal.personal = personal.id
186   WHERE einsatz.id = %d
187 EOC;
188
189   $sql = sprintf($sql, $_POST['id']);
190   $res = query_db($sql);
191   if ($res === false) return '';
192
193   return sprintf('%.2f &euro;', $res[0]['kosten']);
194 }
195
196 function fetch_geraetekosten()
197 {
198   $sql = <<<EOC
199   SELECT sum(einsatzgeraete.stunden * gerate.geraetkst_intern +
200              einsatzgeraete.stunden * anbaugeraete.anbkst_intern) AS gesamt
201   FROM einsatz
202   JOIN einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id
203   JOIN gerate ON einsatzgeraete.geraet = gerate.id
204   JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
205   WHERE einsatz.id = %d
206 EOC;
207
208   $sql = sprintf($sql, $_POST['id']);
209   $res = query_db($sql);
210   if ($res === false) return '';
211
212   return sprintf('%.2f &euro;', $res[0]['gesamt']);
213 }
214
215 function fetch_gereinigt()
216 {
217   $sql = <<<EOC
218   SELECT count(*) AS count
219   FROM gereinigt
220   JOIN kostenstellen ON gereinigt.kostenstelle = kostenstellen.id
221   JOIN einsatz ON einsatz.kostenstelle = kostenstellen.id
222   WHERE jahr = %d AND einsatz.id = %d
223 EOC;
224
225   $sql = sprintf($sql, $_SESSION['overview_kosten.year'], $_POST['id']);
226
227   $res = query_db($sql);
228   if ($res === false) return '';
229
230   return $res[0]['count'] == 0 ? 'nein' : 'ja';
231 }
232
233 ?>