From 19f88c75b967be80049d22b0a376f9c668ee7965 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Sun, 22 May 2016 10:01:48 +0100 Subject: [PATCH] Bug 16534: Make CanBookBeIssued test if the issue can be returned MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit If an issue is already checked out, CanBookBeIssued must check if the issue can be checked in before processing the return. In such cases (depending of the AllowReturnToBranch pref), the issue should not be allowed. Prior to this patch, the checkin was not done and the checkout failed with "Duplicate entry '1204321' for key 'itemnumber'". Indeed since bug 14978, there is an uniq key on issues.itemnumber. Before bug 14978 the issue existed but was hidden (and some weird behaviors certainly happened!). To avoid Koha to crash, a check is added to CanBookBeIssued (call to CanBookBeReturned) and the librarian is not able to process the checkout. Test plan: - Set AllowReturnToBranch to anywhere - Check an item (homebranch Library 1, holding branch Library 1) out from Library 1 - Check the item out from Library 2 => Confirm the checkout (should work with and without this patch) - Set AllowReturnToBranch to holdinbranch ("only the library the item was checked out from"). - Check an item (homebranch Library 1, holding branch Library 1) out from Library 1 - Check the item out from Library 2 => Without this patch, Koha crashed => With this patch, you will be warned that the checkin is not possible. Try other combinations of the AllowReturnToBranch syspref Followed test plan, works as expected Signed-off-by: Marc Véron Signed-off-by: Kyle M Hall (cherry picked from commit 9427d44568e6d52fde3960bda3ad957ca6a5b7fe) Signed-off-by: Frédéric Demians (cherry picked from commit df9fbe0aefc7135ecf3e78c29a12cf780da28eae) Signed-off-by: Julian Maurice --- C4/Circulation.pm | 19 +++++++++++++------ .../prog/en/modules/circ/circulation.tt | 4 ++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index ebb0a8b3c0..8c2861c0f0 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1008,12 +1008,19 @@ sub CanBookBeIssued { # issued to someone else my $currborinfo = C4::Members::GetMember( borrowernumber => $issue->{borrowernumber} ); -# warn "=>.$currborinfo->{'firstname'} $currborinfo->{'surname'} ($currborinfo->{'cardnumber'})"; - $needsconfirmation{ISSUED_TO_ANOTHER} = 1; - $needsconfirmation{issued_firstname} = $currborinfo->{'firstname'}; - $needsconfirmation{issued_surname} = $currborinfo->{'surname'}; - $needsconfirmation{issued_cardnumber} = $currborinfo->{'cardnumber'}; - $needsconfirmation{issued_borrowernumber} = $currborinfo->{'borrowernumber'}; + + my ( $can_be_returned, $message ) = CanBookBeReturned( $item, C4::Context->userenv->{branch} ); + + unless ( $can_be_returned ) { + $issuingimpossible{RETURN_IMPOSSIBLE} = 1; + $issuingimpossible{branch_to_return} = $message; + } else { + $needsconfirmation{ISSUED_TO_ANOTHER} = 1; + $needsconfirmation{issued_firstname} = $currborinfo->{'firstname'}; + $needsconfirmation{issued_surname} = $currborinfo->{'surname'}; + $needsconfirmation{issued_cardnumber} = $currborinfo->{'cardnumber'}; + $needsconfirmation{issued_borrowernumber} = $currborinfo->{'borrowernumber'}; + } } unless ( $ignore_reserves ) { 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 dd6b10d07c..c0d88c77d4 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -518,6 +518,10 @@ $(document).ready(function() {
  • This item belongs to [% Branches.GetName( itemhomebranch ) %] and cannot be checked out from this location.
  • [% END %] + [% IF RETURN_IMPOSSIBLE %] +
  • This item must be return to [% Branches.GetName( branch_to_return ) %].
  • + [% END %] + [% IF ( USERBLOCKEDWITHENDDATE ) %]
  • Patron has a restriction until [% USERBLOCKEDWITHENDDATE | $KohaDates %].
  • [% END %] -- 2.39.5