}
# 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 =
$sth->finish;
$where = " 1 = 1 ";
+ $saldowhere = " 1 = 1 ";
+ $sumwhere = " 1 = 1 ";
my $tofrom;
if ($form->{fromdate} || $form->{todate}) {
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
(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|
$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);
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
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;
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}; }
}
}
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> |
- . $locale->text('Heading') . qq|
- <input name=l_subtotal class=checkbox type=checkbox value=Y> |
- . $locale->text('Subtotal') . qq|
- <input name=all_accounts class=checkbox type=checkbox value=Y> |
- . $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> <input name=duetyp class=radio type=radio value="13"
+$checked></td>
+ <td><input name=duetyp class=radio type=radio value="A" $checked > 1. |
+ . $locale->text('Quarter') . qq|</td>
+|;
+ $checked = "checked";
+ print qq|
+ <td><input name=duetyp class=radio type=radio value="1" $checked > |
+ . $locale->text('January') . qq|</td>
+|;
+ $checked = "";
+ print qq|
+ <td><input name=duetyp class=radio type=radio value="5" $checked > |
+ . $locale->text('May') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="9" $checked > |
+ . $locale->text('September') . qq|</td>
+
+ </tr>
+ <tr>
+ <td align= right> </td>
+ <td><input name=duetyp class=radio type=radio value="B" $checked> 2. |
+ . $locale->text('Quarter') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="2" $checked > |
+ . $locale->text('February') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="6" $checked > |
+ . $locale->text('June') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="10" $checked > |
+ . $locale->text('October') . qq|</td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td><input name=duetyp class=radio type=radio value="C" $checked> 3. |
+ . $locale->text('Quarter') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="3" $checked > |
+ . $locale->text('March') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="7" $checked > |
+ . $locale->text('July') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="11" $checked > |
+ . $locale->text('November') . qq|</td>
+
</tr>
+ <tr>
+ <td> </td>
+ <td><input name=duetyp class=radio type=radio value="D" $checked> 4. |
+ . $locale->text('Quarter') . qq| </td>
+ <td><input name=duetyp class=radio type=radio value="4" $checked > |
+ . $locale->text('April') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="8" $checked > |
+ . $locale->text('August') . qq|</td>
+ <td><input name=duetyp class=radio type=radio value="12" $checked > |
+ . $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|
+ $button1
+ $button1_2
+ | . $locale->text('Bis') . qq|
+ $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|
+ <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
|;
}
$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) . " - " . $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 {
'Address' => 'Adresse',
'Administration' => 'Administration',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'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 Änderungen in dieser Datei wurden rückgängig gemacht.',
'All database upgrades have been applied.' => 'Alle Datenbankupdates wurden eingespielt.',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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önnen auch einen neuen Artikel anlegen, der dann automatisch ausgewählt wird.',
'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?',
'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',
'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.',
'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ür lokale Verbindungen "Rechner" und "Port" freilassen.',
'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ä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ählt.',
'No dunnings have been selected for printing.' => 'Es wurden keine Mahnungen zum Drucken ausgewählt.',
'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',
'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',
'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',
'Transfer out and close' => 'Auslagern und abschließen',
'Transfer qty' => 'Umlagermenge',
'Translation (%s)' => 'Ü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',
'Add and edit %s' => '%s hinzufügen und bearbeiten',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Article Code' => 'Artikelkürzel',
'Article Code missing!' => 'Artikelkürzel fehlt',
'Asset' => 'Aktiva/Mittelverwendung',
'Add custom variable' => 'Benutzerdefinierte Variable erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'AR' => 'Verkauf',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Add Accounts Payables Transaction' => 'Kreditorenbuchung erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Amount Due' => 'Betrag fällig',
'Apr' => 'Apr',
'Add Accounts Receivables Transaction' => 'Debitorenbuchung erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Amount Due' => 'Betrag fällig',
'Apr' => 'Apr',
'AR' => 'Verkauf',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Account' => 'Konto',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'AR' => 'Verkauf',
'Account' => 'Konto',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Apr' => 'Apr',
'April' => 'April',
'Aug' => 'Aug',
'AR' => 'Verkauf',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
'All' => 'Alle',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
'All' => 'Alle',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Abrechnungsnummer' => 'Abrechnungsnummer',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Add Sales Order' => 'Auftrag erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Apr' => 'Apr',
'April' => 'April',
'Add Vendor Invoice' => 'Einkaufsrechnung erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Apr' => 'Apr',
'April' => 'April',
'Attachment' => 'als Anhang',
'AR' => 'Verkauf',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Add Follow-Up' => 'Wiedervorlage erstellen',
'Add Follow-Up for #1' => 'Wiedervorlage für #1 erstellen',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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 überprüfen Sie die Angaben in config/authentication.pl.',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
'All' => 'Alle',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Apr' => 'Apr',
'April' => 'April',
'Are you sure you want to delete Transaction' => 'Buchung wirklich löschen?',
'Add Service' => 'Dienstleistung erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Apr' => 'Apr',
'April' => 'April',
'Assemblies' => 'Erzeugnisse',
'Add Sales Order' => 'Auftrag erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Apr' => 'Apr',
'April' => 'April',
'Attachment' => 'als Anhang',
'Add Vendor Invoice' => 'Einkaufsrechnung erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Apr' => 'Apr',
'April' => 'April',
'Add Storno Credit Note' => 'Gutschrift Storno hinzufügen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Apr' => 'Apr',
'April' => 'April',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
'All' => 'Alle',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Add Vendor Invoice' => 'Einkaufsrechnung erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Apr' => 'Apr',
'April' => 'April',
'Add Warehouse' => 'Lager erfassen',
'Administration area' => 'Administrationsbereich',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Assemblies' => 'Erzeugnisse',
'Audit Control' => 'Bücherkontrolle',
'BWA' => 'BWA',
'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',
'AP' => 'Einkauf',
'AR' => 'Verkauf',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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 überprüfen Sie die Angaben in config/authentication.pl.',
'Cc' => 'Cc',
'Add Warehouse' => 'Lager erfassen',
'Administration area' => 'Administrationsbereich',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Assemblies' => 'Erzeugnisse',
'Audit Control' => 'Bücherkontrolle',
'BWA' => 'BWA',
'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',
'AP' => 'Einkauf',
'AR' => 'Verkauf',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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 überprüfen Sie die Angaben in config/authentication.pl.',
'Cc' => 'Cc',
'Add Vendor Invoice' => 'Einkaufsrechnung erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Apr' => 'Apr',
'April' => 'April',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
'All' => 'Alle',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'Account' => 'Konto',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
'AP' => 'Einkauf',
'AR' => 'Verkauf',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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 überprüfen Sie die Angaben in config/authentication.pl.',
'Accrual' => 'Bilanzierung',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All Accounts' => 'Alle Konten',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All Accounts' => 'All Accounts',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Apr' => 'Apr',
'April' => 'April',
'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',
'Dataset upgrade' => 'Datenbankaktualisierung',
'Date' => 'Datum',
'Debit' => 'Soll',
+ 'Debit Starting Balance' => 'Eröffnungsbilanzwert Passiva',
'Dec' => 'Dez',
'December' => 'Dezember',
'Decimalplaces' => 'Dezimalstellen',
'July' => 'Juli',
'Jun' => 'Jun',
'June' => 'Juni',
+ 'Last Transaction' => 'Letzte Buchung',
'MAILED' => 'Gesendet',
'Manage license keys' => 'Lizenzschlüssel verwalten',
'Mar' => 'März',
'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ählen',
'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',
'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ängigkeit \'%s\'.',
'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',
'Add Vendor Invoice' => 'Einkaufsrechnung erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Amount' => 'Betrag',
'Apr' => 'Apr',
'April' => 'April',
'AR' => 'Verkauf',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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.',
'AR Transaction' => 'Debitorenbuchung',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
- 'All reports' => 'Alle Berichte (Kontenübersicht, Saldenbilanz, GuV, BWA, Bilanz, Projektbuchungen)',
+ 'All reports' => 'Alle Berichte (Kontenü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',
--- /dev/null
+[% 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>
--- /dev/null
+[% 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>