Keine Form-Variablen direkt in SQL-Queries verwenden.
[kivitendo-erp.git] / SL / CA.pm
index 1a77102..91df43c 100644 (file)
--- a/SL/CA.pm
+++ b/SL/CA.pm
@@ -71,76 +71,36 @@ sub all_accounts {
   }
   $sth->finish;
 
-  $query = qq|
-
-    SELECT c.id,
+  $query = qq{
+    SELECT 
       c.accno,
+      c.id,
       c.description,
       c.charttype,
-      c.gifi_accno,
       c.category,
       c.link,
-      c.pos_ustva,
       c.pos_bwa,
       c.pos_bilanz,
       c.pos_eur,
       c.valid_from,
       c.datevautomatik,
---      ( SELECT comma(taxkey_id)
---        FROM taxkeys tk
---        WHERE tk.chart_id = c.id
---          AND c.taxkey_id = tk.taxkey_id
---        ORDER BY c.id
---      ) AS taxkey_id,
-
-      ( SELECT comma(taxkey)
-        FROM tax tx
-        WHERE tx.id in (
-          SELECT tk.tax_id from taxkeys tk 
-          WHERE tk.chart_id = c.id
-        ) 
-        ORDER BY c.accno
-      ) AS taxkey,
-
-      ( SELECT comma(taxdescription)
-        FROM tax tx
-        WHERE tx.id in (
-          SELECT tk.tax_id from taxkeys tk 
-          WHERE tk.chart_id = c.id
-        ) 
-        ORDER BY c.accno
-      ) AS taxdescription,
-      
-      ( SELECT comma(taxnumber)
-        FROM tax tx
-        WHERE tx.id in (
-          SELECT tk.tax_id from taxkeys tk 
-          WHERE tk.chart_id = c.id
-        ) 
-        ORDER BY c.accno
-      ) AS taxaccount,
-
-      ( SELECT comma(tk.pos_ustva)
-        FROM taxkeys tk
-        WHERE tk.chart_id = c.id
-          AND c.taxkey_id = tk.taxkey_id
-        ORDER BY c.id
-      ) AS tk_ustva,
-
-      ( SELECT comma(startdate)
-        FROM taxkeys tk
-        WHERE tk.chart_id = c.id
-          AND c.taxkey_id = tk.taxkey_id
-        ORDER BY c.id
-      ) AS startdate,
-
+      comma(tk.startdate) AS startdate,
+      comma(tk.taxkey_id) AS taxkey,
+      comma(tx.taxdescription || to_char (tx.rate, '99V99' ) || '%') AS taxdescription,
+      comma(tx.taxnumber) AS taxaccount,
+      comma(tk.pos_ustva) AS tk_ustva,
       ( SELECT accno
-        FROM chart c2
-        WHERE c2.id = c.id
+      FROM chart c2
+      WHERE c2.id = c.id
       ) AS new_account
     FROM chart c
-    ORDER BY accno
-  |;
+    LEFT JOIN taxkeys tk ON (c.id = tk.chart_id)
+    LEFT JOIN tax tx ON (tk.tax_id = tx.id)
+    GROUP BY c.accno, c.id, c.description, c.charttype, c.gifi_accno,
+      c.category, c.link, c.pos_bwa, c.pos_bilanz, c.pos_eur, c.valid_from,      
+      c.datevautomatik
+    ORDER BY c.accno
+  };
 
   $sth = $dbh->prepare($query);
   $sth->execute || $form->dberror($query);