Honor multiple machines in log
[infodrom.org/service.infodrom.org] / class / spritlog.class.php
index 65df3fd..a1dc248 100644 (file)
@@ -1,29 +1,39 @@
 <?php
 
 class SpritLog extends DatabaseTable {
+  protected $machine = false;
 
   public function __construct($id=false)
   {
     parent::__construct('sprit_log', $id);
   }
 
+  public function setMachine($machine)
+  {
+      $this->machine = $machine;
+  }
+
   public function distinctYears()
   {
-    $sql = "SELECT EXTRACT(YEAR from date) AS year,sum(price) AS sum,sum(km) AS km FROM sprit_log GROUP BY year ORDER BY year DESC";
+    $sql = "SELECT EXTRACT(YEAR from date) AS year,sum(price) AS sum,sum(km) AS km FROM sprit_log " .
+       ($this->machine ? "WHERE machine = {$this->machine} " : "") .
+       "GROUP BY year ORDER BY year DESC";
     return $this->db->fetchObjectList($sql);
   }
 
   public function formatYear($year)
   {
     $out = '';
-    $sql = sprintf("SELECT * FROM sprit_log WHERE EXTRACT(YEAR from date) = %d ORDER BY date ASC", $year);;
+    $sql = sprintf("SELECT * FROM sprit_log WHERE %sEXTRACT(YEAR from date) = %d ORDER BY date ASC",
+                  $this->machine ? "machine = {$this->machine} AND " : "",
+                  $year);
 
     $total_km = 0;
     $total_liter = 0;
     $total_price = 0;
     foreach ($this->db->fetchObjectList($sql) as $row) {
       $out .= sprintf('<tr id="%d"><td>%s</td><td>%s</td><td><span route="SpritLog/EditTankstelle" item_id="%d">%s</span></td>' .
-                     '<td class="right">%.2f</td><td class="right">%.2f</td><td class="right">%.2f</td>' .
+                     '<td class="right">%.3f</td><td class="right">%.2f</td><td class="right">%.2f</td>' .
                      '<td class="right">%d</td><td class="right">%d</td></tr>',
                      $row->id, assert_german_date($row->date),
                      $row->city, $row->id, $row->tankstelle,
@@ -53,6 +63,8 @@ class SpritLog extends DatabaseTable {
 
   public function ajaxList(Array $data)
   {
+    if (isset($data['machine']))
+       $this->setMachine($data['machine']);
     list($table, $liter, $price, $km) = $this->formatYear($data['year']);
 
     return array('html' => array('list_'.$data['year'] => $table,