Bug 15068: Get rid of warnings in members/summary-print.pl
authorMarc Véron <veron@veron.ch>
Tue, 27 Oct 2015 11:38:32 +0000 (12:38 +0100)
committerLiz Rea <wizzyrea@gmail.com>
Wed, 9 Dec 2015 21:58:29 +0000 (10:58 +1300)
This patch removes warnings when printing a summary from a member's
detail page, like:

- use of uninitialized value in sprintf
  at /usr/share/kohaclone/members/summary-print.pl line 47

- Use of uninitialized value $roadtype in concatenation (.) or string
  at /usr/share/kohaclone/members/summary-print.pl line 61

- Use of uninitialized value in addition (+)
  at /usr/share/kohaclone/members/summary-print.pl line 87

- Argument "2015-11-03 23:59:00" isn't numeric in numeric comparison
  (<=>) at /usr/share/kohaclone/members/summary-print.pl line 103

To test:
- Apply patch
- Go to a detail page with a member who has a lot of fines
- Print summary
- Verify that warnings like the ones above do no longer appear.

Signed-off-by: Frederic Demians <f.demians@tamil.fr>
  Have been able to see those warnings in Apache log file, and notice
  their disappearance after applying this patch.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit c292dde75b5e206045cef47d0be51235159a4b6d)
Signed-off-by: Frédéric Demians <f.demians@tamil.fr>
(cherry picked from commit 95d9e029c8ef612b5802c6e8951344cb0f678aaf)
Signed-off-by: Liz Rea <wizzyrea@gmail.com>

members/summary-print.pl

index 4530e14..7bed793 100755 (executable)
@@ -43,9 +43,10 @@ my $data = GetMember( 'borrowernumber' => $borrowernumber );
 
 my ( $total, $accts, $numaccts ) = GetMemberAccountRecords($borrowernumber);
 foreach my $accountline (@$accts) {
-    $accountline->{amount} = sprintf '%.2f', $accountline->{amount};
-    $accountline->{amountoutstanding} = sprintf '%.2f',
-      $accountline->{amountoutstanding};
+    $accountline->{amount} = sprintf( '%.2f', $accountline->{amount} )
+        if ( $accountline->{amount} ) ;
+    $accountline->{amountoutstanding} = sprintf( '%.2f', $accountline->{amountoutstanding} )
+        if ( $accountline->{amountoutstanding} );
 
     if (   $accountline->{accounttype} ne 'F'
         && $accountline->{accounttype} ne 'FU' )
@@ -56,8 +57,12 @@ foreach my $accountline (@$accts) {
 
 my $roadtype =
   C4::Koha::GetAuthorisedValueByCode( 'ROADTYPE', $data->{streettype} );
+$roadtype = '' if ( ! $roadtype );
 
 our $totalprice = 0;
+my $total_format = '';
+$total_format = sprintf( "%.2f", $total ) if ($total);
+
 $template->param(
     %$data,
 
@@ -65,7 +70,7 @@ $template->param(
     address => $data->{'streetnumber'} . " $roadtype " . $data->{'address'},
 
     accounts => $accts,
-    totaldue => sprintf( "%.2f", $total ),
+    totaldue => $total_format,
 
     issues     => build_issue_data( GetPendingIssues($borrowernumber) ),
     totalprice => $totalprice,
@@ -84,7 +89,8 @@ sub build_issue_data {
     foreach my $issue ( @{$issues} ) {
 
         my %row = %{$issue};
-        $totalprice += $issue->{replacementprice};
+        $totalprice += $issue->{replacementprice}
+            if ( $issue->{replacementprice} );
 
         #find the charge for an item
         my ( $charge, $itemtype ) =
@@ -100,7 +106,7 @@ sub build_issue_data {
         push( @{$return}, \%row );
     }
 
-    @{$return} = sort { $a->{date_due} <=> $b->{date_due} } @{$return};
+    @{$return} = sort { $a->{date_due} eq $b->{date_due} } @{$return};
 
     return $return;
 }