From c36e025b4275153ea5f2df3fd9927b3f3c0850b7 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Thu, 1 Aug 2019 17:01:28 +0000 Subject: [PATCH] Bug 23414: Prefetch transfers, use only default framework, use elsif This further cleans up the code, before we tested each condition though we return only one status line. Koha mappings can no longer differ by framework so we don't need to fetch the biblio framework Prefetching should offer a boost To test: Same as before - there is not as big a boost form this, but there shouldn't be a hit --- C4/XSLT.pm | 67 +++++++++++++++++++++++++++++--------------------------------- 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/C4/XSLT.pm b/C4/XSLT.pm index 845067da17..0a35eb349e 100644 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -293,14 +293,14 @@ sub buildKohaItemsNamespace { my ($biblionumber, $hidden_items) = @_; my $search_params; - $search_params->{biblionumber} = $biblionumber; - $search_params->{itemnumber} = { not_in => $hidden_items } if $hidden_items; - my @items = Koha::Items->search($search_params); + $search_params->{'me.biblionumber'} = $biblionumber; + $search_params->{'me.itemnumber'} = { not_in => $hidden_items } if $hidden_items; + my @items = Koha::Items->search($search_params,{prefetch=>'branchtransfers'}); my $shelflocations = - { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => GetFrameworkCode($biblionumber), kohafield => 'items.location' } ) }; + { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => "", kohafield => 'items.location' } ) }; my $ccodes = - { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => GetFrameworkCode($biblionumber), kohafield => 'items.ccode' } ) }; + { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => "", kohafield => 'items.ccode' } ) }; my %branches = map { $_->branchcode => $_->branchname } Koha::Libraries->search({}, { order_by => 'branchname' }); @@ -311,39 +311,34 @@ sub buildKohaItemsNamespace { for my $item (@items) { my $status; - my ( $transfertwhen, $transfertfrom, $transfertto ) = C4::Circulation::GetTransfers($item->itemnumber); - my $reservestatus = C4::Reserves::GetReserveStatus( $item->itemnumber ); - if ( ( $item->itype && $itemtypes->{ $item->itype }->{notforloan} ) || $item->notforloan || $item->onloan || $item->withdrawn || $item->itemlost || $item->damaged || - (defined $transfertwhen && $transfertwhen ne '') || $item->{itemnotforloan} || (defined $reservestatus && $reservestatus eq "Waiting") || $item->has_pending_hold ){ - if ( $item->notforloan < 0) { - $status = "On order"; - } - if ( $item->notforloan && $item->notforloan > 0 || $item->itype && $itemtypes->{ $item->itype }->{notforloan} && $itemtypes->{ $item->itype }->{notforloan} == 1 ) { - $status = "reference"; - } - if ($item->onloan) { - $status = "Checked out"; - } - if ( $item->withdrawn) { - $status = "Withdrawn"; - } - if ($item->itemlost) { - $status = "Lost"; - } - if ($item->damaged) { - $status = "Damaged"; - } - if (defined $transfertwhen && $transfertwhen ne '') { - $status = 'In transit'; - } - if (defined $reservestatus && $reservestatus eq "Waiting") { - $status = 'Waiting'; - } - if ($item->has_pending_hold) { - $status = 'Pending hold'; - } + if ( $item->notforloan < 0) { + $status = "On order"; + } + elsif ( $item->notforloan && $item->notforloan > 0 || $item->itype && $itemtypes->{ $item->itype }->{notforloan} && $itemtypes->{ $item->itype }->{notforloan} == 1 ) { + $status = "reference"; + } + elsif ($item->onloan) { + $status = "Checked out"; + } + elsif ( $item->withdrawn) { + $status = "Withdrawn"; + } + elsif ($item->itemlost) { + $status = "Lost"; + } + elsif ($item->damaged) { + $status = "Damaged"; + } + elsif ($item->get_transfer) { + $status = 'In transit'; + } + elsif (defined $reservestatus && $reservestatus eq "Waiting") { + $status = 'Waiting'; + } + elsif ($item->has_pending_hold) { + $status = 'Pending hold'; } else { $status = "available"; } -- 2.11.0