Bugzilla – Attachment 129140 Details for
Bug 29786
Holds to pull report shows incorrect item for item level holds
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 29786: Select only specific items for item level holds
Bug-29786-Select-only-specific-items-for-item-leve.patch (text/plain), 4.50 KB, created by
Jonathan Druart
on 2022-01-07 11:27:50 UTC
(
hide
)
Description:
Bug 29786: Select only specific items for item level holds
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2022-01-07 11:27:50 UTC
Size:
4.50 KB
patch
obsolete
>From 771b0deeeb41bdba81b1f0c75ab396c5811fa140 Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Tue, 4 Jan 2022 13:37:53 +0000 >Subject: [PATCH] Bug 29786: Select only specific items for item level holds > >This patch adjusts get_items_that_can_fill to make two requests: >first the list of items for item-level holds >second the list of biblionumbers for title-level holds > >This stops the report from pulling more items for item-level hold > >This patch also removes the aliases used in the code - while readability >is a bit harder, it allows for using 'me' in get_items_that_can_fill >Otherwise, this routine would need a parameter to know what we called the table. > >To test: >1 - Find a record with many items available >2 - Place an item level hold for an item on the record, not the one with lowest itemnumber >3 - Run 'Hold to pull' report >4 - Note the barcode does not match >5 - Apply patch >6 - Reload report >7 - It matches! > >Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> > >Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >--- > Koha/Holds.pm | 8 ++++++-- > circ/pendingreserves.pl | 18 ++++++++---------- > 2 files changed, 14 insertions(+), 12 deletions(-) > >diff --git a/Koha/Holds.pm b/Koha/Holds.pm >index 6885b4d6bf0..cfaeb4583a3 100644 >--- a/Koha/Holds.pm >+++ b/Koha/Holds.pm >@@ -111,7 +111,11 @@ Items that are not: > sub get_items_that_can_fill { > my ( $self ) = @_; > >- my @biblionumbers = $self->get_column('biblionumber'); >+ my @itemnumbers = $self->search({ 'me.itemnumber' => { '!=' => undef } })->get_column('itemnumber'); >+ my @biblionumbers = $self->search({ 'me.itemnumber' => undef })->get_column('biblionumber'); >+ my @bibs_or_items; >+ push @bibs_or_items, 'me.itemnumber' => { in => \@itemnumbers } if @itemnumbers; >+ push @bibs_or_items, 'biblionumber' => { in => \@biblionumbers } if @biblionumbers; > > my @branchtransfers = map { $_->itemnumber } > Koha::Item::Transfers->search( >@@ -132,7 +136,7 @@ sub get_items_that_can_fill { > > return Koha::Items->search( > { >- biblionumber => { in => \@biblionumbers }, >+ -or => \@bibs_or_items, > itemnumber => { -not_in => [ @branchtransfers, @waiting_holds ] }, > onloan => undef, > } >diff --git a/circ/pendingreserves.pl b/circ/pendingreserves.pl >index 0b2fea21955..8ca7245b3c9 100755 >--- a/circ/pendingreserves.pl >+++ b/circ/pendingreserves.pl >@@ -155,9 +155,9 @@ unless ( $enddate ) { > > # building query parameters > my %where = ( >- 'reserve.found' => undef, >- 'reserve.priority' => 1, >- 'reserve.suspend' => 0, >+ 'me.found' => undef, >+ 'me.priority' => 1, >+ 'me.suspend' => 0, > 'itembib.itemlost' => 0, > 'itembib.withdrawn' => 0, > 'itembib.notforloan' => 0, >@@ -169,11 +169,11 @@ my $dtf = Koha::Database->new->schema->storage->datetime_parser; > my $startdate_iso = $dtf->format_date($startdate); > my $enddate_iso = $dtf->format_date($enddate); > if ( $startdate_iso && $enddate_iso ){ >- $where{'reserve.reservedate'} = [ -and => { '>=', $startdate_iso }, { '<=', $enddate_iso } ]; >+ $where{'me.reservedate'} = [ -and => { '>=', $startdate_iso }, { '<=', $enddate_iso } ]; > } elsif ( $startdate_iso ){ >- $where{'reserve.reservedate'} = { '>=', $startdate_iso }; >+ $where{'me.reservedate'} = { '>=', $startdate_iso }; > } elsif ( $enddate_iso ){ >- $where{'reserve.reservedate'} = { '<=', $enddate_iso }; >+ $where{'me.reservedate'} = { '<=', $enddate_iso }; > } > > # Bug 21320 >@@ -188,7 +188,7 @@ if ( C4::Context->preference('IndependentBranches') ){ > # get all distinct unfulfilled reserves > my $holds = Koha::Holds->search( > { %where }, >- { join => 'itembib', alias => 'reserve', distinct => 1, columns => qw[me.biblionumber] } >+ { join => 'itembib', distinct => 1, columns => qw[me.biblionumber] } > ); > my @biblionumbers = $holds->get_column('biblionumber'); > >@@ -215,8 +215,7 @@ my $holds_biblios_map = { > {%where}, > { > join => ['itembib', 'biblio'], >- alias => 'reserve', >- select => ['reserve.biblionumber', 'reserve.reserve_id'], >+ select => ['me.biblionumber', 'me.reserve_id'], > } > )->unblessed > } >@@ -227,7 +226,6 @@ my $all_holds = { > { reserve_id => [ values %$holds_biblios_map ]}, > { > prefetch => [ 'borrowernumber', 'itembib', 'biblio' ], >- alias => 'reserve', > } > )->as_list > } >-- >2.25.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 29786
:
128987
|
128988
|
128989
|
128990
|
129139
| 129140