SuSa - Summe per und Saldo auch bei abweichenden Geschäftsjahr berechnen
authorJan Büren <jan@kivitendo-premium.de>
Thu, 4 Sep 2014 07:07:29 +0000 (09:07 +0200)
committerJan Büren <jan@kivitendo-premium.de>
Thu, 4 Sep 2014 07:07:29 +0000 (09:07 +0200)
Falls man eine Monats-SuSa zieht werden die Salden korrekt berechnet, allerdings
wurde nicht ein abweichendes Geschäftsjahr berücksichtigt. Jetzt wird
das Startdatum wie in der Bilanz genommen, dass ist schon mal besser, allerdings
ist hier der Fall Startdatum == closedto immer noch etwas unschön, s.a. Kommentar
in der Methode get_balance_startdate_method

SL/RP.pm

index fd58de6..47d7db9 100644 (file)
--- a/SL/RP.pm
+++ b/SL/RP.pm
@@ -923,10 +923,13 @@ sub trial_balance {
     $sumwhere .= $glsumwhere . " AND (NOT ac.ob_transaction OR ac.ob_transaction IS NULL) AND (NOT ac.cb_transaction OR ac.cb_transaction IS NULL)";
 
     # get all entries before fromdate, which are not yet fetched
-    # TODO dpt_where_without_arapgl and project
+    # TODO dpt_where_without_arapgl and project - project calculation seems bogus anyway
+    # TODO use fiscal_year_startdate for the whole trial balance
+    #      anyway, if the last booking is in a deviating fiscal year, this already improves the query
+    my $fiscal_year_startdate = conv_dateq(get_balance_starting_date($form->{fromdate}));
     $fetch_accounts_before_from = qq|SELECT c.accno, c.description, c.category, SUM(ac.amount) AS amount
                        FROM acc_trans ac JOIN chart c ON (c.id = ac.chart_id) WHERE 1 = 1 AND (ac.transdate <= $fromdate)
-                        AND (ac.transdate >= (SELECT date_trunc('YEAR', | . $fromdate . qq|::date)))
+                       AND (ac.transdate >= $fiscal_year_startdate)
                        AND (NOT ac.ob_transaction OR ac.ob_transaction IS NULL) AND (NOT ac.cb_transaction OR ac.cb_transaction IS NULL)
                        AND c.accno NOT IN (SELECT c.accno FROM acc_trans ac JOIN chart c ON (c.id = ac.chart_id) WHERE 1 = 1 AND (ac.transdate >= $fromdate) AND (ac.transdate <= $todate)
                        AND (NOT ac.ob_transaction OR ac.ob_transaction IS NULL) AND (NOT ac.cb_transaction OR ac.cb_transaction IS NULL))
@@ -988,7 +991,7 @@ sub trial_balance {
   }
   $sth->finish;
 
-  if ($form->{method} ne "cash") {
+  if (!$form->{method} ne "cash") {
     $sth = prepare_execute_query($form, $dbh, $fetch_accounts_before_from);
     while ($ref = $sth->fetchrow_hashref("NAME_lc")) {
       $trb{ $ref->{accno} }{description} = $ref->{description};