From 3af501884e136454bca1c5a78c1a6b56e876f6be Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 16 Aug 2018 07:11:17 -0400 Subject: [PATCH] Bug 21231: BlockReturnofLostItems does not prevent lost items being found When the syspref BlockReturnOfLostItems is set to Block, the item is blocked from being returned, but is still considered found -- it's set to lost=0 and a refund is applied to the patron (if circ rules allow). The item can then be checked in a second time and returned as it is no longer lost. Test Plan: 1) Set an item to lost 2) Set BlockReturnOfLostItems to Block 3) Check the lost item in 4) Checkin message should say item is lost and cannot be returned 5) Check lost status of item, it should remain unchanged Signed-off-by: Tomas Cohen Arazi Signed-off-by: Katrin Fischer Signed-off-by: Nick Clemens (cherry picked from commit ca2430480eaa4338b3e4aed766589b1406565d69) Signed-off-by: Martin Renvoize --- C4/Circulation.pm | 4 +++- C4/Items.pm | 14 ++++++++++---- .../intranet-tmpl/prog/en/modules/circ/returns.tt | 7 ++++++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 0162c21118..31ca53112b 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1936,7 +1936,9 @@ sub AddReturn { UpdateHoldingbranch($branch, $item->{'itemnumber'}); $item->{'holdingbranch'} = $branch; # update item data holdingbranch too } - ModDateLastSeen( $item->{'itemnumber'} ); + + my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0; + ModDateLastSeen( $item->{itemnumber}, $leave_item_lost ); # check if we have a transfer for this document my ($datesent,$frombranch,$tobranch) = GetTransfers( $item->{'itemnumber'} ); diff --git a/C4/Items.pm b/C4/Items.pm index bf464c3e30..c4ca4489e2 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -645,18 +645,24 @@ sub ModItemTransfer { =head2 ModDateLastSeen - ModDateLastSeen($itemnum); +ModDateLastSeen( $itemnumber, $leave_item_lost ); Mark item as seen. Is called when an item is issued, returned or manually marked during inventory/stocktaking. -C<$itemnum> is the item number +C<$itemnumber> is the item number +C<$leave_item_lost> determines if a lost item will be found or remain lost =cut sub ModDateLastSeen { - my ($itemnumber) = @_; + my ( $itemnumber, $leave_item_lost ) = @_; my $today = output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }); - ModItem( { itemlost => 0, datelastseen => $today }, undef, $itemnumber, { log_action => 0 } ); + + my $params; + $params->{datelastseen} = $today; + $params->{itemlost} = 0 unless $leave_item_lost; + + ModItem( $params, undef, $itemnumber, { log_action => 0 } ); } =head2 DelItem 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 051d66ac64..15daf7dee3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -493,7 +493,12 @@

Local use recorded

[% END %] [% IF ( errmsgloo.waslost ) %] -

Item was lost, now found.

+ [% IF Koha.Preference('BlockReturnOfLostItems') %] +

Item is lost, cannot be checked in.

+ [% ELSE %] +

Item was lost, now found.

+ [% END %] + [% IF LostItemFeeRefunded and not Koha.Preference('BlockReturnOfLostItems') %]

A refund has been applied to the borrowing patron's account.

[% ELSIF Koha.Preference('BlockReturnOfLostItems') %] -- 2.39.5