Add classes for future processing
authorJoey Schulze <joey@infodrom.org>
Sat, 5 Apr 2014 18:56:51 +0000 (18:56 +0000)
committerJoey Schulze <joey@infodrom.org>
Sat, 5 Apr 2014 18:56:51 +0000 (18:56 +0000)
class/accounting.class.php
class/accountingdm.class.php [new file with mode: 0644]
class/accountname.class.php
class/accounttable.class.php [new file with mode: 0644]

index ab2628b..b127b78 100644 (file)
@@ -1,9 +1,10 @@
 <?php
 
-class Accounting extends DatabaseTable {
+class Accounting extends AccountTable {
 
   public function __construct($id)
   {
+    $this->valuecolumn = 'value_eur';
     parent::__construct('account', $id);
   }
 
diff --git a/class/accountingdm.class.php b/class/accountingdm.class.php
new file mode 100644 (file)
index 0000000..f420fd7
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+
+class AccountingDM extends AccountTable {
+
+  public function __construct($id)
+  {
+    $this->valuecolumn = 'value_dm';
+    parent::__construct('account_dm', $id);
+  }
+
+}
+
+?>
index 9f95ec2..8b4abd5 100644 (file)
@@ -10,6 +10,31 @@ class AccountName extends DatabaseTable {
       parent::__construct('account_names', $id, 'blz_kto');
   }
 
+  public function getAccounts($currency, $display=false)
+  {
+    if ($currency == "eur")
+      $table = "account";
+    else
+      $table = "account_dm";
+
+    $sql = sprintf("SELECT DISTINCT %s.blz_kto,name FROM %s JOIN account_names using(blz_kto)%s ORDER BY name",
+                  $table, $table,
+                  $display === false ? '' : ' WHERE display = '.$display);
+    return $this->db->fetchObjectList($sql);
+  }
+
+  public function name()
+  {
+    if (!$this->data)
+      return 'Unbekannt';
+
+    $both = explode (":", $this->data->blz_kto);
+    if (count($both) > 1)
+      return sprintf ("%s (BLZ %s, Konto %s)", $this->data->name, $both[0], $both[1]);
+    else
+      return sprintf ("%s (%s)", $this->data->name, $this->data->blz_kto);
+  }
+
 }
 
 ?>
diff --git a/class/accounttable.class.php b/class/accounttable.class.php
new file mode 100644 (file)
index 0000000..fb112c7
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+
+abstract class AccountTable extends DatabaseTable {
+  protected $valuecolumn;
+
+  public function __construct($table, $id)
+  {
+    parent::__construct($table, $id);
+  }
+
+  public function sum($blzkto)
+  {
+    $sql = sprintf("SELECT sum(%s) FROM %s WHERE blz_kto = %s",
+                  $this->valuecolumn,
+                  $this->table,
+                  $this->db->quote($blzkto));
+    return $this->db->fetchValue($sql);
+  }
+
+  public function distinctYears($blzkto)
+  {
+    $sql = sprintf("SELECT DISTINCT substr(datum::text,0,5) AS year FROM %s ".
+                  "WHERE blz_kto = %s ORDER BY year DESC",
+                  $this->table, $this->db->quote($blzkto));
+    return $this->db->fetchObjectList($sql);
+  }
+
+  public function distinctCategories($blzkto)
+  {
+    $sql = sprintf("SELECT DISTINCT category FROM %s WHERE blz_kto = %s ORDER BY category",
+                  $this->table, $this->db->quote($blzkto));
+    return $this->db->fetchObjectList($sql);
+  }
+
+  public function distinctFromTo($blzkto, $period=false)
+  {
+    $sql = sprintf("SELECT DISTINCT from_to FROM %s WHERE blz_kto = %s%s ORDER BY from_to",
+                  $this->table, $this->db->quote($blzkto),
+                  $period === false ? '' : ' AND ' . $period);
+    return $this->db->fetchObjectList($sql);
+  }
+
+  public function distinctStatements($blzkto)
+  {
+    $sql = sprintf("SELECT DISTINCT statement FROM %s WHERE blz_kto = %s ORDER BY statement DESC",
+                  $this->table, $this->db->quote($blzkto));
+    return $this->db->fetchObjectList($sql);
+  }
+
+}
+
+?>