Aggregatfunktion comma entfernt und Templates angepasst
authorG. Richardson <grichardson@kivitec.de>
Wed, 20 Feb 2019 11:30:16 +0000 (12:30 +0100)
committerG. Richardson <grichardson@kivitec.de>
Sat, 10 Aug 2019 14:42:02 +0000 (16:42 +0200)
"comma" war eine alte benutzerdefinierte Aggregatfunktion, die benutzt
wurde, um mehrere aggregierte Werte aus einem GROUP BY in einen
kommaseparierten String umzuwandeln.

Mittlerweile würde man das einfach mit array_agg und array_to_string machen:
 array_to_string(array_agg(startdate), ', ') as startdate

Im Template wurden die ',' dann durch '<br>' ersetzt. Stattdessen werden
die Werte im Query nun als array_agg ausgegeben, und im Template wird
eine Schleife über das Arrayref gebildet.

SL/CA.pm
sql/Pg-upgrade2/remove_comma_aggregate_functions.sql [new file with mode: 0644]
templates/webpages/am/list_account_details.html

index 85f8dfd..30d4712 100644 (file)
--- a/SL/CA.pm
+++ b/SL/CA.pm
@@ -101,11 +101,11 @@ sub all_accounts {
       c.pos_eur,
       c.valid_from,
       c.datevautomatik,
-      comma(tk.startdate::text) AS startdate,
-      comma(tk.taxkey_id::text) AS taxkey,
-      comma(tx.taxdescription || to_char (tx.rate, '99V99' ) || '%') AS taxdescription,
-      comma(taxchart.accno::text) AS taxaccount,
-      comma(tk.pos_ustva::text) AS tk_ustva,
+      array_agg(tk.startdate) AS startdates,
+      array_agg(tk.taxkey_id) AS taxkeys,
+      array_agg(tx.taxdescription || to_char (tx.rate, '99V99' ) || '%') AS taxdescriptions,
+      array_agg(taxchart.accno) AS taxaccounts,
+      array_agg(tk.pos_ustva) AS pos_ustvas,
       ( SELECT accno
       FROM chart c2
       WHERE c2.id = c.id
diff --git a/sql/Pg-upgrade2/remove_comma_aggregate_functions.sql b/sql/Pg-upgrade2/remove_comma_aggregate_functions.sql
new file mode 100644 (file)
index 0000000..00c748d
--- /dev/null
@@ -0,0 +1,6 @@
+-- @tag: remove_comma_aggregate_functions
+-- @description: Entfernt Aggregate Funktion comma
+-- @depends: release_3_5_3
+
+DROP AGGREGATE IF EXISTS comma(text);
+DROP FUNCTION IF EXISTS comma_aggregate ( text, text) ;
index 884dc7d..e35b7d2 100644 (file)
  </tr>
 
  <tr class="coa_listrow[% loop.count % 2 %]">
-  <td class="coa_detail_emph">[% IF row.taxkey         %][% HTML.escape(row.taxkey).replace(',', '<br>')         %][% ELSE %]-[% END %]</td>
-  <td class="coa_detail_emph">[% IF row.taxaccount     %][% HTML.escape(row.taxaccount).replace(',', '<br>')     %][% ELSE %]-[% END %]</td>
-  <td class="coa_detail_emph">[% IF row.taxdescription %][% HTML.escape(row.taxdescription).replace(',', '<br>') %][% ELSE %]-[% END %]</td>
-  <td class="coa_detail_emph">[% IF row.tk_ustva       %][% HTML.escape(row.tk_ustva).replace(',', '<br>')       %][% ELSE %]-[% END %]</td>
-  <td class="coa_detail_emph">[% IF row.startdate      %][% HTML.escape(row.startdate).replace(',', '<br>')      %][% ELSE %]-[% END %]</td>
+  <td class = "coa_detail_emph">[% IF row.taxkeys.size         %][% FOR taxkey         = row.taxkeys         %][% HTML.escape(taxkey)         %]<br>[% END %][% ELSE %]-[% END %]</td>
+  <td class = "coa_detail_emph">[% IF row.taxaccounts.size     %][% FOR taxaccount     = row.taxaccounts     %][% HTML.escape(taxaccount)     %]<br>[% END %][% ELSE %]-[% END %]</td>
+  <td class = "coa_detail_emph">[% IF row.taxdescriptions.size %][% FOR taxdescription = row.taxdescriptions %][% HTML.escape(taxdescription) %]<br>[% END %][% ELSE %]-[% END %]</td>
+  <td class = "coa_detail_emph">[% IF row.pos_ustvas.size      %][% FOR pos_ustva      = row.pos_ustvas      %][% HTML.escape(pos_ustva)      %]<br>[% END %][% ELSE %]-[% END %]</td>
+  <td class = "coa_detail_emph">[% IF row.startdates.size      %][% FOR startdate      = row.startdates      %][% HTML.escape(startdate)      %]<br>[% END %][% ELSE %]-[% END %]</td>
  </tr>
 
  <tr class="coa_listrow[% loop.count % 2 %]">