Bug 10748: Add the ability to block return of lost items

Mimicking what does BlockReturnOfWithdrawnItems we can easily add a new
syspref to block return of lost items.
This patch adds BlockReturnOfLostItems, if set to 'Block' a item marked
as lost cannot be checked in.

Test plan:
1/ Set BlockReturnOfLostItems to 'Do not block'
2/ Check an item out to a patron
3/ Edit the item and mark it as lost (*)
4/ Check the item in
=> The item is checked in
5/ Edit the item and remove the lost status
6/ Check the item out again
7/ Edit the item and mark it as lost (*)
8/ Check the item in
=> The item is not checked in

(*) There are 2 ways to mark an item lost:
- From the item list view (/catalogue/moredetail.pl?biblionumber=42)
If you set the lost status from this form, the issue will be returned
Maybe this should be optional (?)

- From the edit items form (/cataloguing/additem.pl?biblionumber=42)
It is the form you must use to not mark the issue returned.

Sponsored-by: BULAC - http://www.bulac.fr/

Signed-off-by: Dominic Pichette <dominic@inlibro.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Jonathan Druart 2017-10-04 20:54:24 -03:00
parent ff82c9aadc
commit 529793d4ae
8 changed files with 26 additions and 9 deletions

View File

@ -1911,6 +1911,10 @@ sub AddReturn {
$doreturn = 0 if C4::Context->preference("BlockReturnOfWithdrawnItems");
}
if ( $item->{itemlost} and C4::Context->preference("BlockReturnOfLostItems") ) {
$doreturn = 0;
}
# case of a return of document (deal with issues and holdingbranch)
my $today = DateTime->now( time_zone => C4::Context->tz() );
@ -1988,8 +1992,7 @@ sub AddReturn {
# fix up the accounts.....
if ( $item->{'itemlost'} ) {
$messages->{'WasLost'} = 1;
if ( $item->{'itemlost'} ) {
unless ( C4::Context->preference("BlockReturnOfLostItems") ) {
if (
Koha::RefundLostItemFeeRules->should_refund(
{
@ -2000,7 +2003,8 @@ sub AddReturn {
)
)
{
_FixAccountForLostAndReturned( $item->{'itemnumber'}, $borrowernumber, $barcode );
_FixAccountForLostAndReturned( $item->{'itemnumber'},
$borrowernumber, $barcode );
$messages->{'LostItemFeeRefunded'} = 1;
}
}

View File

@ -128,6 +128,7 @@ sub BuildReport {
z3950NormalizeAuthor
SpineLabelAutoPrint
SpineLabelShowPrintOnBibDetails
BlockReturnOfLostItems
BlockReturnOfWithdrawnItems
CalculateFinesOnReturn
AgeRestrictionOverride

View File

@ -505,6 +505,7 @@ foreach my $code ( keys %$messages ) {
}
elsif ( $code eq 'WasLost' ) {
$err{waslost} = 1;
$exit_required_p = 1 if C4::Context->preference("BlockReturnOfLostItems");
}
elsif ( $code eq 'LostItemFeeRefunded' ) {
$template->param( LostItemFeeRefunded => 1 );
@ -643,7 +644,6 @@ $template->param(
forgivemanualholdsexpire => $forgivemanualholdsexpire,
overduecharges => $overduecharges,
AudioAlerts => C4::Context->preference("AudioAlerts"),
BlockReturnOfWithdrawnItems => C4::Context->preference("BlockReturnOfWithdrawnItems"),
);
$itemnumber = GetItemnumberFromBarcode( $barcode );

View File

@ -0,0 +1,3 @@
INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
('BlockReturnOfLostItems','0','0','If enabled, items that are marked as lost cannot be returned.','YesNo');

View File

@ -82,6 +82,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
('BiblioDefaultView','normal','normal|marc|isbd','Choose the default detail view in the catalog; choose between normal, marc or isbd','Choice'),
('BibtexExportAdditionalFields', '', NULL , 'Define additional BibTex tags to export from MARC records in YAML format as an associative array with either a marc tag/subfield combination as the value, or a list of tag/subfield combinations.', 'textarea'),
('BlockExpiredPatronOpacActions','1',NULL,'Set whether an expired patron can perform opac actions such as placing holds or renew books, can be overridden on a per patron-type basis','YesNo'),
('BlockReturnOfLostItems','0','0','If enabled, items that are marked as lost cannot be returned.','YesNo'),
('BlockReturnOfWithdrawnItems','1','0','If enabled, items that are marked as withdrawn cannot be returned.','YesNo'),
('BorrowerMandatoryField','surname|cardnumber',NULL,'Choose the mandatory fields for a patron\'s account','free'),
('borrowerRelationship','father|mother','','Define valid relationships between a guarantor & a guarantee (separated by | or ,)','free'),

View File

@ -472,6 +472,12 @@ Circulation:
yes: Block
no: "Don't block"
- returning of items that have been withdrawn.
-
- pref: BlockReturnOfLostItems
choices:
yes: Block
no: "Don't block"
- returning of items that have been lost.
-
- pref: CalculateFinesOnReturn
choices:

View File

@ -617,20 +617,21 @@ $(document).ready(function () {
[% END %]
[% IF ( errmsgloo.waslost ) %]
<p class="problem">Item was lost, now found.</p>
[% IF ( LostItemFeeRefunded ) %]
[% IF LostItemFeeRefunded and not Koha.Preference('BlockReturnOfLostItems') %]
<p class="problem">A refund has been applied to the borrowing patron's account.</p>
[% ELSIF Koha.Preference('BlockReturnOfLostItems') %]
<h5>Cannot check in</h5>
<p><strong>NOT CHECKED IN</strong></p>
[% ELSE %]
<p class="problem">Any lost item fees for this item will remain on the patron's account.</p>
[% END %]
[% END %]
[% IF ( errmsgloo.withdrawn ) %]
[% IF BlockReturnOfWithdrawnItems %]
[% IF Koha.Preference('BlockReturnOfWithdrawnItems') %]
<h5>Cannot check in</h5>
<p><strong>NOT CHECKED IN</strong></p>
<p class="problem">Item is withdrawn.</p>
[% ELSE %]
<p class="problem">Item is withdrawn.</p>
[% END %]
<p class="problem">Item is withdrawn.</p>
[% END %]
[% IF ( errmsgloo.debarred ) %]
<p class="problem"><a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% errmsgloo.debarborrowernumber %]">[% errmsgloo.debarname %]([% errmsgloo.debarcardnumber %])</a> is now debarred until [% errmsgloo.debarred | $KohaDates %].</p>

View File

@ -380,6 +380,7 @@ sub mocking_systempreferences_to_a_set_value {
z3950NormalizeAuthor
SpineLabelAutoPrint
SpineLabelShowPrintOnBibDetails
BlockReturnOfLostItems
BlockReturnOfWithdrawnItems
CalculateFinesOnReturn
AgeRestrictionOverride