return $this->db->fetchObjectList($sql);
}
-}
+ public function filterTable(Array $data)
+ {
+ error_log('filter Table');
+ $out = '';
+
+ $where[] = sprintf("blz_kto = '%s'", $data['blzkto']);
+ if (strlen($data['year'])) {
+ $where[] = sprintf ("datum >= '%04d-01-01'", $data['year']);
+ $year++;
+ $where[] = sprintf ("datum < '%04d-01-01'", $data['year']+1);
+ }
+
+ if (strlen($data['deadline']) && strlen(trim($data['deadline']))) {
+ $date = Utils::assertIsoDate(trim($data['deadline']));
+ $where[] = sprintf ("datum < '%s'", $date);
+ }
+
+ if (strlen($data['statement']) && strlen(trim($data['statement']))) {
+ $where[] = sprintf("statement = '%s'", $data['statement']);
+ }
+
+ if (strlen($data['category']) && strlen(trim($data['category']))) {
+ if (Utils::isAJAX()) $data['category'] = utf8_decode($data['category']);
+ $where[] = sprintf("category = '%s'", $data['category']);
+ }
+
+ if (strlen($data['keyword']) && strlen(trim($data['keyword']))) {
+ if (Utils::isAJAX()) $data['keyword'] = utf8_decode($data['keyword']);
+ $where[] = sprintf("descr ~* '%s'", $data['keyword']);
+ }
+
+ if (strlen($data['from_to']) && strlen(trim($data['from_to']))) {
+ if (Utils::isAJAX()) $data['from_to'] = utf8_decode($data['from_to']);
+ $where[] = sprintf("from_to = '%s'", $data['from_to']);
+ }
+
+ if ($data['input'] && !$data['output']) {
+ $where[] = "{$this->valuecolumn} > 0.0";
+ } elseif ($data['output'] && !$data['input']) {
+ $where[] = "{$this->valuecolumn} < 0.0";
+ }
-?>
+ $sql = sprintf("SELECT datum,id,category,descr,%s FROM %s WHERE %s ORDER BY datum,id",
+ $this->valuecolumn,
+ $this->table,
+ implode (" AND ", $where));
+
+ $sum = 0.0;
+ $sum_in = 0.0;
+ $sum_out = 0.0;
+ $color = 0;
+ foreach ($this->db->fetchAssocList($sql) as $row) {
+ $descr = explode ("\n", $row['descr']);
+ $date = Utils::assertGermanDate($row['datum']);
+
+ $out .= sprintf ("<tr class=\"t%d\">", $color);
+ $out .= sprintf ("<td width=\"10%%\" align=\"right\">%s</td>", $date);
+ $out .= sprintf ("<td width=\"10%%\" align=\"center\">%s</td>", $row['category']);
+ if (strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/') === false)
+ $out .= sprintf ("<td width=\"70%%\"><a href=\"edit.php?id=%d%s\" target=\"_new\">%s</a></td>",
+ $row['id'], $add, $descr[0]);
+ else
+ $out .= sprintf ("<td width=\"70%%\"><span route=\"%s/EditDescr\" item_id=\"%d\" text=\"%s\">%s</span></td>",
+ get_class($this),
+ $row['id'], $add, $descr[0]);
+ $out .= sprintf ("<td width=\"10%%\" align=\"right\" class=\"%s\">%5.2f</td>",
+ $row[$this->valuecolumn]>0?"in":"out", $row[$this->valuecolumn]);
+ $sum += $row[$this->valuecolumn];
+ if ($row[$this->valuecolumn] > 0) {
+ $sum_in += $row[$this->valuecolumn];
+ } else {
+ $sum_out += $row[$this->valuecolumn];
+ }
+ $out .= "</tr>";
+ $color = !$color;
+ }
+ if (strlen($data['statement'])) {
+ $out .= sprintf ("<tr class=\"t%d\">", $color);
+ $out .= "<td width=\"90%\" colspan=\"3\"><strong>Summe Einnahmen</strong></td>";
+ $out .= sprintf ("<td width=\"10%%\" align=\"right\" class=\"in\">%5.2f</td>",$sum_in);
+ $out .= "</tr>";
+ $out .= sprintf ("<tr class=\"t%d\">", $color);
+ $out .= "<td width=\"90%\" colspan=\"3\"><strong>Summe Ausgaben</strong></td>";
+ $out .= sprintf ("<td width=\"10%%\" align=\"right\" class=\"out\">%5.2f</td>", $sum_out*-1);
+ $out .= "</tr>";
+ }
+ $out .= sprintf ("<tr class=\"t%d\">", $color);
+ $out .= "<td width=\"90%\" colspan=\"3\" align=\"left\"><strong>Summe</strong></td>";
+ $out .= sprintf ("<td width=\"10%%\" align=\"right\" class=\"%s\"><strong>%5.2f</strong></td>",
+ $sum>0?"in":"out", $sum);
+ $out .= "</tr>";
+
+ return $out;
+ }
+
+ public function ajaxFilter(Array $data)
+ {
+ return array('table' => utf8_encode($this->filterTable($data)));
+ }
+
+}