Bug 6801: checkoverdues returns unnecessary fields, causing slowness
[koha.git] / circ / circulation.pl
index 8c359b1..98fee97 100755 (executable)
@@ -35,6 +35,7 @@ use C4::Biblio;
 use C4::Reserves;
 use C4::Context;
 use CGI::Session;
+use C4::Members::Attributes qw(GetBorrowerAttributes);
 
 use Date::Calc qw(
   Today
@@ -230,7 +231,7 @@ if ($borrowernumber) {
             0 , $borrower->{'enrolmentperiod'});
     }
     # if the expiry date is before today ie they have expired
-    if ( $warning_year*$warning_month*$warning_day==0 
+    if ( !$borrower->{'dateexpiry'} || $warning_year*$warning_month*$warning_day==0
         || Date_to_Days($today_year,     $today_month, $today_day  ) 
          > Date_to_Days($warning_year, $warning_month, $warning_day) )
     {
@@ -238,7 +239,7 @@ if ($borrowernumber) {
         $template->param(
             flagged  => "1",
             noissues => "1",
-            expired     => format_date($borrower->{dateexpiry}),
+            expired => "1",
             renewaldate => format_date("$renew_year-$renew_month-$renew_day")
         );
     }
@@ -418,19 +419,15 @@ sub build_issue_data {
     foreach my $it ( @$issueslist ) {
         my $itemtypeinfo = getitemtypeinfo( (C4::Context->preference('item-level_itypes')) ? $it->{'itype'} : $it->{'itemtype'} );
 
-        # Getting borrower details
-        my $memberdetails = GetMemberDetails($it->{'borrowernumber'});
-        $it->{'borrowername'} = $memberdetails->{'firstname'} . " " . $memberdetails->{'surname'};
-        $it->{'cardnumber'} = $memberdetails->{'cardnumber'};
         # set itemtype per item-level_itype syspref - FIXME this is an ugly hack
         $it->{'itemtype'} = ( C4::Context->preference( 'item-level_itypes' ) ) ? $it->{'itype'} : $it->{'itemtype'};
 
         ($it->{'charge'}, $it->{'itemtype_charge'}) = GetIssuingCharges(
-            $it->{'itemnumber'}, $borrower->{'borrowernumber'}
+            $it->{'itemnumber'}, $it->{'borrowernumber'}
         );
         $it->{'charge'} = sprintf("%.2f", $it->{'charge'});
         my ($can_renew, $can_renew_error) = CanBookBeRenewed( 
-            $borrower->{'borrowernumber'},$it->{'itemnumber'}
+            $it->{'borrowernumber'},$it->{'itemnumber'}
         );
         $it->{"renew_error_${can_renew_error}"} = 1 if defined $can_renew_error;
         my ( $restype, $reserves ) = CheckReserves( $it->{'itemnumber'} );
@@ -438,6 +435,7 @@ sub build_issue_data {
         $it->{'can_confirm'} = !$can_renew && !$restype;
         $it->{'renew_error'} = $restype;
         $it->{'checkoutdate'} = C4::Dates->new($it->{'issuedate'},'iso')->output('syspref');
+        $it->{'issuingbranchname'} = GetBranchName($it->{'branchcode'});
 
         $totalprice += $it->{'replacementprice'};
         $it->{'itemtype'} = $itemtypeinfo->{'description'};
@@ -463,8 +461,11 @@ if ($borrower) {
     #push @borrowernumbers, $borrower->{'borrowernumber'};
 
     # get each issue of the borrower & separate them in todayissues & previous issues
-    my ($issueslist) = GetPendingIssues($borrower->{'borrowernumber'});
-    my ($relissueslist) = GetPendingIssues(@relborrowernumbers);
+    my $issueslist = GetPendingIssues($borrower->{'borrowernumber'});
+    my $relissueslist = [];
+    if ( @relborrowernumbers ) {
+        $relissueslist = GetPendingIssues(@relborrowernumbers);
+    }
 
     build_issue_data($issueslist, 0);
     build_issue_data($relissueslist, 1);
@@ -477,6 +478,7 @@ if ($borrower) {
     else {
         @todaysissues   = sort { $b->{'timestamp'} cmp $a->{'timestamp'} } @todaysissues;
     }
+
     if ( C4::Context->preference( "previousIssuesDefaultSortOrder" ) eq 'asc' ){
         @previousissues = sort { $a->{'date_due'} cmp $b->{'date_due'} } @previousissues;
     }
@@ -630,6 +632,7 @@ my $fast_cataloging = 0;
     if (defined getframeworkinfo('FA')) {
     $fast_cataloging = 1 
     }
+my $attributes = GetBorrowerAttributes($borrowernumber);
 
 $template->param(
     lib_messages_loop => $lib_messages_loop,
@@ -679,6 +682,7 @@ $template->param(
     circview => 1,
     soundon           => C4::Context->preference("SoundOn"),
     fast_cataloging   => $fast_cataloging,
+    extendedattributes => $attributes,
 );
 
 # save stickyduedate to session