-
-sub erfolgsrechnung {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
- $form->{company} = $::instance_conf->get_company;
- $form->{address} = $::instance_conf->get_address;
-
- # wrong user inputs should be handled during users input
- # e.g. spaces, tabs, wrong format or wrong dates
- $form->{fromdate} = "01.01.2000" if !$form->{fromdate};
- $form->{todate} = $form->current_date(%{$myconfig}) if !$form->{todate};
-
- my %categories = (I => "ERTRAG", E => "AUFWAND");
- my $fromdate = conv_dateq($form->{fromdate});
- my $todate = conv_dateq($form->{todate});
-
- $form->{total} = 0;
- foreach my $category (keys %categories) {
- my %category = (
- name => $categories{$category},
- total => 0,
- accounts => get_accounts_ch($category),
- );
- foreach my $account (@{$category{accounts}}) {
- $account->{total} += ($account->{category} eq $category ? 1 : -1) * get_total_ch($account->{id}, $fromdate, $todate);
- $category{total} += $account->{total};
- $account->{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $account->{total}), 2);
- }
- $form->{total} += $category{total};
- $category{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $category{total}), 2);
- push(@{$form->{categories}}, \%category);
- }
- $form->{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $form->{total}), 2);
-
- $main::lxdebug->leave_sub();
- return {};
-}
-
-sub get_accounts_ch {
- $main::lxdebug->enter_sub();
-
- my ($category) = @_;
- my ($inclusion);
-
- if ($category eq 'I') {
- $inclusion = "AND pos_er = NULL OR pos_er > '0' AND pos_er <= '5'";
- } elsif ($category eq 'E') {
- $inclusion = "AND pos_er = NULL OR pos_er >= '6' AND pos_er < '100'";
- } else {
- $inclusion = "";
- }
-
- my $query = qq|
- SELECT id, accno, description, category
- FROM chart
- WHERE category = ? $inclusion
- ORDER BY accno
- |;
- my $accounts = selectall_hashref_query($::form, $::form->get_standard_dbh, $query, $category);
-
- $main::lxdebug->leave_sub();
- return $accounts;
-}
-
-sub get_total_ch {
- $main::lxdebug->enter_sub();
-
- my ($chart_id, $fromdate, $todate) = @_;
- my $total = 0;
- my $query = qq|
- SELECT SUM(amount)
- FROM acc_trans
- WHERE chart_id = ?
- AND transdate >= ?
- AND transdate <= ?
- |;
- my $data = selectfirst_hashref_query($::form, $::form->get_standard_dbh, $query, $chart_id, $fromdate, $todate);
- $total += $data->{sum};
-
- $main::lxdebug->leave_sub();
- return $total;
-}
-