From 7a7e018ed357f0af3fa0b3b3331ea7390c067a3d Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Tue, 17 Jul 2012 09:42:59 -0400 Subject: [PATCH] Bug 3387 - WITHDRAWN items shouldn't check in Adds a system preference BlockReturnOfWithdrawnItems to control whether or not Koha should allow a withdrawn item to be returned or not. Also fixes the behavior where Koha will attempt to use a withdrawn item to fill a hold. Test Plan: 1) Set BlockReturnOfWithdrawnItems to "Block" ( this is the default ) 2) Check an item out to a patron 3) Mark item as withdrawn 4) Attempt to return the item, you should still see the item on the borrower's record 5) Set BlockReturnOfWithdrawnItems to "Don't Block" 6) Attempt to return the item, you should see the item is no longer on the borrower's record. Signed-off-by: Owen Leonard --- C4/Circulation.pm | 4 ++-- circ/returns.pl | 12 ++---------- installer/data/mysql/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 7 +++++++ .../en/modules/admin/preferences/circulation.pref | 7 +++++++ .../intranet-tmpl/prog/en/modules/circ/returns.tt | 7 ++++++- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 71e13bb18c..f80f10979d 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1745,7 +1745,7 @@ sub AddReturn { if ( $item->{'wthdrawn'} ) { # book has been cancelled $messages->{'wthdrawn'} = 1; - $doreturn = 0; + $doreturn = 0 if C4::Context->preference("BlockReturnOfWithdrawnItems"); } # case of a return of document (deal with issues and holdingbranch) @@ -1833,7 +1833,7 @@ sub AddReturn { # find reserves..... # if we don't have a reserve with the status W, we launch the Checkreserves routine - my ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'} ); + my ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'} ) unless ( $item->{'wthdrawn'} ); if ($resfound) { $resrec->{'ResFound'} = $resfound; $messages->{'ResFound'} = $resrec; diff --git a/circ/returns.pl b/circ/returns.pl index 743bf180ba..d93b7cdc50 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -285,15 +285,6 @@ if ($barcode) { $input{duedate} = 0; $returneditems{0} = $barcode; $riduedate{0} = 0; - if ( $messages->{'wthdrawn'} ) { - $input{withdrawn} = 1; - $input{borrowernumber} = 'Item Cancelled'; # FIXME: should be in display layer ? - $riborrowernumber{0} = 'Item Cancelled'; - } - else { - $input{borrowernumber} = ' '; # This seems clearly bogus. - $riborrowernumber{0} = ' '; - } push( @inputloop, \%input ); } } @@ -438,7 +429,7 @@ foreach my $code ( keys %$messages ) { } elsif ( $code eq 'wthdrawn' ) { $err{withdrawn} = 1; - $exit_required_p = 1; + $exit_required_p = 1 if C4::Context->preference("BlockReturnOfWithdrawnItems"); } elsif ( ( $code eq 'IsPermanent' ) && ( not $messages->{'ResFound'} ) ) { if ( $messages->{'IsPermanent'} ne $userenv_branch ) { @@ -610,6 +601,7 @@ $template->param( dropboxdate => output_pref($dropboxdate), overduecharges => $overduecharges, soundon => C4::Context->preference("SoundOn"), + BlockReturnOfWithdrawnItems => C4::Context->preference("BlockReturnOfWithdrawnItems"), ); ### Comment out rotating collections for now to allow it a little more time to bake diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index ae2c4eed2a..0798834a26 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -384,3 +384,4 @@ INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES(' INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('AuthDisplayHierarchy','0','Display authority hierarchies','','YesNo'); INSERT INTO systempreferences (variable,value,explanation,type) VALUES('OPACdidyoumean',NULL,'Did you mean? configuration for the OPAC. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free'); INSERT INTO systempreferences (variable,value,explanation,type) VALUES('INTRAdidyoumean',NULL,'Did you mean? configuration for the Intranet. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free'); +INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('BlockReturnOfWithdrawnItems', '1', '0', 'If enabled, items that are marked as withdrawn cannot be returned.', 'YesNo'); diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index b8b404765d..db35f3afd8 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -5988,6 +5988,13 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { SetVersion($DBversion); } +$DBversion ="3.09.00.059"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('BlockReturnOfWithdrawnItems', '1', '0', 'If enabled, items that are marked as withdrawn cannot be returned.', 'YesNo');"); + print "Upgrade to $DBversion done (Add system preference BlockReturnOfWithdrawnItems)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref index 531b8783c4..ec5ff1e9df 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -285,6 +285,13 @@ Circulation: alert: "display a message" nothing : "do nothing" - . + Checkin Policy: + - + - pref: BlockReturnOfWithdrawnItems + choices: + yes: Block + no: "Don't block" + - returning of items that have been withdrawn. Holds Policy: - - pref: AllowHoldPolicyOverride 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 917855db5f..050ebd3d51 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -334,7 +334,12 @@ $(document).ready(function () {

Item was lost, now found.

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

Item is withdrawn.

+ [% IF BlockReturnOfWithdrawnItems %] +

Cannot Check In

+

Item is withdrawn. NOT CHECKED IN

+ [% ELSE %] +

Item is withdrawn.

+ [% END %] [% END %] [% IF ( errmsgloo.debarred ) %]

[% errmsgloo.debarname %]([% errmsgloo.debarcardnumber %]) is now debarred until [% errmsgloo.debarred | $KohaDates %]

-- 2.39.5