From beed57604c17b769577a84769e151019c0c12f02 Mon Sep 17 00:00:00 2001
From: David Gustafsson <david.gustafsson@ub.gu.se>
Date: Mon, 10 Oct 2022 17:18:03 +0200
Subject: [PATCH] Bug 31735: Optimize OPAC checkouts view

---
 .../bootstrap/en/modules/opac-user.tt         |  2 +-
 opac/opac-renew.pl                            | 20 ++++++++++++-------
 opac/opac-user.pl                             |  2 +-
 3 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
index 08d4efb55a1..d004932b756 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
@@ -405,7 +405,7 @@
                                                         [% IF ISSUE.renewed %]<span class="blabel label-success">Renewed!</span><br />[% END %]
                                                         [% IF ( ISSUE.status ) %]
                                                             [% IF ( canrenew ) %]
-                                                                <input type="checkbox" name="item" value="[% ISSUE.itemnumber | uri %]"/> <a href="/cgi-bin/koha/opac-renew.pl?from=opac_user&amp;item=[% ISSUE.itemnumber | uri %]&amp;borrowernumber=[% ISSUE.borrowernumber | uri %]">Renew</a>
+                                                                <input type="checkbox" name="issue" value="[% ISSUE.issue_id | uri %]"/> <a href="/cgi-bin/koha/opac-renew.pl?from=opac_user&amp;issue=[% ISSUE.issue_id | uri %]&amp;borrowernumber=[% ISSUE.borrowernumber | uri %]">Renew</a>
                                                             [% END %]
                                                             [% IF ISSUE.renewalfee > 0 %]
                                                                 <span class="renewalfee label label-warning">Fee for item type '[% ItemTypes.GetDescription( ISSUE.renewalitemtype) | html %]': [% ISSUE.renewalfee | $Price %]</span>
diff --git a/opac/opac-renew.pl b/opac/opac-renew.pl
index 9e8efa0c5e9..cb7f253290e 100755
--- a/opac/opac-renew.pl
+++ b/opac/opac-renew.pl
@@ -38,8 +38,8 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
         query           => $query,
         type            => "opac",
 	}
-); 
-my @items = $query->multi_param('item');
+);
+my @issues = $query->multi_param('issue');
 
 my $opacrenew = C4::Context->preference("OpacRenewalAllowed");
 
@@ -55,13 +55,19 @@ if (   $patron->category->effective_BlockExpiredPatronOpacActions
 }
 else {
     my @renewed;
-    for my $itemnumber (@items) {
-        my $item = Koha::Items->find($itemnumber);
+    my $issues = Koha::Checkouts->search(
+        {
+            issue_id => { -in => @issues }
+        }, {
+            prefetch => 'item'
+        }
+    );
+    while( my $issue = $issues->next) {
         my ( $status, $error ) =
-          CanBookBeRenewed( $patron, $item->checkout ); #TODO: Pass issue numbers instead
+          CanBookBeRenewed( $patron, $issue );
         if ( $status == 1 && $opacrenew == 1 ) {
-            AddRenewal( $borrowernumber, $itemnumber, undef, undef, undef, undef, 0 );
-            push( @renewed, $itemnumber );
+            AddRenewal( $borrowernumber, $issue->itemnumber, undef, undef, undef, undef, 0 );
+            push( @renewed, $issue->itemnumber );
         }
         else {
             $errorstring .= $error . "|";
diff --git a/opac/opac-user.pl b/opac/opac-user.pl
index 881f554bf03..a180d74679e 100755
--- a/opac/opac-user.pl
+++ b/opac/opac-user.pl
@@ -235,7 +235,7 @@ if ( $pending_checkouts->count ) { # Useless test
             $issue->{'unseencount'},
             $issue->{'unseenallowed'},
             $issue->{'unseenleft'}
-        ) = GetRenewCount($borrowernumber, $issue->{'itemnumber'});
+        ) = GetRenewCount($patron, $c->item);
         ( $issue->{'renewalfee'}, $issue->{'renewalitemtype'} ) = GetIssuingCharges( $issue->{'itemnumber'}, $borrowernumber );
         $issue->{itemtype_object} = Koha::ItemTypes->find( $c->item->effective_itemtype );
         if($status && C4::Context->preference("OpacRenewalAllowed")){
-- 
2.39.2