Umbau der bisherigen Saldenbilanz zu einer richtigen Summen- Saldenliste unter Benutz...
authorPhilip Reetz <p.reetz@linet-services.de>
Sat, 19 Jan 2008 17:48:17 +0000 (17:48 +0000)
committerPhilip Reetz <p.reetz@linet-services.de>
Sat, 19 Jan 2008 17:48:17 +0000 (17:48 +0000)
Reportgenerator Frameworks

41 files changed:
SL/RP.pm
bin/mozilla/rp.pl
locale/de/admin
locale/de/all
locale/de/am
locale/de/amcvar
locale/de/amtemplates
locale/de/ap
locale/de/ar
locale/de/arap
locale/de/bp
locale/de/ca
locale/de/common
locale/de/cp
locale/de/ct
locale/de/datev
locale/de/dn
locale/de/do
locale/de/drafts
locale/de/fu
locale/de/gl
locale/de/ic
locale/de/io
locale/de/ir
locale/de/is
locale/de/licenses
locale/de/login
locale/de/menu
locale/de/menuXML
locale/de/menunew
locale/de/menuv3
locale/de/oe
locale/de/pe
locale/de/rc
locale/de/reportgenerator
locale/de/rp
locale/de/todo
locale/de/ustva
locale/de/wh
templates/webpages/report_generator/html_report_susa_de.html [new file with mode: 0644]
templates/webpages/report_generator/html_report_susa_master.html [new file with mode: 0644]

index 19af9d8..76c44e1 100644 (file)
--- a/SL/RP.pm
+++ b/SL/RP.pm
@@ -804,32 +804,36 @@ sub trial_balance {
   }
 
   # get beginning balances
