@@ -, +, @@ "Hold found:"-prompt. Do not Confirm it! at the same page. Dopop('hold-transfer-slip.pl?transfer=1&borrowernumber=10904891&biblionumber=469263&op=slip'); --- C4/Reserves.pm | 11 +++++++++-- circ/hold-transfer-slip.pl | 3 ++- circ/returns.pl | 1 + .../intranet-tmpl/prog/en/modules/circ/returns.tt | 10 +++++----- 4 files changed, 17 insertions(+), 8 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -2314,14 +2314,19 @@ sub GetReserveId { =head2 ReserveSlip - ReserveSlip($branchcode, $borrowernumber, $biblionumber) + ReserveSlip($branchcode, $borrowernumber, $biblionumber, $itemnumber) Returns letter hash ( see C4::Letters::GetPreparedLetter ) or undef + +$itemnumber is needed to make sure that the ReserveSlip printing has access to the item in question. +There is a race condition where the slip is printed before the reservation is confirmed to the DB, +thus the reserve target needs to be explicitly passed from the calling module if such a race condition is encoutered. +Otherwise $itemnumber is pulled properly from the reserves-table. =cut sub ReserveSlip { - my ($branch, $borrowernumber, $biblionumber) = @_; + my ($branch, $borrowernumber, $biblionumber, $itemnumber) = @_; # return unless ( C4::Context->boolean_preference('printreserveslips') ); @@ -2331,6 +2336,8 @@ sub ReserveSlip { }) or return; my $reserve = GetReserveInfo($reserve_id) or return; + $reserve->{itemnumber} = $itemnumber if (not($reserve->{itemnumber}) && $itemnumber); + return C4::Letters::GetPreparedLetter ( module => 'circulation', letter_code => 'RESERVESLIP', --- a/circ/hold-transfer-slip.pl +++ a/circ/hold-transfer-slip.pl @@ -38,6 +38,7 @@ my $session = get_session($sessionID); my $biblionumber = $input->param('biblionumber'); my $borrowernumber = $input->param('borrowernumber'); +my $itemnumber = $input->param('itemnumber'); my $transfer = $input->param('transfer'); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( @@ -53,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) ) { $slip = $letter->{content}; $is_html = $letter->{is_html}; } --- a/circ/returns.pl +++ a/circ/returns.pl @@ -267,6 +267,7 @@ if ($barcode) { author => $biblio->{'author'}, itembarcode => $biblio->{'barcode'}, itemtype => $biblio->{'itemtype'}, + itemnumber => $itemnumber, ccode => $biblio->{'ccode'}, itembiblionumber => $biblio->{'biblionumber'}, borrower => $borrower, --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -161,7 +161,7 @@ $(document).ready(function () { - + @@ -199,7 +199,7 @@ $(document).ready(function () {
- + [% FOREACH inputloo IN inputloop %] @@ -244,7 +244,7 @@ $(document).ready(function () { - + [% FOREACH inputloo IN inputloop %] @@ -361,10 +361,10 @@ $(document).ready(function () { [% IF ( transfertodo ) %] - + [% ELSE %] - + [% END %] [% FOREACH inputloo IN inputloop %] --