From 28a19dd47a596c6ff1f11ce91e584062eba5d7d8 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 --- C4/Circulation.pm | 4 +++- C4/Items.pm | 14 ++++++++++---- koha-tmpl/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 b772a7a999..0c2430be02 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1935,7 +1935,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..4d696af440 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.11.0