Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 5be29159

Von Sven Schöling vor fast 16 Jahren hinzugefügt

  • ID 5be291594a4ead20f6900b249357deb262137cac
  • Vorgänger dc6e7f0d
  • Nachfolger bd6a8782

Bilanz Fix - erste Version.

Unterschiede anzeigen:

SL/RP.pm
###=====================================================================
#=====================================================================
# LX-Office ERP
# Copyright (C) 2004
# Based on SQL-Ledger Version 2.1.9
......
use SL::DBUtils;
use Data::Dumper;
use List::Util qw(sum);
use strict;
use warnings;
# new implementation of balance sheet
# readme!
#
# stuff missing from the original implementation:
# - bold stuff
# - format (2 places, varying signs of negative amounts)
# - rounding (might not be necessary)
# - accno and subdescription
# - proper testing for heading charts
# - transmission from $form to TMPL realm is not as clear as i'd like
sub balance_sheet {
$main::lxdebug->enter_sub();
my ($self, $myconfig, $form) = @_;
# connect to database
my $dbh = $form->dbconnect($myconfig);
my $myconfig = \%main::myconfig;
my $form = $main::form;
my $dbh = $form->get_standard_dbh($myconfig);
my $last_period = 0;
my @categories = qw(A C L Q);
......
}
$form->{decimalplaces} *= 1;
my $dec = $form->{decimalplaces};
&get_accounts($dbh, $last_period, "", $form->{asofdate}, $form,
\@categories);
get_accounts($dbh, $last_period, "", $form->{asofdate}, $form, \@categories);
# if there are any compare dates
if ($form->{compareasofdate}) {
$last_period = 1;
&get_accounts($dbh, $last_period, "", $form->{compareasofdate},
$form, \@categories);
get_accounts($dbh, $last_period, "", $form->{compareasofdate}, $form, \@categories);
$form->{last_period} = conv_dateq($form->{compareasofdate});
}
# disconnect
$dbh->disconnect;
# now we got $form->{A}{accno}{ } assets
# and $form->{L}{accno}{ } liabilities
# and $form->{Q}{accno}{ } equity
# build asset accounts
my $str;
my $key;
my %account = (
'A' => { 'label' => 'asset',
'labels' => 'assets',
'ml' => -1
},
'L' => { 'label' => 'liability',
'labels' => 'liabilities',
'ml' => 1
},
'Q' => { 'label' => 'equity',
'labels' => 'equity',
'ml' => 1
});
my %account = ('A' => { 'ml' => -1 },
'L' => { 'ml' => 1 },
'Q' => { 'ml' => 1 });
my $TMPL_DATA = {};
foreach my $category (grep { !/C/ } @categories) {
foreach $key (sort keys %{ $form->{$category} }) {
$TMPL_DATA->{$category} = [];
$str = ($form->{l_heading}) ? $form->{padding} : "";
foreach my $key (sort keys %{ $form->{$category} }) {
if ($form->{$category}{$key}{charttype} eq "A") {
$str .=
($form->{l_accno})
? "$form->{$category}{$key}{accno} - $form->{$category}{$key}{description}"
: "$form->{$category}{$key}{description}";
}
if ($form->{$category}{$key}{charttype} eq "H") {
if ($account{$category}{subtotal} && $form->{l_subtotal}) {
$dash = "- ";
push(@{ $form->{"$account{$category}{label}_account"} },
"$str$form->{bold}$account{$category}{subdescription}$form->{endbold}"
);
push(@{ $form->{"$account{$category}{label}_this_period"} },
$form->format_amount(
$myconfig,
$account{$category}{subthis} * $account{$category}{ml},
$form->{decimalplaces}, $dash
));
my $row = { %{ $form->{$category}{$key} } };
if ($last_period) {
push(@{ $form->{"$account{$category}{label}_last_period"} },
$form->format_amount(
$myconfig,
$account{$category}{sublast} * $account{$category}{ml},
$form->{decimalplaces}, $dash
));
}
# if charttype "heading" - calculate this entry, start a new batch of charts belonging to this heading and skip the rest bo the loop
if ($row->{charttype} eq "H") {
if ($account{$category}{subtotal} && $form->{l_subtotal}) {
$row->{subdescription} = $account{$category}{subdescription};
$row->{this} = $account{$category}{subthis} * $account{$category}{ml}; # format: $dec, $dash
$row->{last} = $account{$category}{sublast} * $account{$category}{ml} if $last_period; # format: $dec, $dash
}
$str =
"$form->{bold}$form->{$category}{$key}{description}$form->{endbold}";
$row->{subheader} = 1;
$account{$category}{subthis} = $form->{$category}{$key}{this};
$account{$category}{sublast} = $form->{$category}{$key}{last};
$account{$category}{subdescription} =
$form->{$category}{$key}{description};
$account{$category}{subdescription} = $form->{$category}{$key}{description};
$account{$category}{subtotal} = 1;
$form->{$category}{$key}{this} = 0;
$form->{$category}{$key}{last} = 0;
next unless $form->{l_heading};
$dash = " ";
}
# push description onto array
push(@{ $form->{"$account{$category}{label}_account"} }, $str);
$row->{this} = $form->{$category}{$key}{this} * $account{$category}{ml};
if ($form->{$category}{$key}{charttype} eq 'A') {
$form->{"total_$account{$category}{labels}_this_period"} +=
$form->{$category}{$key}{this} * $account{$category}{ml};
$dash = "- ";
# only add assets
if ($row->{charttype} eq 'A') {
$form->{total}{$category}{this} += $row->{this};
}
push(@{ $form->{"$account{$category}{label}_this_period"} },
$form->format_amount(
$myconfig,
$form->{$category}{$key}{this} * $account{$category}{ml},
$form->{decimalplaces}, $dash
));
if ($last_period) {
$form->{"total_$account{$category}{labels}_last_period"} +=
$form->{$category}{$key}{last} * $account{$category}{ml};
push(@{ $form->{"$account{$category}{label}_last_period"} },
$form->format_amount(
$myconfig,
$form->{$category}{$key}{last} * $account{$category}{ml},
$form->{decimalplaces}, $dash
));
$row->{last} = $form->{$category}{$key}{last} * $account{$category}{ml};
$form->{total}{$category}{last} += $row->{last};
}
}
$str = ($form->{l_heading}) ? $form->{padding} : "";
if ($account{$category}{subtotal} && $form->{l_subtotal}) {
push(@{ $form->{"$account{$category}{label}_account"} },
"$str$form->{bold}$account{$category}{subdescription}$form->{endbold}"
);
push(@{ $form->{"$account{$category}{label}_this_period"} },
$form->format_amount(
$myconfig,
$account{$category}{subthis} * $account{$category}{ml},
$form->{decimalplaces}, $dash
));
push @{ $TMPL_DATA->{$category} }, $row;
} # foreach
if ($last_period) {
push(@{ $form->{"$account{$category}{label}_last_period"} },
$form->format_amount(
$myconfig,
$account{$category}{sublast} * $account{$category}{ml},
$form->{decimalplaces}, $dash
));
}
if ($account{$category}{subtotal} && $form->{l_subtotal}) {
$TMPL_DATA->{$category}[-1]{subdescription} = $account{$category}{subdescription};
$TMPL_DATA->{$category}[-1]{this} = $account{$category}{subthis} * $account{$category}{ml}; # format: $dec, $dash
$TMPL_DATA->{$category}[-1]{last} = $account{$category}{sublast} * $account{$category}{ml} if $last_period; # format: $dec, $dash
}
$TMPL_DATA->{total}{$category}{this} = sum map { $_->{this} } @{ $TMPL_DATA->{$category} };
$TMPL_DATA->{total}{$category}{last} = sum map { $_->{last} } @{ $TMPL_DATA->{$category} };
}
# totals for assets, liabilities
$form->{total_assets_this_period} =
$form->round_amount($form->{total_assets_this_period},
$form->{decimalplaces});
$form->{total_liabilities_this_period} =
$form->round_amount($form->{total_liabilities_this_period},
$form->{decimalplaces});
$form->{total_equity_this_period} =
$form->round_amount($form->{total_equity_this_period},
$form->{decimalplaces});
# calculate earnings
$form->{earnings_this_period} =
$form->{total_assets_this_period} -
$form->{total_liabilities_this_period} - $form->{total_equity_this_period};
push(@{ $form->{equity_this_period} },
$form->format_amount($myconfig,
$form->{earnings_this_period},
$form->{decimalplaces}, "- "
));
$form->{total_equity_this_period} =
$form->round_amount(
$form->{total_equity_this_period} + $form->{earnings_this_period},
$form->{decimalplaces});
# add liability + equity
$form->{total_this_period} =
$form->format_amount(
$myconfig,
$form->{total_liabilities_this_period} + $form->{total_equity_this_period},
$form->{decimalplaces},
"- ");
if ($last_period) {
# totals for assets, liabilities
$form->{total_assets_last_period} =
$form->round_amount($form->{total_assets_last_period},
$form->{decimalplaces});
$form->{total_liabilities_last_period} =
$form->round_amount($form->{total_liabilities_last_period},
$form->{decimalplaces});
$form->{total_equity_last_period} =
$form->round_amount($form->{total_equity_last_period},
$form->{decimalplaces});
# calculate retained earnings
$form->{earnings_last_period} =
$form->{total_assets_last_period} -
$form->{total_liabilities_last_period} -
$form->{total_equity_last_period};
push(@{ $form->{equity_last_period} },
$form->format_amount($myconfig,
$form->{earnings_last_period},
$form->{decimalplaces}, "- "
));
$form->{total_equity_last_period} =
$form->round_amount(
$form->{total_equity_last_period} + $form->{earnings_last_period},
$form->{decimalplaces});
# add liability + equity
$form->{total_last_period} =
$form->format_amount($myconfig,
$form->{total_liabilities_last_period} +
$form->{total_equity_last_period},
$form->{decimalplaces},
"- ");
for my $period (qw(this last)) {
next if ($period eq 'last' && !$last_period);
$form->{E}{$period} = $form->{total}{A}{$period} - $form->{total}{L}{$period} - $form->{total}{Q}{$period};
$form->{total}{Q}{$period} += $form->{E}{$period};
$TMPL_DATA->{total}{Q}{$period} = $form->{total}{Q}{$period};
$TMPL_DATA->{total}{$period} = $form->{total}{L}{$period} + $form->{total}{Q}{$period};
}
$form->{total_liabilities_last_period} =
$form->format_amount($myconfig,
$form->{total_liabilities_last_period},
$form->{decimalplaces}, "- ")
if ($form->{total_liabilities_last_period} != 0);
$form->{total_equity_last_period} =
$form->format_amount($myconfig,
$form->{total_equity_last_period},
$form->{decimalplaces}, "- ")
if ($form->{total_equity_last_period} != 0);
$form->{total_assets_last_period} =
$form->format_amount($myconfig,
$form->{total_assets_last_period},
$form->{decimalplaces}, "- ")
if ($form->{total_assets_last_period} != 0);
$form->{total_assets_this_period} =
$form->format_amount($myconfig,
$form->{total_assets_this_period},
$form->{decimalplaces}, "- ");
$form->{total_liabilities_this_period} =
$form->format_amount($myconfig,
$form->{total_liabilities_this_period},
$form->{decimalplaces}, "- ");
$form->{total_equity_this_period} =
$form->format_amount($myconfig,
$form->{total_equity_this_period},
$form->{decimalplaces}, "- ");
push @{ $TMPL_DATA->{Q} }, $form->{E};
$main::lxdebug->leave_sub();
return $TMPL_DATA;
}
sub get_accounts {
......
my ($null, $department_id) = split /--/, $form->{department};
my $query;
my $dpt_where;
my $dpt_join;
my $project;
my $where = "1 = 1";
my $glwhere = "";
my $subwhere = "";
my $dpt_where = '';
my $dpt_join = '';
my $project = '';
my $where = "1 = 1";
my $glwhere = "";
my $subwhere = "";
my $item;
my $sth;
my $dec = $form->{decimalplaces};
my $category = qq| AND (| . join(" OR ", map({ "(c.category = " . $dbh->quote($_) . ")" } @{$categories})) . qq|) |;
......
$sth = prepare_execute_query($form, $dbh, $query);
my @headingaccounts = ();
while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
$form->{ $ref->{category} }{ $ref->{accno} }{description} =
"$ref->{description}";
$form->{ $ref->{category} }{ $ref->{accno} }{charttype} = "H";
......
my $accno;
my $ref;
my $sth = prepare_execute_query($form, $dbh, $query);
$sth = prepare_execute_query($form, $dbh, $query);
while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
while ($ref = $sth->fetchrow_hashref("NAME_lc")) {
if ($ref->{category} eq 'C') {
$ref->{category} = 'A';
......
}
$form->{ $ref->{category} }{ $ref->{accno} }{accno} = $ref->{accno};
$form->{ $ref->{category} }{ $ref->{accno} }{description} =
$ref->{description};
$form->{ $ref->{category} }{ $ref->{accno} }{description} = $ref->{description};
$form->{ $ref->{category} }{ $ref->{accno} }{charttype} = "A";
if ($last_period) {
......
# remove accounts with zero balance
foreach $category (@{$categories}) {
foreach $accno (keys %{ $form->{$category} }) {
$form->{$category}{$accno}{last} =
$form->round_amount($form->{$category}{$accno}{last},
$form->{decimalplaces});
$form->{$category}{$accno}{this} =
$form->round_amount($form->{$category}{$accno}{this},
$form->{decimalplaces});
$form->{$category}{$accno}{last} = $form->round_amount($form->{$category}{$accno}{last}, $dec);
$form->{$category}{$accno}{this} = $form->round_amount($form->{$category}{$accno}{this}, $dec);
delete $form->{$category}{$accno}
if ( $form->{$category}{$accno}{this} == 0
......
my $sth = prepare_execute_query($form, $dbh, $query);
while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
while ($ref = $sth->fetchrow_hashref("NAME_lc")) {
if ($category eq "pos_bwa") {
if ($last_period) {
$form->{ $ref->{$category} }{kumm} += $ref->{amount};
......
}
my $acc_cash_where = "";
my $ar_cash_where = "";
my $ap_cash_where = "";
# my $ar_cash_where = "";
# my $ap_cash_where = "";
if ($form->{method} eq "cash") {
$acc_cash_where = qq| AND (ac.trans_id IN (SELECT id FROM ar WHERE datepaid>='$form->{fromdate}' AND datepaid<='$form->{todate}' UNION SELECT id FROM ap WHERE datepaid>='$form->{fromdate}' AND datepaid<='$form->{todate}' UNION SELECT id FROM gl WHERE transdate>='$form->{fromdate}' AND transdate<='$form->{todate}')) |;
$ar_ap_cash_where = qq| AND (a.datepaid>='$form->{fromdate}' AND a.datepaid<='$form->{todate}') |;
# $ar_ap_cash_where = qq| AND (a.datepaid>='$form->{fromdate}' AND a.datepaid<='$form->{todate}') |;
}
# get beginning balances
......
$sth = prepare_execute_query($form, $dbh, $query, $form->{fromdate});
while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
if ($ref->{amount} != 0 || $form->{all_accounts}) {
$trb{ $ref->{accno} }{description} = $ref->{description};
......
$sth = prepare_execute_query($form, $dbh, $query);
while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
while ($ref = $sth->fetchrow_hashref("NAME_lc")) {
$trb{ $ref->{accno} }{description} = $ref->{description};
$trb{ $ref->{accno} }{charttype} = 'H';
$trb{ $ref->{accno} }{category} = $ref->{category};
......
$sth->finish;
$where = " 1 = 1 ";
$saldowhere = " 1 = 1 ";
$sumwhere = " 1 = 1 ";
my $saldowhere = " 1 = 1 ";
my $sumwhere = " 1 = 1 ";
my $subwhere = '';
my $sumsubwhere = '';
my $saldosubwhere = '';
my $glsaldowhere = '';
my $glsubwhere = '';
my $glwhere = '';
my $glsumwhere = '';
my $tofrom;
if ($form->{fromdate} || $form->{todate}) {
if ($form->{fromdate}) {
my $fromdate = conv_dateq($form->{fromdate});
$tofrom .= " AND (ac.transdate >= $fromdate)";
$subwhere .= " AND (transdate >= $fromdate)";
$sumsubwhere .= " AND (transdate >= (select date_trunc('year', date $fromdate))) ";
$tofrom .= " AND (ac.transdate >= $fromdate)";
$subwhere .= " AND (transdate >= $fromdate)";
$sumsubwhere .= " AND (transdate >= (select date_trunc('year', date $fromdate))) ";
$saldosubwhere .= " AND transdate>=(select date_trunc('year', date $fromdate)) ";
$invwhere .= " AND (a.transdate >= $fromdate)";
$glsaldowhere .= " AND ac.transdate>=(select date_trunc('year', date $fromdate)) ";
$glwhere = " AND (ac.transdate >= $fromdate)";
$glsumwhere = " AND (ac.transdate >= (select date_trunc('year', date $fromdate))) ";
$invwhere .= " AND (a.transdate >= $fromdate)";
$glsaldowhere .= " AND ac.transdate>=(select date_trunc('year', date $fromdate)) ";
$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)";
$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) ";
$sumsubwhere .= " AND (transdate <= $todate)";
$subwhere .= " AND (transdate <= $todate)";
$glwhere .= " AND (ac.transdate <= $todate)";
$glsumwhere .= " AND (ac.transdate <= $todate) ";
$glsaldowhere .= " AND (ac.transdate <= $todate) ";
}
}
......
$sth = prepare_execute_query($form, $dbh, $query);
# calculate the debit and credit in the period
while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
while ($ref = $sth->fetchrow_hashref("NAME_lc")) {
$trb{ $ref->{accno} }{description} = $ref->{description};
$trb{ $ref->{accno} }{charttype} = 'A';
$trb{ $ref->{accno} }{category} = $ref->{category};
......
# get DR/CR
do_statement($form, $drcr, $q_drcr, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno}, $ref->{accno});
($debit, $credit, $saldo, $haben_saldo, $soll_saldo, $soll_kumuliert, $haben_kumuliert) = (0, 0, 0, 0, 0, 0, 0);
($debit, $credit, $saldo, $haben_saldo, $soll_saldo) = (0, 0, 0, 0, 0);
my ($soll_kumuliert, $haben_kumuliert) = (0, 0);
$last_transaction = "";
while (($debit, $credit, $saldo, $haben_kumuliert, $soll_kumuliert, $last_transaction) = $drcr->fetchrow_array) {
$ref->{debit} += $debit;
......
}
# add subtotal
my @accno;
@accno = grep { $_ le "$ref->{accno}" } @headingaccounts;
$accno = pop @accno;
if ($accno) {
......
$dbh->disconnect;
# debits and credits for headings
foreach $accno (@headingaccounts) {
foreach my $accno (@headingaccounts) {
foreach $ref (@{ $form->{TB} }) {
if ($accno eq $ref->{accno}) {
$ref->{debit} = $trb{$accno}{debit};
......
my $dpt_join;
if ($form->{department}) {
($null, $department_id) = split /--/, $form->{department};
my ($null, $department_id) = split /--/, $form->{department};
$dpt_join = qq| JOIN department d ON (a.department_id = d.id) |;
$where .= qq| AND (a.department_id = | . conv_i($department_id, 'NULL') . qq|)|;
}
......
while (my ($id) = $sth->fetchrow_array) {
do_statement($form, $sth_details, $q_details, $id);
while (my $ref = $sth_details->fetchrow_hashref(NAME_lc)) {
while (my $ref = $sth_details->fetchrow_hashref("NAME_lc")) {
$ref->{module} = ($ref->{invoice}) ? $invoice : $arap;
$ref->{exchangerate} = 1 unless $ref->{exchangerate};
push @{ $form->{AG} }, $ref;
......
my $sortorder = join ', ', $form->sort_columns(qw(transdate invnumber name));
$sortorder = $form->{sort} if ($form->{sort} && grep({ $_ eq $form->{sort} } qw(id transdate invnumber name netamount tax)));
my $query = '';
if ($form->{report} !~ /nontaxable/) {
$query =
qq|SELECT a.id, '0' AS invoice, $transdate AS transdate, a.invnumber, n.name, a.netamount,
......
my $ml = 1;
my $arap;
my $table;
if ($form->{db} eq 'ar') {
$table = 'customer';
$ml = -1;
......
}
$query = qq|SELECT id, accno, description FROM chart WHERE accno = ?|;
my $sth = prepare_query($form, $dbh, $query);
$sth = prepare_query($form, $dbh, $query);
my $q_details =
qq|SELECT c.name, a.invnumber, a.ordnumber,
......
&get_accounts_g($dbh, $last_period, $form->{fromdate}, $form->{todate}, $form, "pos_bwa");
# if there are any compare dates
my $year;
if ($form->{fromdate} || $form->{todate}) {
$last_period = 1;
if ($form->{fromdate}) {
......
$form->{todate} =~ /[0-9]*\.[0-9]*\.([0-9]*)/;
$year = $1;
}
$kummfromdate = $form->{comparefromdate};
$kummtodate = $form->{comparetodate};
my $kummfromdate = $form->{comparefromdate};
my $kummtodate = $form->{comparetodate};
&get_accounts_g($dbh, $last_period, $kummfromdate, $kummtodate, $form, "pos_bwa");
}
@periods = qw(jetzt kumm);
@gesamtleistung = qw(1 2 3);
@gesamtkosten = qw (10 11 12 13 14 15 16 17 18 19 20);
@ergebnisse =
my @periods = qw(jetzt kumm);
my @gesamtleistung = qw(1 2 3);
my @gesamtkosten = qw (10 11 12 13 14 15 16 17 18 19 20);
my @ergebnisse =
qw (rohertrag betriebrohertrag betriebsergebnis neutraleraufwand neutralerertrag ergebnisvorsteuern ergebnis gesamtleistung gesamtkosten);
foreach $key (@periods) {
foreach my $key (@periods) {
$form->{ "$key" . "gesamtleistung" } = 0;
$form->{ "$key" . "gesamtkosten" } = 0;
......
'0');
}
}
foreach $item (@gesamtleistung) {
foreach my $item (@gesamtleistung) {
$form->{ "$key" . "gesamtleistung" } += $form->{$item}{$key};
}
foreach $item (@gesamtkosten) {
foreach my $item (@gesamtkosten) {
$form->{ "$key" . "gesamtkosten" } += $form->{$item}{$key};
}
$form->{ "$key" . "rohertrag" } =
......
'0');
}
}
foreach $item (@ergebnisse) {
foreach my $item (@ergebnisse) {
$form->{ "$key" . "gl" . "$item" } =
$form->format_amount($myconfig,
$form->round_amount(
......
'0');
}
}
foreach $item (@ergebnisse) {
foreach my $item (@ergebnisse) {
$form->{ "$key" . "gk" . "$item" } =
$form->format_amount($myconfig,
$form->round_amount(
......
'0');
}
}
foreach $item (@ergebnisse) {
foreach my $item (@ergebnisse) {
$form->{ "$key" . "pk" . "$item" } =
$form->format_amount($myconfig,
$form->round_amount(
......
'0');
}
}
foreach $item (@ergebnisse) {
foreach my $item (@ergebnisse) {
$form->{ "$key" . "auf" . "$item" } =
$form->format_amount($myconfig,
$form->round_amount(
......
}
}
foreach $item (@ergebnisse) {
foreach my $item (@ergebnisse) {
$form->{ "$key" . "$item" } =
$form->format_amount($myconfig,
$form->round_amount($form->{ "$key" . "$item" },
......
my @categories_euro = qw(48 51 86 91 97 93 94);
$form->{decimalplaces} *= 1;
foreach $item (@categories_cent) {
foreach my $item (@categories_cent) {
$form->{"$item"} = 0;
}
foreach $item (@categories_euro) {
foreach my $item (@categories_euro) {
$form->{"$item"} = 0;
}
......
$form->{"65"} = $form->{"43"} - $form->{"66"};
$form->{"67"} = $form->{"43"} - $form->{"66"};
foreach $item (@categories_cent) {
foreach my $item (@categories_cent) {
$form->{$item} =
$form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),
2, '0');
}
foreach $item (@categories_euro) {
foreach my $item (@categories_euro) {
$form->{$item} =
$form->format_amount($myconfig, $form->round_amount($form->{$item}, 0),
0, '0');
......
$form->{decimalplaces} *= 1;
foreach $item (@categories_einnahmen) {
foreach my $item (@categories_einnahmen) {
$form->{$item} = 0;
}
foreach $item (@categories_ausgaben) {
foreach my $item (@categories_ausgaben) {
$form->{$item} = 0;
}
foreach $item (@ergebnisse) {
foreach my $item (@ergebnisse) {
$form->{$item} = 0;
}
&get_accounts_g($dbh, $last_period, $form->{fromdate}, $form->{todate},
$form, "pos_eur");
foreach $item (@categories_einnahmen) {
foreach my $item (@categories_einnahmen) {
$form->{"eur${item}"} =
$form->format_amount($myconfig, $form->round_amount($form->{$item}, 2));
$form->{"sumeura"} += $form->{$item};
}
foreach $item (@categories_ausgaben) {
foreach my $item (@categories_ausgaben) {
$form->{"eur${item}"} =
$form->format_amount($myconfig, $form->round_amount($form->{$item}, 2));
$form->{"sumeurb"} += $form->{$item};
......
$form->{"guvsumme"} = $form->{"sumeura"} - $form->{"sumeurb"};
foreach $item (@ergebnisse) {
foreach my $item (@ergebnisse) {
$form->{$item} =
$form->format_amount($myconfig, $form->round_amount($form->{$item}, 2));
}
bin/mozilla/rp.pl
use SL::RP;
use SL::Iconv;
use SL::ReportGenerator;
use Data::Dumper;
require "bin/mozilla/arap.pl";
require "bin/mozilla/common.pl";
......
$form->{endbold} = "</b>";
$form->{br} = "<br>";
RP->balance_sheet(\%myconfig, \%$form);
my $data = RP->balance_sheet(\%myconfig, \%$form);
$form->{asofdate} = $form->current_date(\%myconfig) unless $form->{asofdate};
$form->{period} =
$locale->date(\%myconfig, $form->current_date(\%myconfig), 1);
$form->{period} = $locale->date(\%myconfig, $form->current_date(\%myconfig), 1);
($form->{department}) = split /--/, $form->{department};
# define Current Earnings account
$padding = ($form->{l_heading}) ? $form->{padding} : "";
push(@{ $form->{equity_account} },
$padding . $locale->text('Current Earnings'));
push(@{ $form->{equity_account} }, $padding . $locale->text('Current Earnings'));
$form->{this_period} = $locale->date(\%myconfig, $form->{asofdate}, 0);
$form->{last_period} =
$locale->date(\%myconfig, $form->{compareasofdate}, 0);
$form->{last_period} = $locale->date(\%myconfig, $form->{compareasofdate}, 0);
$form->{IN} = "balance_sheet.html";
......
$form->{templates} = $myconfig{templates};
$form->parse_template;
$form->header();
print $form->parse_html_template('rp/balance_sheet', $data);
# $form->parse_template();
$lxdebug->leave_sub();
}
locale/de/all
'AR Transaction' => 'Debitorenbuchung',
'AR Transaction (abbreviation)' => 'D',
'AR Transactions' => 'Debitorenbuchungen',
'ASSETS' => 'AKTIVA',
'About' => '?ber',
'Abrechnungsnummer' => 'Abrechnungsnummer',
'Abteilung' => 'Abteilung',
......
'Auto Send?' => 'Auto. Versand?',
'Automatically created invoice for fee and interest for dunning %s' => 'Automatisch erzeugte Rechnung f?r Geb?hren und Zinsen zu Mahnung %s',
'Available qty' => 'Lagerbestand',
'BALANCE SHEET' => 'BILANZ',
'BOM' => 'St?ckliste',
'BWA' => 'BWA',
'Back' => 'Zur?ck',
......
'ELSTER Export (Winston)' => 'ELSTER Export nach Winston',
'ELSTER Export nach Winston' => 'ELSTER Export nach Winston',
'ELSTER Tax Number' => 'ELSTER-Steuernummer',
'EQUITY' => 'EIGENTUM',
'EU with VAT ID' => 'EU mit UstId-Nummer',
'EU without VAT ID' => 'EU ohne UstId-Nummer',
'EUER' => 'Einnahmen-/?berschussrechnung',
......
'Konten' => 'Konten',
'Kontonummernerweiterung (KNE)' => 'Kontonummernerweiterung (KNE)',
'L' => 'L',
'LIABILITIES' => 'PASSIVA',
'LP' => 'LP',
'LaTeX Templates' => 'LaTeX-Vorlagen',
'Landscape' => 'Querformat',
......
'TODO list' => 'Aufgabenliste',
'TODO list options' => 'Aufgabenlistenoptionen',
'TOP100' => 'Top 100',
'TOTAL' => 'TOTAL',
'Tax' => 'Steuer',
'Tax Consultant' => 'Steuerberater/-in',
'Tax Included' => 'Steuer im Preis inbegriffen',
locale/de/rp
'create_aging_subtotal_row' => 'create_aging_subtotal_row',
'create_list_accounts_subtotal_row' => 'create_list_accounts_subtotal_row',
'create_subtotal_row' => 'create_subtotal_row',
'cross(&\@\@)' => 'cross(&\@\@)',
'delivery_customer_selection' => 'delivery_customer_selection',
'e_mail' => 'e_mail',
'format_dates' => 'format_dates',
templates/webpages/rp/balance_sheet_de.html
[%- USE HTML %]
[%- USE LxERP %]
<body bgcolor="#ffffff">
<h2 align="center">
[% company %]
<br>[% address %]
<p>BILANZ
<br>[% period %]
</h2>
<table border="0">
<tr>
<th align="left" width="400" colspan="2">AKTIVA<br><hr align="left" width="250" size="5" noshade></th>
<th>[% this_period %]</th>
<th>[% last_period %]</th>
</tr>
[% FOREACH row = A %]
<tr>
<td> </td>
<td>[% row.description %]</td>
<td align="right">[% row.this %]</td>
<td align="right">[% row.last %]</td>
</tr>
[% END %]
[% IF l_subtotal %]
<tr>
<td colspan="2"> </td>
<td><hr noshade size="1"></td>
<td><hr noshade size="1"></td>
</tr>
<tr valign="top">
<th align="left" colspan="2">TOTAL</th>
<td align="right">[% total.A.this %]<hr noshade size="2"></td>
<td align="right">[% total.A.last %]<hr noshade size="2"></td>
</tr>
[% END %]
<tr>
<th align="left" colspan="4">PASSIVA<b><hr align="left" width="250" size="5" noshade></th>
</tr>
[% FOREACH row = L %]
<tr>
<td></td>
<td>[% row.description %]</td>
<td align="right">[% row.this %]</td>
<td align="right">[% row.last %]</td>
</tr>
[% END %]
[% IF l_subtotal %]
<tr>
<td colspan="2"> </td>
<td><hr noshade size="1"></td>
<td><hr noshade size="1"></td>
</tr>
<tr valign="top">
<td></td>
<th align="left">TOTAL</th>
<td align="right">[% total.L.this %]<br><hr noshade size="2"</td>
<td align="right">[% total.L.last %]<br><hr noshade size="2"</td>
</tr>
[% END %]
<tr>
<th align="left" colspan="4">EIGENTUM<br><hr align="left" width="250" size="5" noshade></th>
</tr>
[% FOREACH row = Q %]
<tr>
<td></td>
<td>[% row.description %]</td>
<td align="right">[% row.this %]</td>
<td align="right">[% row.last %]</td>
</tr>
[% END %]
[% IF l_subtotal %]
<tr>
<td colspan="2"> </td>
<td><hr noshade size="1"></td>
<td><hr noshade size="1"></td>
</tr>
<tr valign="top">
<td></td>
<th align="left">TOTAL</th>
<td align="right">[% total.Q.this %]<br><hr noshade size="2"</td>
<td align="right">[% total.Q.last %]<br><hr noshade size="2"</td>
</tr>
[% END %]
<tr valign="top">
<th align="left" colspan="2">TOTAL PASSIVA &amp; EIGENTUM</th>
<td align="right">[% total.this %]<br><hr noshade size="2"></td>
<td align="right">[% total.last %]<br><hr noshade size="2"></td>
</tr>
</table>
templates/webpages/rp/balance_sheet_master.html
[%- USE HTML %]
[%- USE LxERP %]
<body bgcolor="#ffffff">
<h2 align="center">
[% company %]
<br>[% address %]
<p><translate>BALANCE SHEET</translate>
<br>[% period %]
</h2>
<table border="0">
<tr>
<th align="left" width="400" colspan="2"><translate>ASSETS</translate><br><hr align="left" width="250" size="5" noshade></th>
<th>[% this_period %]</th>
<th>[% last_period %]</th>
</tr>
[% FOREACH row = A %]
<tr>
<td> </td>
<td>[% row.description %]</td>
<td align="right">[% row.this %]</td>
<td align="right">[% row.last %]</td>
</tr>
[% END %]
[% IF l_subtotal %]
<tr>
<td colspan="2"> </td>
<td><hr noshade size="1"></td>
<td><hr noshade size="1"></td>
</tr>
<tr valign="top">
<th align="left" colspan="2"><translate>TOTAL</translate></th>
<td align="right">[% total.A.this %]<hr noshade size="2"></td>
<td align="right">[% total.A.last %]<hr noshade size="2"></td>
</tr>
[% END %]
<tr>
<th align="left" colspan="4"><translate>LIABILITIES</translate><b><hr align="left" width="250" size="5" noshade></th>
</tr>
[% FOREACH row = L %]
<tr>
<td></td>
<td>[% row.description %]</td>
<td align="right">[% row.this %]</td>
<td align="right">[% row.last %]</td>
</tr>
[% END %]
[% IF l_subtotal %]
<tr>
<td colspan="2"> </td>
<td><hr noshade size="1"></td>
<td><hr noshade size="1"></td>
</tr>
<tr valign="top">
<td></td>
<th align="left"><translate>TOTAL</translate></th>
<td align="right">[% total.L.this %]<br><hr noshade size="2"</td>
<td align="right">[% total.L.last %]<br><hr noshade size="2"</td>
</tr>
[% END %]
<tr>
<th align="left" colspan="4"><translate>EQUITY</translate><br><hr align="left" width="250" size="5" noshade></th>
</tr>
[% FOREACH row = Q %]
<tr>
<td></td>
<td>[% row.description %]</td>
<td align="right">[% row.this %]</td>
<td align="right">[% row.last %]</td>
</tr>
[% END %]
[% IF l_subtotal %]
<tr>
<td colspan="2"> </td>
<td><hr noshade size="1"></td>
<td><hr noshade size="1"></td>
</tr>
<tr valign="top">
<td></td>
<th align="left"><translate>TOTAL</translate></th>
<td align="right">[% total.Q.this %]<br><hr noshade size="2"</td>
<td align="right">[% total.Q.last %]<br><hr noshade size="2"</td>
</tr>
[% END %]
<tr valign="top">
<th align="left" colspan="2"><translate>TOTAL</translate> <translate>LIABILITIES</translate> &amp; <translate>EQUITY</translate></th>
<td align="right">[% total.this %]<br><hr noshade size="2"></td>
<td align="right">[% total.last %]<br><hr noshade size="2"></td>
</tr>
</table>

Auch abrufbar als: Unified diff