include_once($_SESSION['sys']['basedir'].'/lib/overview_utils.php');
-if (empty($_SESSION['overview_kosten.year'])) $_SESSION['overview_kosten.year'] = 0;
+if (empty($_SESSION['overview_kosten.year'])) $_SESSION['overview_kosten.year'] = date('Y');
$details = <<<EOC
<div style="padding-left: 3px; margin-top: -10px;">
-<b>Gebiet</b>: <span id="detail_gebiet"></span><br>
-<b>Gewässer</b>: <span id="detail_kostenstelle"></span><br>
-<b>Länge</b>: <span id="detail_laenge"></span><br>
-<b>Gesamtkosten</b>: <span id="detail_gewaesserkosten"></span><br>
-<b>Personalkosten</b>: <span id="detail_personalkosten"></span><br>
-<b>Gerätekosten</b>: <span id="detail_geraetekosten"></span><br>
+<b>Gebiet</b>: <span id="detail_gebiet"></span><br />
+<b>Gewässer</b>: <span id="detail_kostenstelle"></span><br />
+<b>Länge</b>: <span id="detail_laenge"></span><br />
+<b>Gesamtkosten</b>: <span id="detail_gewaesserkosten"></span><br />
+<b>Personalkosten</b>: <span id="detail_personalkosten"></span><br />
+<b>Gerätekosten</b>: <span id="detail_geraetekosten"></span><br />
<b>Gewässer gereinigt</b>: <span id="detail_gereinigt"></span>
</div>
EOC;
'table' => 'einsatz',
'title' => 'Kostenaufwand für Kostenstellen',
'join' => array(
- 'einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id',
- 'einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id',
- 'personal ON einsatzpersonal.personal = personal.id',
- 'gerate ON einsatzgeraete.geraet = gerate.id',
- 'anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id',
'arbeitsarten ON einsatz.arbeiten = arbeitsarten.id',
'gebiet ON einsatz.gebiet = gebiet.id',
'kostenstellen ON einsatz.kostenstelle = kostenstellen.id',
'width' => 250,
'specs' => "filterUI: 's'",
),
- 'personal' => array(
- 'name' => 'Mitarbeiter',
- 'sql' => "personal.name || ', ' || personal.vorname",
- 'width' => 150,
- 'specs' => "filterUI: 's'",
- ),
- 'geraet' => array(
- 'name' => 'Gerät',
- 'sql' => "gerate.geraet",
- 'width' => 150,
- 'specs' => "filterUI: 's'",
- ),
'laenge' => array(
'name' => 'Länge',
'type' => 'number',
'type' => 'number',
'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: ' ', canSort: false",
'width' => 90,
- 'sql' => 'einsatzpersonal.stunden * personal.persstdsatz',
+ 'sql' => '
+(SELECT sum(stunden * personal.persstdsatz) FROM einsatzpersonal
+JOIN personal ON einsatzpersonal.personal = personal.id
+WHERE einsatz = einsatz.id)
+',
),
'geraetkosten' => array(
'name' => 'Gerätkosten',
'type' => 'number',
'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: ' ', canSort: false",
'width' => 90,
- 'sql' => 'einsatzgeraete.stunden * gerate.geraetkst_intern + ' .
- 'einsatzgeraete.stunden * anbaugeraete.anbkst_intern',
+ 'sql' => '
+(SELECT sum(stunden * gerate.geraetkst_intern + stunden * CASE WHEN anbaugeraete.anbkst_intern IS NULL THEN 0.0 ELSE anbaugeraete.anbkst_intern END)
+FROM einsatzgeraete
+JOIN gerate ON einsatzgeraete.geraet = gerate.id
+LEFT JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
+WHERE einsatz = einsatz.id)
+',
),
'gesamtkosten' => array(
'name' => 'Gesamtkosten',
'type' => 'number',
'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: ' ', canSort: false",
'width' => 90,
- 'sql' => 'einsatzpersonal.stunden * personal.persstdsatz + ' .
- 'einsatzgeraete.stunden * gerate.geraetkst_intern + ' .
- 'einsatzgeraete.stunden * anbaugeraete.anbkst_intern',
+ 'sql' => '
+(SELECT sum(stunden * personal.persstdsatz) FROM einsatzpersonal
+JOIN personal ON einsatzpersonal.personal = personal.id
+WHERE einsatz = einsatz.id)
++
+CASE WHEN
+(SELECT sum(stunden * gerate.geraetkst_intern + stunden * CASE WHEN anbaugeraete.anbkst_intern IS NULL THEN 0.0 ELSE anbaugeraete.anbkst_intern END)
+FROM einsatzgeraete
+JOIN gerate ON einsatzgeraete.geraet = gerate.id
+LEFT JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
+WHERE einsatz = einsatz.id) IS NULL THEN 0.0
+ELSE (SELECT sum(stunden * gerate.geraetkst_intern + stunden * CASE WHEN anbaugeraete.anbkst_intern IS NULL THEN 0.0 ELSE anbaugeraete.anbkst_intern END)
+FROM einsatzgeraete
+JOIN gerate ON einsatzgeraete.geraet = gerate.id
+LEFT JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
+WHERE einsatz = einsatz.id) END
+',
),
'prolfdm' => array(
'name' => 'pro lfdm',
'type' => 'number',
'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: ' ', canSort: false",
'width' => 60,
- 'sql' => '(einsatzpersonal.stunden * personal.persstdsatz + ' .
- 'einsatzgeraete.stunden * gerate.geraetkst_intern + ' .
- 'einsatzgeraete.stunden * anbaugeraete.anbkst_intern) / laenge',
+ 'sql' => '
+((SELECT sum(stunden * personal.persstdsatz) FROM einsatzpersonal
+JOIN personal ON einsatzpersonal.personal = personal.id
+WHERE einsatz = einsatz.id)
++
+CASE WHEN
+(SELECT sum(stunden * gerate.geraetkst_intern + stunden * CASE WHEN anbaugeraete.anbkst_intern IS NULL THEN 0.0 ELSE anbaugeraete.anbkst_intern END)
+FROM einsatzgeraete
+JOIN gerate ON einsatzgeraete.geraet = gerate.id
+LEFT JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
+WHERE einsatz = einsatz.id) IS NULL THEN 0.0
+ELSE (SELECT sum(stunden * gerate.geraetkst_intern + stunden * CASE WHEN anbaugeraete.anbkst_intern IS NULL THEN 0.0 ELSE anbaugeraete.anbkst_intern END)
+FROM einsatzgeraete
+JOIN gerate ON einsatzgeraete.geraet = gerate.id
+LEFT JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
+WHERE einsatz = einsatz.id) END) / laenge
+',
+
+
),
),
'details' => array(
SELECT sum(stunden * gerate.geraetkst_intern +
stunden * anbaugeraete.anbkst_intern) AS gesamt
FROM einsatzgeraete
+ JOIN gerate ON einsatzgeraete.geraet = gerate.id
+ JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
WHERE einsatz IN
(SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
(SELECT kostenstelle FROM einsatz WHERE id = %d))
SELECT sum(stunden * gerate.geraetkst_intern +
stunden * anbaugeraete.anbkst_intern) AS gesamt
FROM einsatzgeraete
+ JOIN gerate ON einsatzgeraete.geraet = gerate.id
+ JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
WHERE einsatz IN
(SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
(SELECT kostenstelle FROM einsatz WHERE id = %d))