Buchungsliste:
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 18 Jun 2007 14:47:05 +0000 (14:47 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 18 Jun 2007 14:47:05 +0000 (14:47 +0000)
1. $form->{sort} nicht ohne Überprüfung in einem SQL-Query benutzen.
2. Nur dann mehrere Zeilen zusammenfassen, wenn auch ihre ID übereinstimmen (was vermutlich nie der Fall sein wird, aber anders ist es schlicht falsch, weil dann Buchungen zusammengefasst werden können, die zu unterschiedlichen Belegen gehören).

SL/CA.pm

index b4680ad..76d2b32 100644 (file)
--- a/SL/CA.pm
+++ b/SL/CA.pm
@@ -347,7 +347,9 @@ sub all_transactions {
     $union = qq|UNION ALL|;
   }
 
-  $query .= qq|ORDER BY | . $form->{sort};
+  my $sort = grep({ $form->{sort} eq $_ } qw(transdate reference description)) ? $form->{sort} : 'transdate';
+
+  $query .= qq|ORDER BY $sort|;
   $sth = prepare_execute_query($form, $dbh, $query, @values);
 
   $form->{CA} = [];
@@ -370,7 +372,7 @@ sub all_transactions {
       $ca->{debit}  = 0;
     }
 
-    $ca->{index} = $ca->{reference}.$ca->{description};
+    $ca->{index} = join "--", map { $ca->{$_} } qw(id reference description);
 
     push(@{ $form->{CA} }, $ca);