keys %{ $form->{charts} };
$form->{"charts_by_category"} = \%charts_by_category;
- # $main::lxdebug->dump(0, "charts_by_category", $form->{charts_by_category} );
-
- $form->{category_names} = { selectall_as_map($form, $dbh, "select * from bwa_categories order by id", 'id', 'description') };
+ $form->{category_names} = AM->get_bwa_categories($myconfig, $form);
my @periods = qw(jetzt kumm);
my @gesamtleistung = qw(1 3);
my %categories = (I => "ERTRAG", E => "AUFWAND");
my $fromdate = conv_dateq($form->{fromdate});
my $todate = conv_dateq($form->{todate});
+ my $department_id = conv_i((split /--/, $form->{department})[1], 'NULL');
$form->{total} = 0;
my %category = (
name => $categories{$category},
total => 0,
- accounts => get_accounts_ch($category),
+ accounts => get_accounts_ch($category)
);
foreach my $account (@{$category{accounts}}) {
- $account->{total} += get_total_ch($account->{id}, $fromdate, $todate);
+ $account->{total} = get_total_ch($department_id, $account->{id}, $fromdate, $todate);
$category{total} += $account->{total};
- $account->{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $account->{total}), 2);
+ $account->{total} = $form->format_amount($myconfig, $form->round_amount($account->{total}, 2), 2);
}
$form->{total} += $category{total};
- $category{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $category{total}), 2);
+ $category{total} = $form->format_amount($myconfig, $form->round_amount($category{total}, 2), 2);
push(@{$form->{categories}}, \%category);
}
- $form->{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $form->{total}), 2);
+ $form->{total} = $form->format_amount($myconfig, $form->round_amount($form->{total}, 2), 2);
$main::lxdebug->leave_sub();
return {};
$main::lxdebug->enter_sub();
my ($category) = @_;
- my ($inclusion);
+ my $inclusion = '' ;
if ($category eq 'I') {
$inclusion = "AND pos_er = NULL OR pos_er = '1'";
sub get_total_ch {
$main::lxdebug->enter_sub();
- my ($chart_id, $fromdate, $todate) = @_;
+ my ($department_id, $chart_id, $fromdate, $todate) = @_;
my $total = 0;
my $query = qq|
SELECT SUM(amount)
AND transdate >= ?
AND transdate <= ?
|;
- $total += _query($query, $chart_id, $fromdate, $todate)->[0]->{sum};
+ if ($department_id) {
+ $query .= qq| AND COALESCE(
+ (SELECT department_id FROM ar WHERE ar.id=trans_id),
+ (SELECT department_id FROM gl WHERE gl.id=trans_id),
+ (SELECT department_id FROM ap WHERE ap.id=trans_id)
+ ) = ? |;
+ $total += _query($query, $chart_id, $fromdate, $todate, $department_id)->[0]->{sum};
+ } else {
+ $total += _query($query, $chart_id, $fromdate, $todate)->[0]->{sum};
+ }
$main::lxdebug->leave_sub();
return $total;