Really calculate sums
authorJoey Schulze <joey@infodrom.org>
Fri, 12 Mar 2010 16:15:11 +0000 (17:15 +0100)
committerJoey Schulze <joey@infodrom.org>
Fri, 12 Mar 2010 16:15:11 +0000 (17:15 +0100)
masks/overview_kosten.php
masks/overview_stunden.php

index 8cd1d42..75752d5 100644 (file)
@@ -168,55 +168,64 @@ function fetch_laenge()
 function fetch_gewaesserkosten()
 {
   $sql = <<<EOC
-  SELECT sum(einsatzpersonal.stunden * personal.persstdsatz +
-             einsatzgeraete.stunden * gerate.geraetkst_intern +
-             einsatzgeraete.stunden * anbaugeraete.anbkst_intern) AS gesamt
-  FROM einsatz
-  JOIN einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id
-  JOIN einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id
+  SELECT sum(stunden * persstdsatz) AS gesamt
+  FROM einsatzpersonal
   JOIN personal ON einsatzpersonal.personal = personal.id
-  JOIN gerate ON einsatzgeraete.geraet = gerate.id
-  JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
-  WHERE einsatz.id = %d
+  WHERE einsatz IN
+    (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
+    (SELECT kostenstelle FROM einsatz WHERE id = %d))
 EOC;
 
-  $sql = sprintf($sql, $_POST['id']);
-  $res = query_db($sql);
-  if ($res === false) return '';
+  $sql = sprintf($sql, $_SESSION['overview_kosten.year'], $_POST['id']);
+  $pkosten = query_db($sql);
+  if ($pkosten === false) return '';
 
-  return sprintf('%.2f &euro;', $res[0]['gesamt']);
+  $sql = <<<EOC
+  SELECT sum(stunden * gerate.geraetkst_intern +
+             stunden * anbaugeraete.anbkst_intern) AS gesamt
+  FROM einsatzgeraete
+  WHERE einsatz IN
+    (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
+    (SELECT kostenstelle FROM einsatz WHERE id = %d))
+EOC;
+
+  $sql = sprintf($sql, $_SESSION['overview_kosten.year'], $_POST['id']);
+  $gkosten = query_db($sql);
+  if ($gkosten === false) return '';
+
+  return sprintf('%.2f &euro;', $pkosten[0]['gesamt'] + $gkosten[0]['gesamt']);
 }
 
 function fetch_personalkosten()
 {
   $sql = <<<EOC
-  SELECT sum(einsatzpersonal.stunden * personal.persstdsatz) AS kosten
-  FROM einsatz
-  JOIN einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id
+  SELECT sum(stunden * persstdsatz) AS gesamt
+  FROM einsatzpersonal
   JOIN personal ON einsatzpersonal.personal = personal.id
-  WHERE einsatz.id = %d
+  WHERE einsatz IN
+    (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
+    (SELECT kostenstelle FROM einsatz WHERE id = %d))
 EOC;
 
-  $sql = sprintf($sql, $_POST['id']);
+  $sql = sprintf($sql, $_SESSION['overview_kosten.year'], $_POST['id']);
   $res = query_db($sql);
   if ($res === false) return '';
 
-  return sprintf('%.2f &euro;', $res[0]['kosten']);
+  return sprintf('%.2f &euro;', $res[0]['gesamt']);
 }
 
 function fetch_geraetekosten()
 {
   $sql = <<<EOC
-  SELECT sum(einsatzgeraete.stunden * gerate.geraetkst_intern +
-             einsatzgeraete.stunden * anbaugeraete.anbkst_intern) AS gesamt
-  FROM einsatz
-  JOIN einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id
-  JOIN gerate ON einsatzgeraete.geraet = gerate.id
-  JOIN anbaugeraete ON einsatzgeraete.anbaugeraet = anbaugeraete.id
-  WHERE einsatz.id = %d
+  SELECT sum(stunden * gerate.geraetkst_intern +
+             stunden * anbaugeraete.anbkst_intern) AS gesamt
+  FROM einsatzgeraete
+  WHERE einsatz IN
+    (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
+    (SELECT kostenstelle FROM einsatz WHERE id = %d))
 EOC;
 
-  $sql = sprintf($sql, $_POST['id']);
+  $sql = sprintf($sql, $_SESSION['overview_kosten.year'], $_POST['id']);
   $res = query_db($sql);
   if ($res === false) return '';
 
index f60272f..d022299 100644 (file)
@@ -163,47 +163,60 @@ function fetch_laenge()
 function fetch_gewaesserstunden()
 {
   $sql = <<<EOC
-  SELECT sum(einsatzpersonal.stunden +
-             einsatzgeraete.stunden) AS gesamt
-  FROM einsatz
-  JOIN einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id
-  JOIN einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id
-  WHERE einsatz.id = %d
+  SELECT sum(stunden) AS gesamt
+  FROM einsatzpersonal
+  WHERE einsatz IN
+    (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
+    (SELECT kostenstelle FROM einsatz WHERE id = %d))
 EOC;
 
-  $sql = sprintf($sql, $_POST['id']);
-  $res = query_db($sql);
-  if ($res === false) return '';
+  $sql = sprintf($sql, $_SESSION['overview_stunden.year'], $_POST['id']);
+  $pstunden = query_db($sql);
+  if ($pstunden === false) return '';
 
-  return sprintf('%.2f', $res[0]['gesamt']);
+  $sql = <<<EOC
+  SELECT sum(stunden) AS gesamt
+  FROM einsatzgeraete
+  WHERE einsatz IN
+    (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
+    (SELECT kostenstelle FROM einsatz WHERE id = %d))
+EOC;
+
+  $sql = sprintf($sql, $_SESSION['overview_stunden.year'], $_POST['id']);
+  $gstunden = query_db($sql);
+  if ($gstunden === false) return '';
+
+  return sprintf('%.2f', $pstunden[0]['gesamt'] + $gstunden[0]['gesamt']);
 }
 
 function fetch_personalstunden()
 {
   $sql = <<<EOC
-  SELECT sum(einsatzpersonal.stunden) AS kosten
-  FROM einsatz
-  JOIN einsatzpersonal ON einsatzpersonal.einsatz = einsatz.id
-  WHERE einsatz.id = %d
+  SELECT sum(stunden) AS gesamt
+  FROM einsatzpersonal
+  WHERE einsatz IN
+    (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
+    (SELECT kostenstelle FROM einsatz WHERE id = %d))
 EOC;
 
-  $sql = sprintf($sql, $_POST['id']);
+  $sql = sprintf($sql, $_SESSION['overview_stunden.year'], $_POST['id']);
   $res = query_db($sql);
   if ($res === false) return '';
 
-  return sprintf('%.2f', $res[0]['kosten']);
+  return sprintf('%.2f', $res[0]['gesamt']);
 }
 
 function fetch_geraetestunden()
 {
   $sql = <<<EOC
-  SELECT sum(einsatzgeraete.stunden) AS gesamt
-  FROM einsatz
-  JOIN einsatzgeraete ON einsatzgeraete.einsatz = einsatz.id
-  WHERE einsatz.id = %d
+  SELECT sum(stunden) AS gesamt
+  FROM einsatzgeraete
+  WHERE einsatz IN
+    (SELECT id FROM einsatz WHERE date_part('year', datum) = %d AND kostenstelle =
+    (SELECT kostenstelle FROM einsatz WHERE id = %d))
 EOC;
 
-  $sql = sprintf($sql, $_POST['id']);
+  $sql = sprintf($sql, $_SESSION['overview_stunden.year'], $_POST['id']);
   $res = query_db($sql);
   if ($res === false) return '';