Update formular
authorJoey Schulze <joey@infodrom.org>
Fri, 26 Mar 2010 15:54:13 +0000 (16:54 +0100)
committerJoey Schulze <joey@infodrom.org>
Fri, 26 Mar 2010 15:54:13 +0000 (16:54 +0100)
masks/overview_kosten.php

index 747388d..d504469 100644 (file)
@@ -2,7 +2,7 @@
 
 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;">
@@ -20,11 +20,6 @@ $mask = array(
              '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',
@@ -71,18 +66,6 @@ $mask = array(
                                            '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',
@@ -94,33 +77,72 @@ $mask = array(
                                            'type' => 'number',
                                            'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: '&nbsp;', 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: '&nbsp;', 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: '&nbsp;', 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: '&nbsp;', 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(