-  if ($form->{fromdate}) {
-    $query =
-      qq|SELECT c.accno, c.category, SUM(ac.amount) AS amount, c.description
-         FROM acc_trans ac
-         JOIN chart c ON (ac.chart_id = c.id)
-         $dpt_join
-         WHERE (ac.transdate < ?)
-           $dpt_where
-           $project
-         GROUP BY c.accno, c.category, c.description |;
+  $query =
+    qq|SELECT c.accno, c.category, SUM(ac.amount) AS amount, c.description
+        FROM acc_trans ac
+        JOIN chart c ON (ac.chart_id = c.id)
+        $dpt_join
+        WHERE (ac.transdate < (select date_trunc('year', date ?)))
+          $dpt_where
+          $project
+        GROUP BY c.accno, c.category, c.description |;
 
-    $sth = prepare_execute_query($form, $dbh, $query, $form->{fromdate});
+  $sth = prepare_execute_query($form, $dbh, $query, $form->{fromdate});
 
-    while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
-      $balance{ $ref->{accno} } = $ref->{amount};
+  while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
 
-      if ($ref->{amount} != 0 && $form->{all_accounts}) {
-        $trb{ $ref->{accno} }{description} = $ref->{description};
-        $trb{ $ref->{accno} }{charttype}   = 'A';
-        $trb{ $ref->{accno} }{category}    = $ref->{category};
+    if ($ref->{amount} != 0 || $form->{all_accounts}) {
+      $trb{ $ref->{accno} }{description} = $ref->{description};
+      $trb{ $ref->{accno} }{charttype}   = 'A';
+      if ($ref->{category} ne "I" &&  $ref->{category} ne "E") {
+        if ($ref->{amount} > 0) {
+          $trb{ $ref->{accno} }{haben_eb}   = $ref->{amount};
+        } else {
+          $trb{ $ref->{accno} }{soll_eb}   = $ref->{amount} * -1;
+        }
       }
-
+      $trb{ $ref->{accno} }{category}    = $ref->{category};
     }
-    $sth->finish;
 
   }
+  $sth->finish;
+
 
   # get headings
   $query =
@@ -851,6 +855,8 @@ sub trial_balance {
   $sth->finish;
 
   $where = " 1 = 1 ";
+  $saldowhere = " 1 = 1 ";
+  $sumwhere = " 1 = 1 ";
   my $tofrom;
 
   if ($form->{fromdate} || $form->{todate}) {
@@ -858,19 +864,27 @@ sub trial_balance {
       my $fromdate = conv_dateq($form->{fromdate});
       $tofrom   .= " AND (ac.transdate >= $fromdate)";
       $subwhere .= " AND (transdate >= $fromdate)";
+      $sumsubwhere .= " AND (transdate >= (select date_trunc('year', date $fromdate))) ";
+      $saldosubwhere .= " AND (((c.category='I' OR c.category='E') AND transdate>=(select date_trunc('year', date $fromdate))) OR (c.category NOT IN ('I', 'E'))) ";
       $invwhere .= " AND (a.transdate >= $fromdate)";
+      $glsaldowhere .= " AND (((c.category='I' OR c.category='E') AND ac.transdate>=(select date_trunc('year', date $fromdate))) OR (c.category NOT IN ('I', 'E'))) ";
       $glwhere = " AND (ac.transdate >= $fromdate)";
+      $glsumwhere = " AND (ac.transdate >= (select date_trunc('year', date $fromdate))) ";
     }
     if ($form->{todate}) {
       my $todate = conv_dateq($form->{todate});
       $tofrom   .= " AND (ac.transdate <= $todate)";
       $invwhere .= " AND (a.transdate <= $todate)";
+      $saldosubwhere .= " AND (transdate <= $todate)";
+      $sumsubwhere .= " AND (transdate <= $todate)";
       $subwhere .= " AND (transdate <= $todate)";
       $glwhere  .= " AND (ac.transdate <= $todate)";
-    }
+      $glsumwhere .= " AND (ac.transdate <= $todate) ";
+      $glsaldowhere .= " AND (ac.transdate <= $todate) ";
+   }
   }
 
-  if ($form->{eur}) {
+  if ($form->{method} eq "cash") {
     $where .=
       qq| AND ((ac.trans_id IN (SELECT id from ar) AND
                 ac.trans_id IN
@@ -897,8 +911,63 @@ sub trial_balance {
                (ac.trans_id in (SELECT id from gl)
                 $glwhere)
               )|;
+    $saldowhere .=       
+qq| AND ((ac.trans_id IN (SELECT id from ar) AND
+                ac.trans_id IN
+                  (
+                    SELECT trans_id
+                    FROM acc_trans
+                    JOIN chart ON (chart_id = id)
+                    WHERE (link LIKE '%AR_paid%')
+                      $saldosubwhere
+                  )
+               )
+               OR
+               (ac.trans_id in (SELECT id from ap) AND
+                ac.trans_id IN
+                  (
+                    SELECT trans_id
+                    FROM acc_trans
+                    JOIN chart ON (chart_id = id)
+                    WHERE (link LIKE '%AP_paid%')
+                      $saldosubwhere
+                  )
+               )
+               OR
+               (ac.trans_id in (SELECT id from gl)
+                $glsaldowhere)
+              )|;
+    $sumwhere .=       
+qq| AND ((ac.trans_id IN (SELECT id from ar) AND
+                ac.trans_id IN
+                  (
+                    SELECT trans_id
+                    FROM acc_trans
+                    JOIN chart ON (chart_id = id)
+                    WHERE (link LIKE '%AR_paid%')
+                      $sumsubwhere
+                  )
+               )
+               OR
+               (ac.trans_id in (SELECT id from ap) AND
+                ac.trans_id IN
+                  (
+                    SELECT trans_id
+                    FROM acc_trans
+                    JOIN chart ON (chart_id = id)
+                    WHERE (link LIKE '%AP_paid%')
+                      $sumsubwhere
+                  )
+               )
+               OR
+               (ac.trans_id in (SELECT id from gl)
+                $glsumwhere)
+              )|;
+
   } else {
     $where .= $tofrom;
+    $saldowhere .= $glsaldowhere;
+    $sumwhere .= $glsumwhere;
   }
 
   $query = qq|
@@ -979,7 +1048,46 @@ sub trial_balance {
             $dpt_where
             $project
           AND ac.amount > 0
-          AND c.accno = ?) AS credit |;
+          AND c.accno = ?) AS credit,
+        (SELECT SUM(ac.amount)
+         FROM acc_trans ac
+         JOIN chart c ON (ac.chart_id = c.id)
+         $dpt_join
+         WHERE $saldowhere
+           $dpt_where
+           $project
+         AND c.accno = ?) AS saldo,
+
+        (SELECT SUM(ac.amount)
+         FROM acc_trans ac
+         JOIN chart c ON (ac.chart_id = c.id)
+         $dpt_join
+         WHERE $sumwhere
+           $dpt_where
+           $project
+         AND amount > 0
+         AND c.accno = ?) AS sum_credit,
+
+        (SELECT SUM(ac.amount)
+         FROM acc_trans ac
+         JOIN chart c ON (ac.chart_id = c.id)
+         $dpt_join
+         WHERE $sumwhere
+           $dpt_where
+           $project
+         AND amount < 0
+         AND c.accno = ?) AS sum_debit,
+
+        (SELECT max(ac.transdate) FROM acc_trans ac
+        JOIN chart c ON (ac.chart_id = c.id)
+        $dpt_join
+        WHERE $where
+          $dpt_where
+          $project
+        AND c.accno = ?) AS last_transaction
+
+
+ |;
 
   $drcr = prepare_query($form, $dbh, $q_drcr);
 
@@ -1007,50 +1115,108 @@ sub trial_balance {
            WHERE $invwhere
              $dpt_where
              $project
-           AND c.accno = ?) AS credit |;
+           AND c.accno = ?) AS credit,
+
+        (SELECT SUM(ac.amount)
+         FROM acc_trans ac
+         JOIN chart c ON (ac.chart_id = c.id)
+         $dpt_join
+         WHERE $saldowhere
+           $dpt_where
+           $project
+         AND c.accno = ?) AS saldo,
+
+        (SELECT SUM(ac.amount)
+         FROM acc_trans ac
+         JOIN chart c ON (ac.chart_id = c.id)
+         $dpt_join
+         WHERE $sumwhere
+           $dpt_where
+           $project
+         AND amount > 0
+         AND c.accno = ?) AS sum_credit,
+
+        (SELECT SUM(ac.amount)
+         FROM acc_trans ac
+         JOIN chart c ON (ac.chart_id = c.id)
+         $dpt_join
+         WHERE $sumwhere
+           $dpt_where
+           $project
+         AND amount < 0
+         AND c.accno = ?) AS sum_debit,
+
+
+        (SELECT max(ac.transdate) FROM acc_trans ac
+        JOIN chart c ON (ac.chart_id = c.id)
+        $dpt_join
+        WHERE $where
+          $dpt_where
+          $project
+        AND c.accno = ?) AS last_transaction
+ |;
 
     $project_drcr = prepare_query($form, $dbh, $q_project_drcr);
   }
 
-  my ($debit, $credit);
+  my ($debit, $credit, $saldo, $soll_saldo, $haben_saldo,$soll_kummuliert, $haben_kummuliert, $last_transaction);
 
   foreach my $accno (sort keys %trb) {
     $ref = {};
 
     $ref->{accno} = $accno;
     map { $ref->{$_} = $trb{$accno}{$_} }
-      qw(description category charttype amount);
+      qw(description category charttype amount soll_eb haben_eb);
 
     $ref->{balance} = $form->round_amount($balance{ $ref->{accno} }, 2);
 
     if ($trb{$accno}{charttype} eq 'A') {
 
       # get DR/CR
-      do_statement($form, $drcr, $q_drcr, $ref->{accno}, $ref->{accno});
+      do_statement($form, $drcr, $q_drcr, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno});
 
-      ($debit, $credit) = (0, 0);
-      while (($debit, $credit) = $drcr->fetchrow_array) {
+      ($debit, $credit, $saldo, $haben_saldo, $soll_saldo, $soll_kumuliert, $haben_kumuliert) = (0, 0, 0, 0, 0, 0, 0);
+      $last_transaction = "";
+      while (($debit, $credit, $saldo, $haben_kumuliert, $soll_kumuliert, $last_transaction) = $drcr->fetchrow_array) {
         $ref->{debit}  += $debit;
         $ref->{credit} += $credit;
+        if ($saldo >= 0) {
+          $ref->{haben_saldo} += $saldo;
+        } else {
+          $ref->{soll_saldo} += $saldo * -1;
+        }
+        $ref->{last_transaction} = $last_transaction;
+        $ref->{soll_kumuliert} = $soll_kumuliert * -1;
+        $ref->{haben_kumuliert} = $haben_kumuliert;
       }
       $drcr->finish;
 
       if ($form->{project_id}) {
 
         # get DR/CR
-        do_statement($form, $project_drcr, $q_project_drcr, $ref->{accno}, $ref->{accno});
+        do_statement($form, $project_drcr, $q_project_drcr, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno});
 
         ($debit, $credit) = (0, 0);
-        while (($debit, $credit) = $project_drcr->fetchrow_array) {
+        while (($debit, $credit, $saldo, $haben_kumuliert, $soll_kumuliert, $last_transaction) = $project_drcr->fetchrow_array) {
           $ref->{debit}  += $debit;
           $ref->{credit} += $credit;
+          if ($saldo >= 0) {
+            $ref->{haben_saldo} += $saldo;
+          } else {
+            $ref->{soll_saldo} += $saldo * -1;
+          }
+          $ref->{soll_kumuliert} += $soll_kumuliert * -1;
+          $ref->{haben_kumuliert} += $haben_kumuliert;
         }
         $project_drcr->finish;
       }
 
       $ref->{debit}  = $form->round_amount($ref->{debit},  2);
       $ref->{credit} = $form->round_amount($ref->{credit}, 2);
-
+      $ref->{haben_saldo}  = $form->round_amount($ref->{haben_saldo},  2);
+      $ref->{soll_saldo} = $form->round_amount($ref->{soll_saldo}, 2);
+      $ref->{haben_kumuliert}  = $form->round_amount($ref->{haben_kumuliert},  2);
+      $ref->{soll_kumuliert} = $form->round_amount($ref->{soll_kumuliert}, 2);
     }
 
     # add subtotal
@@ -1059,6 +1225,10 @@ sub trial_balance {
     if ($accno) {
       $trb{$accno}{debit}  += $ref->{debit};
       $trb{$accno}{credit} += $ref->{credit};
+      $trb{$accno}{soll_saldo}  += $ref->{soll_saldo};
+      $trb{$accno}{haben_saldo} += $ref->{haben_saldo};
+      $trb{$accno}{soll_kumuliert}  += $ref->{soll_kumuliert};
+      $trb{$accno}{haben_kumuliert} += $ref->{haben_kumuliert};
     }
 
     push @{ $form->{TB} }, $ref;
@@ -1073,7 +1243,10 @@ sub trial_balance {
       if ($accno eq $ref->{accno}) {
         $ref->{debit}  = $trb{$accno}{debit};
         $ref->{credit} = $trb{$accno}{credit};
-      }
+        $ref->{soll_saldo}  = $trb{$accno}{soll_saldo};
+        $ref->{haben_saldo} = $trb{$accno}{haben_saldo};
+        $ref->{soll_kumuliert}  = $trb{$accno}{soll_kumuliert};
+        $ref->{haben_kumuliert} = $trb{$accno}{haben_kumuliert};      }
     }
   }
 
index 88283d0..7fef683 100644 (file)
@@ -586,36 +586,122 @@ $jsscript
 
   if ($form->{report} eq "trial_balance") {
     print qq|
+       <tr>
+         <th align=right nowrap>| . $locale->text('Project') . qq|</th>
+         <td colspan=3>$projectnumber</td>
+       </tr>
         <input type=hidden name=nextsub value=generate_trial_balance>
-        <input type=hidden name=eur value=$eur>
-       <tr>
-         <th align=right>| . $locale->text('From') . qq|</th>
-          <td>
-            $button1
-            $button1_2
-          </td>
-         <th align=right>| . $locale->text('Bis') . qq|</th>
-         <td>
-            $button2
-            $button2_2
-          </td>
+</table>
+<table>
+       <tr>
+         <th align=left><input name=reporttype class=radio type=radio value="custom" checked> |
+      . $locale->text('Customized Report') . qq|</th>
        </tr>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td>
-      <table>
        <tr>
-         <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
-         <td><input name=l_heading class=checkbox type=checkbox value=Y>&nbsp;|
-      . $locale->text('Heading') . qq|
-         <input name=l_subtotal class=checkbox type=checkbox value=Y>&nbsp;|
-      . $locale->text('Subtotal') . qq|
-         <input name=all_accounts class=checkbox type=checkbox value=Y>&nbsp;|
-      . $locale->text('All Accounts') . qq|</td>
+         <th colspan=1>| . $locale->text('Year') . qq|</th>
+         <td><input name=year size=11 title="|
+      . $locale->text('YYYY') . qq|" value="$year"></td>
+       </tr>
+|;
+
+    print qq|
+       <tr>
+               <td align=right>
+<b> | . $locale->text('Yearly') . qq|</b> </td>
+               <th align=left>| . $locale->text('Quarterly') . qq|</th>
+               <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
+       </tr>
+       <tr>
+               <td align=right>&nbsp; <input name=duetyp class=radio type=radio value="13"
+$checked></td>
+               <td><input name=duetyp class=radio type=radio value="A" $checked >&nbsp;1. |
+      . $locale->text('Quarter') . qq|</td>
+|;
+    $checked = "checked";
+    print qq|
+               <td><input name=duetyp class=radio type=radio value="1" $checked >&nbsp;|
+      . $locale->text('January') . qq|</td>
+|;
+    $checked = "";
+    print qq|
+               <td><input name=duetyp class=radio type=radio value="5" $checked >&nbsp;|
+      . $locale->text('May') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="9" $checked >&nbsp;|
+      . $locale->text('September') . qq|</td>
+
+       </tr>
+       <tr>
+               <td align= right>&nbsp;</td>
+               <td><input name=duetyp class=radio type=radio value="B" $checked>&nbsp;2. |
+      . $locale->text('Quarter') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="2" $checked >&nbsp;|
+      . $locale->text('February') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="6" $checked >&nbsp;|
+      . $locale->text('June') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="10" $checked >&nbsp;|
+      . $locale->text('October') . qq|</td>
+       </tr>
+       <tr>
+               <td> &nbsp;</td>
+               <td><input name=duetyp class=radio type=radio value="C" $checked>&nbsp;3. |
+      . $locale->text('Quarter') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="3" $checked >&nbsp;|
+      . $locale->text('March') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="7" $checked >&nbsp;|
+      . $locale->text('July') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="11" $checked >&nbsp;|
+      . $locale->text('November') . qq|</td>
+
        </tr>
+       <tr>
+               <td> &nbsp;</td>
+               <td><input name=duetyp class=radio type=radio value="D" $checked>&nbsp;4. |
+      . $locale->text('Quarter') . qq|&nbsp;</td>
+               <td><input name=duetyp class=radio type=radio value="4" $checked >&nbsp;|
+      . $locale->text('April') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="8" $checked >&nbsp;|
+      . $locale->text('August') . qq|</td>
+               <td><input name=duetyp class=radio type=radio value="12" $checked >&nbsp;|
+      . $locale->text('December') . qq|</td>
 
+       </tr>
+       <tr>
+               <td colspan=5><hr size=3 noshade></td>
+       </tr>
+       <tr>
+          <th align=left><input name=reporttype class=radio type=radio value="free" $checked> |
+      . $locale->text('Free report period') . qq|</th>
+         <td align=left colspan=4>| . $locale->text('From') . qq|&nbsp;
+             $button1
+              $button1_2&nbsp;
+             | . $locale->text('Bis') . qq|&nbsp;
+             $button2
+              $button2_2
+          </td>
+        </tr>
+       <tr>
+               <td colspan=5><hr size=3 noshade></td>
+       </tr>
+       <tr>
+         <th align=leftt>| . $locale->text('Method') . qq|</th>
+         <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>|
+      . $locale->text('Accrual') . qq|
+         &nbsp;<input name=method class=radio type=radio value=cash $cash>|
+      . $locale->text('EUR') . qq|</td>
+       </tr>
+       <tr>
+         <th align=right colspan=4>|
+      . $locale->text('All Accounts')
+      . qq|</th>
+             <td><input name=all_accounts type=checkbox value=1></td>
+         </tr>
+        <tr>
+         <th align=right colspan=4>|
+      . $locale->text('Decimalplaces')
+      . qq|</th>
+             <td><input name=decimalplaces size=3 value="2"></td>
+         </tr>
+                                    
 $jsscript
 |;
   }
@@ -1168,14 +1254,241 @@ sub generate_trial_balance {
 
   $auth->assert('report');
 
+  if ($form->{reporttype} eq "custom") {
+
+    #forgotten the year --> thisyear
+    if ($form->{year} !~ m/^\d\d\d\d$/) {
+      $locale->date(\%myconfig, $form->current_date(\%myconfig), 0) =~
+        /(\d\d\d\d)/;
+      $form->{year} = $1;
+    }
+
+    #yearly report
+    if ($form->{duetyp} eq "13") {
+      $form->{fromdate} = "1.1.$form->{year}";
+      $form->{todate}   = "31.12.$form->{year}";
+    }
+
+    #Quater reports
+    if ($form->{duetyp} eq "A") {
+      $form->{fromdate} = "1.1.$form->{year}";
+      $form->{todate}   = "31.3.$form->{year}";
+    }
+    if ($form->{duetyp} eq "B") {
+      $form->{fromdate} = "1.4.$form->{year}";
+      $form->{todate}   = "30.6.$form->{year}";
+    }
+    if ($form->{duetyp} eq "C") {
+      $form->{fromdate} = "1.7.$form->{year}";
+      $form->{todate}   = "30.9.$form->{year}";
+    }
+    if ($form->{duetyp} eq "D") {
+      $form->{fromdate} = "1.10.$form->{year}";
+      $form->{todate}   = "31.12.$form->{year}";
+    }
+
+    #Monthly reports
+  SWITCH: {
+      $form->{duetyp} eq "1" && do {
+        $form->{fromdate} = "1.1.$form->{year}";
+        $form->{todate}   = "31.1.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "2" && do {
+        $form->{fromdate} = "1.2.$form->{year}";
+
+        #this works from 1901 to 2099, 1900 and 2100 fail.
+        $leap = ($form->{year} % 4 == 0) ? "29" : "28";
+        $form->{todate} = "$leap.2.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "3" && do {
+        $form->{fromdate} = "1.3.$form->{year}";
+        $form->{todate}   = "31.3.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "4" && do {
+        $form->{fromdate} = "1.4.$form->{year}";
+        $form->{todate}   = "30.4.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "5" && do {
+        $form->{fromdate} = "1.5.$form->{year}";
+        $form->{todate}   = "31.5.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "6" && do {
+        $form->{fromdate} = "1.6.$form->{year}";
+        $form->{todate}   = "30.6.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "7" && do {
+        $form->{fromdate} = "1.7.$form->{year}";
+        $form->{todate}   = "31.7.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "8" && do {
+        $form->{fromdate} = "1.8.$form->{year}";
+        $form->{todate}   = "31.8.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "9" && do {
+        $form->{fromdate} = "1.9.$form->{year}";
+        $form->{todate}   = "30.9.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "10" && do {
+        $form->{fromdate} = "1.10.$form->{year}";
+        $form->{todate}   = "31.10.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "11" && do {
+        $form->{fromdate} = "1.11.$form->{year}";
+        $form->{todate}   = "30.11.$form->{year}";
+        last SWITCH;
+      };
+      $form->{duetyp} eq "12" && do {
+        $form->{fromdate} = "1.12.$form->{year}";
+        $form->{todate}   = "31.12.$form->{year}";
+        last SWITCH;
+      };
+    }
+  }
+
+
   # get for each account initial balance, debits and credits
   RP->trial_balance(\%myconfig, \%$form);
 
-  $form->{nextsub} = "generate_trial_balance";
-  $form->{title}   = $locale->text('Trial Balance');
-  list_accounts('generate_trial_balance');
+
+  $form->{rowcount} = scalar @{ $form->{TB} };
+
+  my @columns = (
+    "accno",               "description",
+    "last_transaction",    "soll_eb",
+    "haben_eb",
+    "soll",                 "haben",
+    "soll_kumuliert", "haben_kumuliert",
+    "soll_saldo", "haben_saldo"
+  );
+
+
+  my $attachment_basename;
+
+  my $report = SL::ReportGenerator->new(\%myconfig, $form);
+
+  my @hidden_variables = ();
+  push @hidden_variables, qw(fromdate todate year cash );
+
+  my $href = build_std_url('action=orders', grep { $form->{$_} } @hidden_variables);
+
+  my %column_defs = (
+    'accno'                   => { 'text' => $locale->text('Account Number'), },
+    'description'             => { 'text' => $locale->text('Description'), },
+    'last_transaction'        => { 'text' => $locale->text('Last Transaction'), },
+    'soll_eb'                 => { 'text' => $locale->text('Debit Starting Balance'), },
+    'haben_eb'                => { 'text' => $locale->text('Credit Starting Balance'), },
+    'soll'                    => { 'text' => $locale->text('Debit'), },
+    'haben'                   => { 'text' => $locale->text('Credit'), },
+    'soll_kumuliert'          => { 'text' => $locale->text('Sum Debit'), },
+    'haben_kumuliert'         => { 'text' => $locale->text('Sum Credit'), },
+    'soll_saldo'              => { 'text' => $locale->text('Saldo Debit'), },
+    'haben_saldo'                => { 'text' => $locale->text('Saldo Credit'), }
+  );
+
+
+
+  my %column_alignment = map { $_ => 'right' } qw(soll_eb haben_eb soll haben soll_kumuliert haben_kumuliert soll_saldo haben_saldo);
+
+  map { $column_defs{$_}->{visible} =  1 } @columns;
+
+  $report->set_columns(%column_defs);
+  $report->set_column_order(@columns);
+
+  $report->set_export_options('trial_balance', @hidden_variables);
+
+  $report->set_sort_indicator($form->{sort}, 1);
+
+  my @options;
+
+
+  $form->{template_fromto} = $locale->date(\%myconfig, $form->{fromdate}, 0) . "&nbsp; - &nbsp;" . $locale->date(\%myconfig, $form->{todate}, 0);
+  $form->{template_to} = $locale->date(\%myconfig, $form->{todate}, 0);
+
+  $report->set_options('output_format'        => 'HTML',
+                       'title'                => $form->{title},
+                       'attachment_basename'  => $attachment_basename . strftime('_%Y%m%d', localtime time),
+    );
+  $report->set_options_from_form();
+  # $form->parse_html_template('report_generator/html_report_susa', $variables));
+  $form->{report_template} = 'report_generator/html_report_susa';
+  # add sort and escape callback, this one we use for the add sub
+  $form->{callback} = $href .= "&sort=$form->{sort}";
+
+  # escape callback for href
+  $callback = $form->escape($href);
+
+  my @subtotal_columns = qw(soll_eb haben_eb soll haben soll_kumuliert haben_kumuliert soll_saldo haben_saldo);
+
+  my %totals    = map { $_ => 0 } @subtotal_columns;
+
+  my $edit_url = build_std_url('action=edit', 'type', 'vc');
+
+  foreach $accno (@{ $form->{TB} }) {
+
+    $accno->{soll} = $accno->{debit};
+    $accno->{haben} = $accno->{credit};
+    map { $totals{$_}    += $accno->{$_} } @subtotal_columns;
+
+    map { $accno->{$_} = $form->format_amount(\%myconfig, $accno->{$_}, 2) } qw(soll_eb haben_eb soll haben soll_kumuliert haben_kumuliert soll_saldo haben_saldo);
+
+    map { $accno->{$_} = ($accno->{$_} == 0) ? '' : $accno->{$_} } qw(soll_eb haben_eb soll haben soll_kumuliert haben_kumuliert soll_saldo haben_saldo);
+
+    my $row = { };
+
+    foreach my $column (@columns) {
+      $row->{$column} = {
+        'data'  => $accno->{$column},
+        'align' => $column_alignment{$column},
+      };
+    }
+
+
+    $row->{$ordnumber}->{link} = $edit_url . "&id=" . E($oe->{id}) . "&callback=${callback}";
+
+    my $row_set = [ $row ];
+
+
+    $report->add_data($row_set);
+
+    $idx++;
+  }
+
+  $report->add_separator();
+
+  $report->add_data(create_subtotal_row(\%totals, \@columns, \%column_alignment, \@subtotal_columns, 'listtotal'));
+
+  $report->generate_with_headers();
+
+  $lxdebug->leave_sub();
+
+}
+
+sub create_subtotal_row {
+  $lxdebug->enter_sub();
+
+  my ($totals, $columns, $column_alignment, $subtotal_columns, $class) = @_;
+
+  my $row = { map { $_ => { 'data' => '', 'class' => $class, 'align' => $column_alignment->{$_}, } } @{ $columns } };
+
+  map { $row->{$_}->{data} = $form->format_amount(\%myconfig, $totals->{$_}, 2) } @{ $subtotal_columns };
+
+  $row->{tax}->{data} = $form->format_amount(\%myconfig, $totals->{amount} - $totals->{netamount}, 2);
+
+  map { $totals->{$_} = 0 } @{ $subtotal_columns };
 
   $lxdebug->leave_sub();
+
+  return $row;
 }
 
 sub create_list_accounts_subtotal_row {
index 966708e..a78f616 100644 (file)
@@ -11,7 +11,7 @@ $self->{texts} = {
   'Address'                     => 'Adresse',
   'Administration'              => 'Administration',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Authentification database creation' => 'Anlegen der Datenbank zur Benutzerauthentifizierung',
   'Authentification tables creation' => 'Anlegen der Tabellen zur Benutzerauthentifizierung',
index a01295a..68feab4 100644 (file)
@@ -148,11 +148,11 @@ $self->{texts} = {
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
   'Aktion'                      => 'Aktion',
   'All'                         => 'Alle',
-  'All Accounts'                => 'Alle Konten',
+  'All Accounts'                => '',
   'All Datasets up to date!'    => 'Alle Datenbanken sind auf aktuellem Stand.',
   'All changes in that file have been reverted.' => 'Alle &Auml;nderungen in dieser Datei wurden r&uuml;ckg&auml;ngig gemacht.',
   'All database upgrades have been applied.' => 'Alle Datenbankupdates wurden eingespielt.',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Allow access'                => 'Zugriff erlauben',
   'Allow the following users access to my follow-ups:' => 'Erlaube den folgenden Benutzern Zugriff auf meine Wiedervorlagen:',
   'Alternatively you can create a new part which will then be selected.' => 'Sie k&ouml;nnen auch einen neuen Artikel anlegen, der dann automatisch ausgew&auml;hlt wird.',
@@ -181,6 +181,7 @@ aktualisieren wollen?',
   'Assemblies'                  => 'Erzeugnisse',
   'Assembly Number missing!'    => 'Erzeugnisnummer fehlt!',
   'Asset'                       => 'Aktiva/Mittelverwendung',
+  'Assets'                      => 'Aktiva',
   'Assign new units'            => 'Neue Einheiten zuweisen',
   'Assign units'                => 'Einheiten zuweisen',
   'Assume Tax Consultant Data in Tax Computation?' => 'Beraterdaten in UStVA übernehmen?',
@@ -365,6 +366,7 @@ aktualisieren wollen?',
   'Credit Note'                 => 'Gutschrift',
   'Credit Note Date'            => 'Gutschriftdatum',
   'Credit Note Number'          => 'Gutschriftnummer',
+  'Credit Starting Balance'     => 'Eröffnungsbilanzwert Aktiva',
   'Credit Tax'                  => 'Umsatzsteuer',
   'Credit Tax Account'          => 'Umsatzsteuerkonto',
   'Credit note (one letter abbreviation)' => 'G',
@@ -420,6 +422,7 @@ aktualisieren wollen?',
   'Datum von'                   => 'Datum von',
   'Debit'                       => 'Soll',
   'Debit Account'               => 'Sollkonto',
+  'Debit Starting Balance'      => 'Eröffnungsbilanzwert Passiva',
   'Debit Tax'                   => 'Vorsteuer',
   'Debit Tax Account'           => 'Vorsteuerkonto',
   'Debit and credit out of balance!' => 'Soll und Haben müssen gleich sein.',
@@ -791,6 +794,7 @@ aktualisieren wollen?',
   'Last Sales Order Number'     => 'Letzte Auftragsnummer',
   'Last Sales Quotation Number' => 'Letzte Angebotsnummer',
   'Last Service Number'         => 'Letzte Dienstleistungsnr.',
+  'Last Transaction'            => 'Letzte Buchung',
   'Last Vendor Number'          => 'Letzte Lieferantennummer',
   'Lead'                        => 'Kundenquelle',
   'Leave host and port field empty unless you want to make a remote connection.' => 'F&uuml;r lokale Verbindungen "Rechner" und "Port" freilassen.',
@@ -907,7 +911,7 @@ aktualisieren wollen?',
   'No backup file has been uploaded.' => 'Es wurde keine Sicherungsdatei hochgeladen.',
   'No bins have been added to this warehouse yet.' => 'Es wurden zu diesem Lager noch keine Lagerpl&auml;tze angelegt.',
   'No customer has been selected yet.' => 'Es wurde noch kein Kunde ausgewählt.',
-  'No data was found.'          => 'Es wurden keine Daten gefunden.',
+  'No data was found.'          => 'Keine Daten gefunden',
   'No databases have been found on this server.' => 'Auf diesem Server wurden keine Datenbanken gefunden.',
   'No datasets have been selected.' => 'Es wurden keine Datenbanken ausgew&auml;hlt.',
   'No dunnings have been selected for printing.' => 'Es wurden keine Mahnungen zum Drucken ausgew&auml;hlt.',
@@ -1169,6 +1173,9 @@ aktualisieren wollen?',
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
   'SIC'                         => 'SIC',
+  'Saldo Credit'                => 'Saldo Haben',
+  'Saldo Debit'                 => 'Saldo Soll',
+  'Saldo per'                   => 'Saldo per',
   'Sales Invoice'               => 'Rechnung',
   'Sales Invoices'              => 'Kundenrechnung',
   'Sales Order'                 => 'Kundenauftrag',
@@ -1258,6 +1265,7 @@ aktualisieren wollen?',
   'Spoolfile'                   => 'Druckdatei',
   'Start Dunning Process'       => 'Mahnprozess starten',
   'Startdate_coa'               => 'Gültig ab',
+  'Starting Balance'            => 'Eröffnungsbilanzwerte',
   'Statement'                   => 'Sammelrechnung',
   'Statement Balance'           => 'Sammelrechnungsbilanz',
   'Statement sent to'           => 'Sammelrechnung verschickt an',
@@ -1277,6 +1285,11 @@ aktualisieren wollen?',
   'Subject'                     => 'Betreff',
   'Subject:'                    => 'Betreff:',
   'Subtotal'                    => 'Zwischensumme',
+  'Sum Credit'                  => 'Summe Haben',
+  'Sum Debit'                   => 'Summe Soll',
+  'Sum for'                     => 'Summe für',
+  'Sum per'                     => 'Summe per',
+  'Summen- und Saldenliste'     => 'Summen- und Saldenliste',
   'Superuser name'              => 'Datenbankadministrator',
   'System'                      => 'System',
   'TODO list'                   => 'Aufgabenliste',
@@ -1472,7 +1485,7 @@ aktualisieren wollen?',
   'Transfer out and close'      => 'Auslagern und abschließen',
   'Transfer qty'                => 'Umlagermenge',
   'Translation (%s)'            => '&Uuml;bersetzung (%s)',
-  'Trial Balance'               => 'Saldenbilanz',
+  'Trial Balance'               => 'Summen- u. Saldenliste',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Type'                        => 'Typ',
   'Type of Business'            => 'Kunden-/Lieferantentyp',
index 0079ac5..6e31d9c 100644 (file)
@@ -63,7 +63,7 @@ $self->{texts} = {
   'Add and edit %s'             => '%s hinzuf&uuml;gen und bearbeiten',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Article Code'                => 'Artikelkürzel',
   'Article Code missing!'       => 'Artikelkürzel fehlt',
   'Asset'                       => 'Aktiva/Mittelverwendung',
index 4592548..7600722 100644 (file)
@@ -7,7 +7,7 @@ $self->{texts} = {
   'Add custom variable'         => 'Benutzerdefinierte Variable erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
index ba13aed..f3dd32f 100644 (file)
@@ -6,7 +6,7 @@ $self->{texts} = {
   'AR'                          => 'Verkauf',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'BWA'                         => 'BWA',
   'Balance Sheet'               => 'Bilanz',
index db6c676..0964cab 100644 (file)
@@ -12,7 +12,7 @@ $self->{texts} = {
   'Add Accounts Payables Transaction' => 'Kreditorenbuchung erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Amount Due'                  => 'Betrag fällig',
   'Apr'                         => 'Apr',
index 8608db8..53be45f 100644 (file)
@@ -13,7 +13,7 @@ $self->{texts} = {
   'Add Accounts Receivables Transaction' => 'Debitorenbuchung erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Amount Due'                  => 'Betrag fällig',
   'Apr'                         => 'Apr',
index 0498897..068cb1b 100644 (file)
@@ -6,7 +6,7 @@ $self->{texts} = {
   'AR'                          => 'Verkauf',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
index 4673bb7..87b77da 100644 (file)
@@ -7,7 +7,7 @@ $self->{texts} = {
   'Account'                     => 'Konto',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Are you sure you want to remove the marked entries from the queue?' => 'Sind Sie sicher, dass die markierten Einträge von der Warteschlange gelöscht werden sollen?',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
index e56b788..9042121 100644 (file)
@@ -6,7 +6,7 @@ $self->{texts} = {
   'AR'                          => 'Verkauf',
   'Account'                     => 'Konto',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Aug'                         => 'Aug',
index 38b565b..cf87ba7 100644 (file)
@@ -6,7 +6,7 @@ $self->{texts} = {
   'AR'                          => 'Verkauf',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
index 16bb417..00afc3a 100644 (file)
@@ -8,7 +8,7 @@ $self->{texts} = {
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
   'All'                         => 'Alle',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
index 5aa02c6..3736ef2 100644 (file)
@@ -11,7 +11,7 @@ $self->{texts} = {
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
   'All'                         => 'Alle',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
index 74875a0..bc7fe33 100644 (file)
@@ -7,7 +7,7 @@ $self->{texts} = {
   'Abrechnungsnummer'           => 'Abrechnungsnummer',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'April'                       => 'April',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'August'                      => 'August',
index 5641b71..ac2cf83 100644 (file)
@@ -14,7 +14,7 @@ $self->{texts} = {
   'Add Sales Order'             => 'Auftrag erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
index 122f395..ba45823 100644 (file)
@@ -19,7 +19,7 @@ $self->{texts} = {
   'Add Vendor Invoice'          => 'Einkaufsrechnung erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Attachment'                  => 'als Anhang',
index 2bf4f10..be0ee48 100644 (file)
@@ -6,7 +6,7 @@ $self->{texts} = {
   'AR'                          => 'Verkauf',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
index 7ef5e3e..ca14827 100644 (file)
@@ -9,7 +9,7 @@ $self->{texts} = {
   'Add Follow-Up'               => 'Wiedervorlage erstellen',
   'Add Follow-Up for #1'        => 'Wiedervorlage f&uuml;r #1 erstellen',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
   'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte &uuml;berpr&uuml;fen Sie die Angaben in config/authentication.pl.',
index ad9ad91..526d49d 100644 (file)
@@ -11,7 +11,7 @@ $self->{texts} = {
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
   'All'                         => 'Alle',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Are you sure you want to delete Transaction' => 'Buchung wirklich löschen?',
index ff3055d..73ae4c1 100644 (file)
@@ -21,7 +21,7 @@ $self->{texts} = {
   'Add Service'                 => 'Dienstleistung erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Assemblies'                  => 'Erzeugnisse',
index 87c6af7..7642289 100644 (file)
@@ -14,7 +14,7 @@ $self->{texts} = {
   'Add Sales Order'             => 'Auftrag erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
   'Attachment'                  => 'als Anhang',
index c83a947..04b39ed 100644 (file)
@@ -16,7 +16,7 @@ $self->{texts} = {
   'Add Vendor Invoice'          => 'Einkaufsrechnung erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
index 95b6101..8ed1ad3 100644 (file)
@@ -18,7 +18,7 @@ $self->{texts} = {
   'Add Storno Credit Note'      => 'Gutschrift Storno hinzufügen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
index 43351b1..bc77d6a 100644 (file)
@@ -9,7 +9,7 @@ $self->{texts} = {
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
   'All'                         => 'Alle',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
index 94772d2..19f133b 100644 (file)
@@ -23,7 +23,7 @@ $self->{texts} = {
   'Add Vendor Invoice'          => 'Einkaufsrechnung erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
index ff2fc13..f172c7a 100644 (file)
@@ -41,7 +41,7 @@ $self->{texts} = {
   'Add Warehouse'               => 'Lager erfassen',
   'Administration area'         => 'Administrationsbereich',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Assemblies'                  => 'Erzeugnisse',
   'Audit Control'               => 'Bücherkontrolle',
   'BWA'                         => 'BWA',
@@ -171,7 +171,7 @@ $self->{texts} = {
   'To (email)'                  => 'An',
   'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
   'Transfer'                    => 'Umlagern',
-  'Trial Balance'               => 'Saldenbilanz',
+  'Trial Balance'               => 'Summen- u. Saldenliste',
   'Type of Business'            => 'Kunden-/Lieferantentyp',
   'UStVa'                       => 'UStVa',
   'UStVa Einstellungen'         => 'UStVa Einstellungen',
index 2e784b2..688e24c 100755 (executable)
@@ -4,7 +4,7 @@ $self->{texts} = {
   'AP'                          => 'Einkauf',
   'AR'                          => 'Verkauf',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Bcc'                         => 'Bcc',
   'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte &uuml;berpr&uuml;fen Sie die Angaben in config/authentication.pl.',
   'Cc'                          => 'Cc',
index bb322fa..1749c1e 100644 (file)
@@ -40,7 +40,7 @@ $self->{texts} = {
   'Add Warehouse'               => 'Lager erfassen',
   'Administration area'         => 'Administrationsbereich',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Assemblies'                  => 'Erzeugnisse',
   'Audit Control'               => 'Bücherkontrolle',
   'BWA'                         => 'BWA',
@@ -170,7 +170,7 @@ $self->{texts} = {
   'To (email)'                  => 'An',
   'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
   'Transfer'                    => 'Umlagern',
-  'Trial Balance'               => 'Saldenbilanz',
+  'Trial Balance'               => 'Summen- u. Saldenliste',
   'Type of Business'            => 'Kunden-/Lieferantentyp',
   'UStVa'                       => 'UStVa',
   'UStVa Einstellungen'         => 'UStVa Einstellungen',
index c84f999..9607ab3 100644 (file)
@@ -4,7 +4,7 @@ $self->{texts} = {
   'AP'                          => 'Einkauf',
   'AR'                          => 'Verkauf',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Bcc'                         => 'Bcc',
   'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte &uuml;berpr&uuml;fen Sie die Angaben in config/authentication.pl.',
   'Cc'                          => 'Cc',
index 167e196..b4dfe92 100644 (file)
@@ -20,7 +20,7 @@ $self->{texts} = {
   'Add Vendor Invoice'          => 'Einkaufsrechnung erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
index f23f1f5..d230592 100644 (file)
@@ -12,7 +12,7 @@ $self->{texts} = {
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
   'All'                         => 'Alle',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
index 9263743..e0484e9 100644 (file)
@@ -7,7 +7,7 @@ $self->{texts} = {
   'Account'                     => 'Konto',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Balance'                     => 'Bilanz',
   'Bcc'                         => 'Bcc',
index 6adb2a6..4e481f7 100644 (file)
@@ -5,7 +5,7 @@ $self->{texts} = {
   'AP'                          => 'Einkauf',
   'AR'                          => 'Verkauf',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Bcc'                         => 'Bcc',
   'Bin List'                    => 'Lagerliste',
   'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte &uuml;berpr&uuml;fen Sie die Angaben in config/authentication.pl.',
index 7b1ae48..32149f7 100644 (file)
@@ -11,8 +11,8 @@ $self->{texts} = {
   'Accrual'                     => 'Bilanzierung',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All Accounts'                => 'Alle Konten',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All Accounts'                => 'All Accounts',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
@@ -53,6 +53,7 @@ $self->{texts} = {
   'Create and edit vendor invoices' => 'Eingangsrechnungen erfassen und bearbeiten',
   'Credit'                      => 'Haben',
   'Credit Note'                 => 'Gutschrift',
+  'Credit Starting Balance'     => 'Eröffnungsbilanzwert Aktiva',
   'Current'                     => 'Betrag',
   'Current Earnings'            => 'Gewinn',
   'Customer'                    => 'Kunde',
@@ -67,6 +68,7 @@ $self->{texts} = {
   'Dataset upgrade'             => 'Datenbankaktualisierung',
   'Date'                        => 'Datum',
   'Debit'                       => 'Soll',
+  'Debit Starting Balance'      => 'Eröffnungsbilanzwert Passiva',
   'Dec'                         => 'Dez',
   'December'                    => 'Dezember',
   'Decimalplaces'               => 'Dezimalstellen',
@@ -104,6 +106,7 @@ $self->{texts} = {
   'July'                        => 'Juli',
   'Jun'                         => 'Jun',
   'June'                        => 'Juni',
+  'Last Transaction'            => 'Letzte Buchung',
   'MAILED'                      => 'Gesendet',
   'Manage license keys'         => 'Lizenzschl&uuml;ssel verwalten',
   'Mar'                         => 'März',
@@ -171,6 +174,8 @@ $self->{texts} = {
   'SAVED'                       => 'Gespeichert',
   'SAVED FOR DUNNING'           => 'Gespeichert',
   'SCREENED'                    => 'Angezeigt',
+  'Saldo Credit'                => 'Saldo Haben',
+  'Saldo Debit'                 => 'Saldo Soll',
   'Screen'                      => 'Bildschirm',
   'Select a Customer'           => 'Endkunde auswählen',
   'Select a customer'           => 'Einen Kunden ausw&auml;hlen',
@@ -189,6 +194,8 @@ $self->{texts} = {
   'Storno Packing List'         => 'Stornolieferschein',
   'Subject'                     => 'Betreff',
   'Subtotal'                    => 'Zwischensumme',
+  'Sum Credit'                  => 'Summe Haben',
+  'Sum Debit'                   => 'Summe Soll',
   'Tax'                         => 'Steuer',
   'Tax collected'               => 'vereinnahmte Steuer',
   'Tax paid'                    => 'Vorsteuer',
@@ -204,7 +211,7 @@ $self->{texts} = {
   'To (email)'                  => 'An',
   'Total'                       => 'Summe',
   'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
-  'Trial Balance'               => 'Saldenbilanz',
+  'Trial Balance'               => 'Summen- u. Saldenliste',
   'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
   'Unit'                        => 'Einheit',
   'Unknown dependency \'%s\'.'  => 'Unbekannte Abh&auml;ngigkeit \'%s\'.',
@@ -268,6 +275,7 @@ $self->{subs} = {
   'cov_selection_internal'      => 'cov_selection_internal',
   'create_aging_subtotal_row'   => 'create_aging_subtotal_row',
   'create_list_accounts_subtotal_row' => 'create_list_accounts_subtotal_row',
+  'create_subtotal_row'         => 'create_subtotal_row',
   'delivery_customer_selection' => 'delivery_customer_selection',
   'e_mail'                      => 'e_mail',
   'format_dates'                => 'format_dates',
index 7f02fb7..8e943a5 100644 (file)
@@ -22,7 +22,7 @@ $self->{texts} = {
   'Add Vendor Invoice'          => 'Einkaufsrechnung erfassen',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amount'                      => 'Betrag',
   'Apr'                         => 'Apr',
   'April'                       => 'April',
index d49f574..de73773 100644 (file)
@@ -10,7 +10,7 @@ $self->{texts} = {
   'AR'                          => 'Verkauf',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Amended Advance Turnover Tax Return' => 'Berichtigte Anmeldung',
   'Amended Advance Turnover Tax Return (Nr. 10)' => 'Ist dies eine berichtigte Anmeldung? (Nr. 10/Zeile 15 Steuererklärung)',
   'Application Error. No Format given' => 'Fehler in der Anwendung. Das Ausgabeformat fehlt.',
index 9f7ec37..e0937e8 100644 (file)
@@ -8,7 +8,7 @@ $self->{texts} = {
   'AR Transaction'              => 'Debitorenbuchung',
   'Address'                     => 'Adresse',
   'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
-  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
   'Attempt to call an undefined sub named \'%s\'' => 'Es wurde versucht, eine nicht definierte Unterfunktion namens \'%s\' aufzurufen.',
   'Bcc'                         => 'Bcc',
   'Bin'                         => 'Lagerplatz',
diff --git a/templates/webpages/report_generator/html_report_susa_de.html b/templates/webpages/report_generator/html_report_susa_de.html
new file mode 100644 (file)
index 0000000..fd72a83
--- /dev/null
@@ -0,0 +1,120 @@
+[% USE HTML %]<body>
+
+ <script type="text/javascript">
+  <!--
+      function submit_report_generator_form(nextsub) {
+        document.report_generator_form.report_generator_dispatch_to.value = nextsub;
+        document.report_generator_form.submit();
+      }
+
+    -->
+ </script>
+
+ <style type="text/css">
+  <!--
+.top_border {
+  border-top: solid black;
+  border-width: 4px;
+}
+.bottom_border {
+  border-bottom: solid black;
+  border-width: 4px;
+}
+    -->
+ </style>
+
+ [% IF MESSAGE %]
+  <p>[% MESSAGE %]</p>
+ [% END %]
+
+ <div class="listtop" width="100%">Summen- und Saldenliste [% template_fromto %]</div>
+
+ [% IF TOP_INFO_TEXT %]
+  <p>[% TOP_INFO_TEXT %]</p>
+ [% END %]
+
+ [% RAW_TOP_INFO_TEXT %]
+
+ [% IF DATA_PRESENT %]
+ <p>
+  <table width="100%">
+   <tr>
+     <th class="listheading" rowspan=2>Kontonummer</th>
+     <th class="listheading" rowspan=2>Beschreibung</th>
+     <th class="listheading" rowspan=2>Letzte Buchung</th>
+     <th class="listheading" colspan=2>Eröffnungsbilanzwerte</th>
+     <th class="listheading" colspan=2>Summe für [% template_fromto %]</th>
+     <th class="listheading" colspan=2>Summe per [% template_to %]</th>
+     <th class="listheading" colspan=2>Saldo per [% template_to %]</th>
+   </tr>
+   <tr>
+    <th class="listheading">Aktiva</th>
+    <th class="listheading">Passiva</th>
+    <th class="listheading">Soll</th>
+    <th class="listheading">Haben</th>
+    <th class="listheading">Soll</th>
+    <th class="listheading">Haben</th>
+    <th class="listheading">Soll</th>
+    <th class="listheading">Haben</th>
+  
+   [% FOREACH row = ROWS %]
+    [% IF row.IS_CONTROL %]
+     [% IF row.IS_COLSPAN_DATA %]<tr><td colspan="[% row.NUM_COLUMNS %]">[% row.data %]</td></tr>[% END %]
+     [% ELSE %]
+     <tr class="listrow[% row.outer_idx_odd %]">
+      [%- FOREACH col = row.COLUMNS %]
+      <td[% IF col.align %] align="[% col.align %]"[% END %]
+         [%- IF col.valign %] valign="[% col.valign %]"[%- END %]
+         [%- SET tdclass = '' %]
+         [%- IF row.BORDER_TOP %][%- SET tdclass = "$tdclass top_border" %][%- END %]
+         [%- IF row.BORDER_BOTTOM %][%- SET tdclass = "$tdclass bottom_border" %][%- END %]
+         [%- IF col.class %][%- SET tdclass = "$tdclass $col.class" %][%- END %]
+         [%- IF tdclass %] class="[% tdclass %]"[%- END %]>
+       [%- IF col.raw_data %][%- col.raw_data %][%- END %]
+       [%- USE iterator(col.CELL_ROWS) %][%- FOREACH cell_row = iterator %]
+        [%- IF cell_row.data != '' %]
+         [%- IF cell_row.link %]<a href="[% cell_row.link %]">[%- END %]
+         [%- cell_row.data %]
+         [%- IF cell_row.link %]</a>[%- END %]
+        [%- END %]
+       [%- UNLESS iterator.last %]<br>[%- END %]
+       [%- END %]
+      </td>
+      [%- END %]
+     </tr>
+    [% END %]
+   [% END %]
+
+   <tr><td colspan="[% NUM_COLUMNS %]"><hr size="3" noshade></td></tr>
+
+  </table>
+ </p>
+ [% ELSE %]
+  <p>Keine Daten gefunden</p>
+ [% END %]
+
+ [% RAW_BOTTOM_INFO_TEXT %]
+
+ [% IF BOTTOM_INFO_TEXT %]
+  <p>[% BOTTOM_INFO_TEXT %]</p>
+ [% END %]
+
+ [% IF SHOW_EXPORT_BUTTONS %]
+  <form action="[% HTML.escape(script) %]" name="report_generator_form" method="post">
+   [% FOREACH var = EXPORT_VARIABLES %]<input type="hidden" name="report_generator_hidden_[% var.key %]" value="[% HTML.escape(var.value) %]">
+   [% END %]
+
+   <input type="hidden" name="report_generator_nextsub" value="[% HTML.escape(EXPORT_NEXTSUB) %]">
+   <input type="hidden" name="report_generator_variable_list" value="[% HTML.escape(EXPORT_VARIABLE_LIST) %]">
+   <input type="hidden" name="report_generator_dispatch_to" value="">
+   <input type="hidden" name="action" value="report_generator_dispatcher">
+
+   <p>
+    Listenexport<br>
+    [% IF ALLOW_PDF_EXPORT %]<button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_pdf')">Als PDF exportieren</button>[% END %]
+    [% IF ALLOW_CSV_EXPORT %]<button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_csv')">Als CSV exportieren</button>[% END %]
+   </p>
+  </form>
+ [% END %]
+
+</body>
diff --git a/templates/webpages/report_generator/html_report_susa_master.html b/templates/webpages/report_generator/html_report_susa_master.html
new file mode 100644 (file)
index 0000000..dbaf412
--- /dev/null
@@ -0,0 +1,120 @@
+[% USE HTML %]<body>
+
+ <script type="text/javascript">
+  <!--
+      function submit_report_generator_form(nextsub) {
+        document.report_generator_form.report_generator_dispatch_to.value = nextsub;
+        document.report_generator_form.submit();
+      }
+
+    -->
+ </script>
+
+ <style type="text/css">
+  <!--
+.top_border {
+  border-top: solid black;
+  border-width: 4px;
+}
+.bottom_border {
+  border-bottom: solid black;
+  border-width: 4px;
+}
+    -->
+ </style>
+
+ [% IF MESSAGE %]
+  <p>[% MESSAGE %]</p>
+ [% END %]
+
+ <div class="listtop" width="100%"><translate>Summen- und Saldenliste</translate> [% template_fromto %]</div>
+
+ [% IF TOP_INFO_TEXT %]
+  <p>[% TOP_INFO_TEXT %]</p>
+ [% END %]
+
+ [% RAW_TOP_INFO_TEXT %]
+
+ [% IF DATA_PRESENT %]
+ <p>
+  <table width="100%">
+   <tr>
+     <th class="listheading" rowspan=2><translate>Account Number</translate></th>
+     <th class="listheading" rowspan=2><translate>Description</translate></th>
+     <th class="listheading" rowspan=2><translate>Last Transaction</translate></th>
+     <th class="listheading" colspan=2><translate>Starting Balance</translate></th>
+     <th class="listheading" colspan=2><translate>Sum for</translate> [% template_fromto %]</th>
+     <th class="listheading" colspan=2><translate>Sum per</translate> [% template_to %]</th>
+     <th class="listheading" colspan=2><translate>Saldo per</translate> [% template_to %]</th>
+   </tr>
+   <tr>
+    <th class="listheading"><translate>Assets</translate></th>
+    <th class="listheading"><translate>Equity</translate></th>
+    <th class="listheading"><translate>Debit</translate></th>
+    <th class="listheading"><translate>Credit</translate></th>
+    <th class="listheading"><translate>Debit</translate></th>
+    <th class="listheading"><translate>Credit</translate></th>
+    <th class="listheading"><translate>Debit</translate></th>
+    <th class="listheading"><translate>Credit</translate></th>
+  
+   [% FOREACH row = ROWS %]
+    [% IF row.IS_CONTROL %]
+     [% IF row.IS_COLSPAN_DATA %]<tr><td colspan="[% row.NUM_COLUMNS %]">[% row.data %]</td></tr>[% END %]
+     [% ELSE %]
+     <tr class="listrow[% row.outer_idx_odd %]">
+      [%- FOREACH col = row.COLUMNS %]
+      <td[% IF col.align %] align="[% col.align %]"[% END %]
+         [%- IF col.valign %] valign="[% col.valign %]"[%- END %]
+         [%- SET tdclass = '' %]
+         [%- IF row.BORDER_TOP %][%- SET tdclass = "$tdclass top_border" %][%- END %]
+         [%- IF row.BORDER_BOTTOM %][%- SET tdclass = "$tdclass bottom_border" %][%- END %]
+         [%- IF col.class %][%- SET tdclass = "$tdclass $col.class" %][%- END %]
+         [%- IF tdclass %] class="[% tdclass %]"[%- END %]>
+       [%- IF col.raw_data %][%- col.raw_data %][%- END %]
+       [%- USE iterator(col.CELL_ROWS) %][%- FOREACH cell_row = iterator %]
+        [%- IF cell_row.data != '' %]
+         [%- IF cell_row.link %]<a href="[% cell_row.link %]">[%- END %]
+         [%- cell_row.data %]
+         [%- IF cell_row.link %]</a>[%- END %]
+        [%- END %]
+       [%- UNLESS iterator.last %]<br>[%- END %]
+       [%- END %]
+      </td>
+      [%- END %]
+     </tr>
+    [% END %]
+   [% END %]
+
+   <tr><td colspan="[% NUM_COLUMNS %]"><hr size="3" noshade></td></tr>
+
+  </table>
+ </p>
+ [% ELSE %]
+  <p><translate>No data was found.</translate></p>
+ [% END %]
+
+ [% RAW_BOTTOM_INFO_TEXT %]
+
+ [% IF BOTTOM_INFO_TEXT %]
+  <p>[% BOTTOM_INFO_TEXT %]</p>
+ [% END %]
+
+ [% IF SHOW_EXPORT_BUTTONS %]
+  <form action="[% HTML.escape(script) %]" name="report_generator_form" method="post">
+   [% FOREACH var = EXPORT_VARIABLES %]<input type="hidden" name="report_generator_hidden_[% var.key %]" value="[% HTML.escape(var.value) %]">
+   [% END %]
+
+   <input type="hidden" name="report_generator_nextsub" value="[% HTML.escape(EXPORT_NEXTSUB) %]">
+   <input type="hidden" name="report_generator_variable_list" value="[% HTML.escape(EXPORT_VARIABLE_LIST) %]">
+   <input type="hidden" name="report_generator_dispatch_to" value="">
+   <input type="hidden" name="action" value="report_generator_dispatcher">
+
+   <p>
+    Listenexport<br>
+    [% IF ALLOW_PDF_EXPORT %]<button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_pdf')">Als PDF exportieren</button>[% END %]
+    [% IF ALLOW_CSV_EXPORT %]<button type="button" class="submit" onclick="submit_report_generator_form('report_generator_export_as_csv')">Als CSV exportieren</button>[% END %]
+   </p>
+  </form>
+ [% END %]
+
+</body>