From 58e9372e017faedca8f207d575270b2db5f027b5 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. --- 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 9508c78..5d6a235 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1602,7 +1602,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) @@ -1685,7 +1685,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 b9127da..14ca228 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -291,15 +291,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 ); } } @@ -444,7 +435,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 ) { @@ -613,6 +604,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 7009155..edf487b 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -375,3 +375,4 @@ INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ( INSERT INTO systempreferences (variable,value,explanation,type) VALUES('EnableBorrowerFiles','0','If enabled, allows librarians to upload and attach arbitrary files to a borrower record.','YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UpdateTotalIssuesOnCirc','0','Whether to update the totalissues field in the biblio on each circ.',NULL,'YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('IntranetSlipPrinterJS','','Use this JavaScript for printing slips. Define at least function printThenClose(). For use e.g. with Firefox PlugIn jsPrintSetup, see http://jsprintsetup.mozdev.org/','','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'); \ No newline at end of file diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index bb96644..14486e7 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -5536,6 +5536,13 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { SetVersion($DBversion); } +$DBversion ="3.09.00.XXX"; +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 e07fc0d..33beb54 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 @@ -254,6 +254,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 1ed01f0..76ca486 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -335,7 +335,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 %]

-- 1.7.2.5