From 16b2328381f37d6d6f4e7972869a25ef3a7eae1f 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=UTF-8 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 --- 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 913ec0b..d6e3ca0 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1046,12 +1046,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 cd3fc35..90c2d42 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -554,6 +554,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 %] -- 1.7.10.4