- $emptycol=1 if ($col eq undef);
- $col = "zzEMPTY" if ($col eq undef);
- $row = "zzEMPTY" if ($row eq undef);
-# warn "506 row :".$row." column :".$col;
- my @result =split /:/,DateCalc($returndate,$issuedate) ;
-# DateCalc returns => 0:0:WK:DD:HH:MM:SS the weeks, days, hours, minutes,
-# and seconds between the two
- $loanlength = $result[2]*7+$result[3];
-# warn "512 Same row and col DateCalc returns :$loanlength with return ". $returndate ."issue ". $issuedate ."weight : ". $weight;
-# warn "513 row :".$row." column :".$col;
- $table{$row}->{$col}+=$weight*$loanlength;
-# $table{$row}->{totalrow}+=$weight*$loanlength;
- $cnttable{$row}->{$col}= 1;
- $wgttable{$row}->{$col}+=$weight;
- }
-
- 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
- my $colcount=0;
- foreach my $col ( @loopcol ) {
- my $value =$table{$row}->{(($col->{coltitle} eq "NULL")or ($col->{coltitle} eq ""))?"zzEMPTY":$col->{coltitle}} / $wgttable{$row}->{(($col->{coltitle} eq "NULL")or ($col->{coltitle} eq ""))?"zzEMPTY":$col->{coltitle}} if ($table{$row}->{(($col->{coltitle} eq "NULL")or ($col->{coltitle} eq ""))?"zzEMPTY":$col->{coltitle}});
-
- $table{$row}->{(($col->{coltitle} eq "NULL")or ($col->{coltitle} eq ""))?"zzEMPTY":$col->{coltitle}} = $value;
- $table{$row}->{totalrow}+=$value;
- #warn "row : $row col:$col $cnttable{$row}->{(($col->{coltitle} eq \"NULL\")or ($col->{coltitle} eq \"\"))?\"zzEMPTY\":$col->{coltitle}}";
- $colcount+=$cnttable{$row}->{(($col->{coltitle} eq "NULL")or ($col->{coltitle} eq ""))?"zzEMPTY":$col->{coltitle}};
- push @loopcell, {value => ($value)?sprintf("%.2f",$value):0 } ;
- }
- #warn "row : $row colcount:$colcount";
- my $total = $table{$row}->{totalrow}/$colcount if ($colcount>0);
- push @looprow,{ 'rowtitle' => ($row eq "zzEMPTY")?"NULL":$row,
- 'loopcell' => \@loopcell,
- 'hilighted' => ($hilighted >0),
- 'totalrow' => ($total)?sprintf("%.2f",$total):0
- };
- $hilighted = -$hilighted;
- }
+ $emptycol=1 if (!defined($col));
+ $col = "zzEMPTY" if (!defined($col));
+ $row = "zzEMPTY" if (!defined($row));
+ # fill returndate to avoid an error with date calc (needed for all non returned issues)
+ $returndate= join '-',Date::Calc::Today if $returndate eq '0000-00-00';
+ # DateCalc returns => 0:0:WK:DD:HH:MM:SS the weeks, days, hours, minutes,
+ # and seconds between the two
+ $loanlength = Delta_Days(split(/-/,$issuedate),split (/-/,$returndate)) ;
+ # warn "512 Same row and col DateCalc returns :$loanlength with return ". $returndate ."issue ". $issuedate ."weight : ". $weight;
+ # warn "513 row :".$row." column :".$col;
+ $table{$row}->{$col}+=$weight*$loanlength;
+ # $table{$row}->{totalrow}+=$weight*$loanlength;
+ $cnttable{$row}->{$col}= 1;
+ $wgttable{$row}->{$col}+=$weight;
+ }
+
+ 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
+ my $colcount=0;
+ foreach my $col ( @loopcol ) {
+ my $value;
+ if ($table{$row}->{
+ ( ( $col->{coltitle} eq 'NULL' )
+ or ( $col->{coltitle} eq q{} )
+ ) ? 'zzEMPTY' : $col->{coltitle}
+ }
+ ) {
+ $value = $table{$row}->{
+ ( ( $col->{coltitle} eq 'NULL' )
+ or ( $col->{coltitle} eq q{} )
+ ) ? 'zzEMPTY' : $col->{coltitle}
+ } / $wgttable{$row}->{
+ ( ( $col->{coltitle} eq 'NULL' )
+ or ( $col->{coltitle} eq q{} )
+ ) ? 'zzEMPTY' : $col->{coltitle}
+ };
+ }
+ $table{$row}->{(($col->{coltitle} eq "NULL")or ($col->{coltitle} eq ""))?"zzEMPTY":$col->{coltitle}} = $value;
+ $table{$row}->{totalrow}+=$value;
+ #warn "row : $row col:$col $cnttable{$row}->{(($col->{coltitle} eq \"NULL\")or ($col->{coltitle} eq \"\"))?\"zzEMPTY\":$col->{coltitle}}";
+ $colcount+=$cnttable{$row}->{(($col->{coltitle} eq "NULL")or ($col->{coltitle} eq ""))?"zzEMPTY":$col->{coltitle}};
+ push @loopcell, {value => ($value)?sprintf("%.2f",$value):0 } ;
+ }
+ #warn "row : $row colcount:$colcount";
+ my $total;
+ if ( $colcount > 0 ) {
+ $total = $table{$row}->{totalrow} / $colcount;
+ }
+ push @looprow,
+ { 'rowtitle' => ( $row eq "zzEMPTY" ) ? "NULL" : $row,
+ 'loopcell' => \@loopcell,
+ 'hilighted' => ( $hilighted > 0 ),
+ 'totalrow' => ($total) ? sprintf( "%.2f", $total ) : 0
+ };
+ $hilighted = -$hilighted;
+ }