my %cell;
if ($celvalue) {
$cell{rowtitle} = $celvalue;
- } else {
- $cell{rowtitle} = "";
+# } else {
+# $cell{rowtitle} = "";
}
$cell{totalrow} = 0;
push @loopline, \%cell;
while (my ($celvalue) = $sth2->fetchrow) {
my %cell;
my %ft;
- $cell{coltitle} = $celvalue;
- $ft{totalcol} = 0;
+ if ($celvalue) {
+ $cell{coltitle} = $celvalue;
+ }
push @loopcol, \%cell;
}
}
# preparing calculation
- my $strcalc .= "SELECT $linefield, $colfield, count( * ) FROM borrowers WHERE $line is not null AND $column is not null";
+ my $strcalc .= "SELECT $linefield, $colfield, count( * ) FROM borrowers WHERE 1 ";
@$filters[0]=~ s/\*/%/g if (@$filters[0]);
$strcalc .= " AND categorycode like '" . @$filters[0] ."'" if ( @$filters[0] );
@$filters[1]=~ s/\*/%/g if (@$filters[1]);
my $dbcalc = $dbh->prepare($strcalc);
$dbcalc->execute;
# warn "filling table";
+
+ my $emptycol;
while (my ($row, $col, $value) = $dbcalc->fetchrow) {
# warn "filling table $row / $col / $value ";
- $table{$row}->{$col}=$value;
+ $emptycol = 1 if ($col eq undef);
+ $col = "zzEMPTY" if ($col eq undef);
+ $row = "zzEMPTY" if ($row eq undef);
+
+ $table{$row}->{$col}+=$value;
$table{$row}->{totalrow}+=$value;
$grantotal += $value;
}
- foreach my $row ( keys %table ) {
+ push @loopcol,{coltitle => "NULL"} if ($emptycol);
+
+ foreach my $row ( sort keys %table ) {
my @loopcell;
#@loopcol ensures the order for columns is common with column titles
+ # and the number matches the number of columns
foreach my $col ( @loopcol ) {
- push @loopcell, {value => $table{$row}->{$col->{coltitle}}} ;
+ my $value =$table{$row}->{($col->{coltitle} eq "NULL")?"zzEMPTY":$col->{coltitle}};
+ push @loopcell, {value => $value } ;
}
- push @looprow,{ 'rowtitle' => $row,
+ push @looprow,{ 'rowtitle' => ($row eq "zzEMPTY")?"NULL":$row,
'loopcell' => \@loopcell,
- 'hilighted' => 1 ,
+ 'hilighted' => ($hilighted >0),
'totalrow' => $table{$row}->{totalrow}
};
$hilighted = -$hilighted;
foreach my $col ( @loopcol ) {
my $total=0;
- foreach my $row ( @loopline ) {
- $total += $table{$row->{rowtitle}}->{$col->{coltitle}};
+ foreach my $row ( @looprow ) {
+ $total += $table{($row->{rowtitle} eq "NULL")?"zzEMPTY":$row->{rowtitle}}->{($col->{coltitle} eq "NULL")?"zzEMPTY":$col->{coltitle}};
+# warn "value added ".$table{$row->{rowtitle}}->{$col->{coltitle}}. "for line ".$row->{rowtitle};
}
+# warn "summ for column ".$col->{coltitle}." = ".$total;
push @loopfooter, {'totalcol' => $total};
}