From 1d50c3f2e738df582d7821e230c5881faef19065 Mon Sep 17 00:00:00 2001 From: Benjamin Rokseth Date: Mon, 7 Nov 2016 00:53:48 +0100 Subject: [PATCH] Bug 17561 - ReserveSlip needs itemnumber for item level holds on same biblio This patch fixes a regression after bug 14695. This patch adds itemnumber and barcode as optional params in ReserveSlip used by hold-transfer-slip.pl to generate HOLD_SLIP. This is for ReserveSlip to be able to generate correct slips when items in multi-item holds are checked in. Test plan: 1) activate a circulation rule with multi-item holds 2) Place two holds on same biblio for patron 3) for debugging, either use browser console to observe POST request and responses or use info from reserves, e.g. reserve_id in the HOLD_SLIP 4) checkin both items on pickup branch 5) note that both holds are effectuated, but reserve_id is the same on both slips 6) also note that there is no itemnumber or barcode in the requests from returns.pl 7) Apply this patch 8) repeat 2-4 9) note that reserve_id is now different on the two slips --- C4/Reserves.pm | 8 +++++--- circ/hold-transfer-slip.pl | 4 +++- koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt | 4 ++-- koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index ae1c7b7..68c608d 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -2339,7 +2339,7 @@ sub GetReserveId { =head2 ReserveSlip - ReserveSlip($branchcode, $borrowernumber, $biblionumber) + ReserveSlip($branchcode, $borrowernumber, $biblionumber [, $itemnumber, $barcode ]) Returns letter hash ( see C4::Letters::GetPreparedLetter ) or undef @@ -2356,13 +2356,15 @@ available within the slip: =cut sub ReserveSlip { - my ($branch, $borrowernumber, $biblionumber) = @_; + my ($branch, $borrowernumber, $biblionumber, $itemnumber, $barcode) = @_; # return unless ( C4::Context->boolean_preference('printreserveslips') ); + my $item = C4::Items::GetItem($itemnumber, $barcode); my $reserve_id = GetReserveId({ biblionumber => $biblionumber, - borrowernumber => $borrowernumber + borrowernumber => $borrowernumber, + itemnumber => $item->{itemnumber} }) or return; my $reserve = GetReserveInfo($reserve_id) or return; diff --git a/circ/hold-transfer-slip.pl b/circ/hold-transfer-slip.pl index bd09e21..70feb06 100755 --- a/circ/hold-transfer-slip.pl +++ b/circ/hold-transfer-slip.pl @@ -38,6 +38,8 @@ my $session = get_session($sessionID); my $biblionumber = $input->param('biblionumber'); my $borrowernumber = $input->param('borrowernumber'); +my $itemnumber = $input->param('itemnumber'); +my $barcode = $input->param('barcode'); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { @@ -52,7 +54,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( my $userenv = C4::Context->userenv; my ($slip, $is_html); -if ( my $letter = ReserveSlip ($session->param('branch') || $userenv->{branch}, $borrowernumber, $biblionumber) ) { +if ( my $letter = ReserveSlip ($session->param('branch') || $userenv->{branch}, $borrowernumber, $biblionumber, $itemnumber, $barcode) ) { $slip = $letter->{content}; $is_html = $letter->{is_html}; } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt index a937bf1..1303ed0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -372,7 +372,7 @@ $(document).ready(function() { - + [% END %] @@ -382,7 +382,7 @@ $(document).ready(function() { - + [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt index c0b9c90..6b526e4 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -45,7 +45,7 @@ $(document).ready(function () { }); [% IF print_slip %] - Dopop('hold-transfer-slip.pl?borrowernumber=[% borrowernumber %]&biblionumber=[% biblionumber %]'); + Dopop('hold-transfer-slip.pl?borrowernumber=[% borrowernumber %]&biblionumber=[% biblionumber %]&itemnumber=[% itemnumber %]'); [% END %] var columns_settings = [% ColumnsSettings.GetColumns( 'circ', 'returns', 'checkedintable', 'json' ) %] -- 2.1.4