Bug 41343: Don't fetch patron objects per overdue
We use SQL here to get all the needed info - the query says it is slow, but isn't so bad.
Worse is fetching the patron for each borrower with overdues (and more than once if they have several)
It appears we started grabbing the patron so we could use patron title, but we can just pass the info already fetched.
I additionally fetch the patron category types and update patron-title to allow for hide_patron_infos_if_needed to work
without a patron object - we can just use the branchcode as ultimately that's all we need
To test:
1 - Add many items to your catalog (can use my handy repo randitems.pl)
https://github.com/kidclamp/handy-koha-script
2 - Add many issues (can use randissues.pl from above)
3 - I tested with about 1000
4 - Browse to Circulation->Overdues
5 - Note load time
6 - Apply patch
7 - Restart all
8 - Note load time is faster
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
950c9f8188
commit
e3862dc81b
|
|
@ -247,6 +247,8 @@ if ($noreport) {
|
|||
borrowers.cardnumber,
|
||||
borrowers.borrowernumber,
|
||||
borrowers.branchcode,
|
||||
borrowers.categorycode,
|
||||
categories.category_type,
|
||||
issues.itemnumber,
|
||||
issues.issuedate,
|
||||
items.datelastborrowed,
|
||||
|
|
@ -269,6 +271,7 @@ if ($noreport) {
|
|||
return_claims.id AS return_claim_id
|
||||
FROM issues
|
||||
LEFT JOIN borrowers ON (issues.borrowernumber=borrowers.borrowernumber )
|
||||
LEFT JOIN categories ON (categories.categorycode = borrowers.categorycode )
|
||||
LEFT JOIN items ON (issues.itemnumber=items.itemnumber)
|
||||
LEFT JOIN biblioitems ON (biblioitems.biblioitemnumber=items.biblioitemnumber)
|
||||
LEFT JOIN biblio ON (biblio.biblionumber=items.biblionumber )
|
||||
|
|
@ -349,7 +352,19 @@ if ($noreport) {
|
|||
}
|
||||
|
||||
push @overduedata, {
|
||||
patron => Koha::Patrons->find( $data->{borrowernumber} ),
|
||||
borrower => {
|
||||
branchcode => $data->{branchcode},
|
||||
borrowernumber => $data->{borrowernumber},
|
||||
categorycode => $data->{categorycode},
|
||||
category_type => $data->{category_type},
|
||||
surname => $data->{surname},
|
||||
othernames => $data->{othernames},
|
||||
firstname => $data->{firstname},
|
||||
preferred_name => $data->{preferred_name},
|
||||
middle_name => $data->{middle_name},
|
||||
cardnumber => $data->{cardnumber},
|
||||
title => $data->{title}
|
||||
},
|
||||
duedate => $data->{date_due},
|
||||
borrowernumber => $data->{borrowernumber},
|
||||
cardnumber => $data->{cardnumber},
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
[%- USE Branches -%]
|
||||
[%- SET data = {} -%]
|
||||
[%- IF patron -%]
|
||||
[%- SET data.branchcode = patron.branchcode -%]
|
||||
[%- SET data.category_type = patron.category.category_type -%]
|
||||
[%- SET data.surname = patron.surname -%]
|
||||
[%- SET data.othernames = patron.othernames -%]
|
||||
|
|
@ -13,6 +14,7 @@
|
|||
[%- SET data.borrowernumber = patron.borrowernumber -%]
|
||||
[%- SET data.title = patron.title -%]
|
||||
[%- ELSIF ( borrower.borrowernumber ) -%]
|
||||
[%- SET data.branchcode = borrower.branchcode -%]
|
||||
[%- SET data.category_type = borrower.category_type -%]
|
||||
[%- SET data.surname = borrower.surname -%]
|
||||
[%- SET data.othernames = borrower.othernames -%]
|
||||
|
|
@ -38,8 +40,7 @@
|
|||
[%- SET display_cardnumber = 1 -%]
|
||||
[%- IF no_cardnumber -%][%- SET display_cardnumber = 0 -%][%- END -%]
|
||||
[%- IF hide_patron_infos_if_needed -%]
|
||||
[%# Should only be set if patron is set -%]
|
||||
[%- SET can_see_patron_infos = logged_in_user.can_see_patron_infos( patron ) -%]
|
||||
[%- SET can_see_patron_infos = logged_in_user.can_see_patrons_from( data.branchcode ) -%]
|
||||
[%- UNLESS can_see_patron_infos -%]
|
||||
[%- SET display_patron_name = 0 -%]
|
||||
[%- SET display_cardnumber = 0 -%]
|
||||
|
|
|
|||
|
|
@ -120,8 +120,8 @@
|
|||
[% END %]
|
||||
</td>
|
||||
<td>
|
||||
[% INCLUDE 'patron-title.inc' patron=overdueloo.patron hide_patron_infos_if_needed=1 %]
|
||||
[% IF logged_in_user.can_see_patron_infos( overdueloo.patron ) %]
|
||||
[% INCLUDE 'patron-title.inc' borrower=overdueloo.borrower hide_patron_infos_if_needed=1 %]
|
||||
[% IF logged_in_user.can_see_patrons_from( overdueloo.branchcode ) %]
|
||||
[% IF ( overdueloo.email ) %]
|
||||
<span class="overdue_email"> [<a href="mailto:[% overdueloo.email | uri %]?subject=[% INCLUDE subject %] [% overdueloo.title | uri %]">email</a>] </span>
|
||||
[% END %]
|
||||
|
|
@ -136,8 +136,8 @@
|
|||
</span>
|
||||
[% END %]
|
||||
</td>
|
||||
<td>[% Categories.GetName( overdueloo.patron.categorycode ) | html %]</td>
|
||||
<td>[% Branches.GetName( overdueloo.patron.branchcode ) | html %]</td>
|
||||
<td>[% Categories.GetName( overdueloo.borrower.categorycode ) | html %]</td>
|
||||
<td>[% Branches.GetName( overdueloo.borrower.branchcode ) | html %]</td>
|
||||
<td
|
||||
>[% INCLUDE 'biblio-title.inc' biblio=overdueloo link = 1 %]
|
||||
[% IF ( overdueloo.author ) %], by [% overdueloo.author | html %][% END %][% IF ( overdueloo.enumchron ) %], [% overdueloo.enumchron | html %][% END %]</td
|
||||
|
|
|
|||
Loading…
Reference in New Issue