From 8a180d2d1182a8e8bd89e68934372d58a1f97a67 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 11 Apr 2012 09:55:55 -0400 Subject: [PATCH] Bug 8167 - Add syspref allow a choice of blocking, non-blocking, or do nothing when issuing lost items. Signed-off-by: Liz Rea Works as advertised. --- C4/Circulation.pm | 10 +++++++--- circ/circulation.pl | 4 +++- installer/data/mysql/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 7 +++++++ .../en/modules/admin/preferences/circulation.pref | 8 ++++++++ .../prog/en/modules/circ/circulation.tt | 4 ++++ 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index c26de76..24c193a 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -668,6 +668,8 @@ sub CanBookBeIssued { my ( $borrower, $barcode, $duedate, $inprocess, $ignore_reserves ) = @_; my %needsconfirmation; # filled with problems that needs confirmations my %issuingimpossible; # filled with problems that causes the issue to be IMPOSSIBLE + my %alerts; # filled with messages that shouldn't stop issuing, but the librarian should be aware of. + my $item = GetItem(GetItemnumberFromBarcode( $barcode )); my $issue = GetItemIssue($item->{itemnumber}); my $biblioitem = GetBiblioItemData($item->{biblioitemnumber}); @@ -849,8 +851,10 @@ sub CanBookBeIssued { { $issuingimpossible{RESTRICTED} = 1; } - if ( $item->{'itemlost'} ) { - $needsconfirmation{ITEM_LOST} = GetAuthorisedValueByCode( 'LOST', $item->{'itemlost'} ); + if ( $item->{'itemlost'} && C4::Context->preference("IssueLostItem") ne 'nothing' ) { + my $code = GetAuthorisedValueByCode( 'LOST', $item->{'itemlost'} ); + $needsconfirmation{ITEM_LOST} = $code if ( C4::Context->preference("IssueLostItem") eq 'confirm' ); + $alerts{ITEM_LOST} = $code if ( C4::Context->preference("IssueLostItem") eq 'alert' ); } if ( C4::Context->preference("IndependantBranches") ) { my $userenv = C4::Context->userenv; @@ -927,7 +931,7 @@ sub CanBookBeIssued { } } } - return ( \%issuingimpossible, \%needsconfirmation ); + return ( \%issuingimpossible, \%needsconfirmation, \%alerts ); } =head2 AddIssue diff --git a/circ/circulation.pl b/circ/circulation.pl index c89abff..b6d8941 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -279,10 +279,12 @@ if ($borrowernumber) { # if ($barcode) { # always check for blockers on issuing - my ( $error, $question ) = + my ( $error, $question, $alerts ) = CanBookBeIssued( $borrower, $barcode, $datedue , $inprocess ); my $blocker = $invalidduedate ? 1 : 0; + $template->param( alert => $alerts ); + delete $question->{'DEBT'} if ($debt_confirmed); foreach my $impossible ( keys %$error ) { $template->param( diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 2ffe2df..79f192f 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -365,3 +365,4 @@ INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ( INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacBrowseResults','1','Disable/enable browsing and paging search results from the OPAC detail page.',NULL,'YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SvcMaxReportRows','10','Maximum number of rows to return via the report web service.',NULL,'Integer'); INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('ReservesControlBranch','PatronLibrary','ItemHomeLibrary|PatronLibrary','Branch checked for members reservations rights','Choice'); +INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('IssueLostItem', 'alert', 'alert|confirm|nothing', 'Defines what should be done when an attempt is made to issue an item that has been marked as lost.', 'Choice'); diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 51a6486..6daa8d9 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -5307,6 +5307,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,explanation,options,type) VALUES('IssueLostItem', 'alert', 'alert|confirm|nothing', 'Defines what should be done when an attempt is made to issue an item that has been marked as lost.', 'Choice')"); + print "Upgrade to $DBversion done (Add system preference issuelostitem ))\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 471aa0e..2705d2e 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 @@ -240,6 +240,14 @@ Circulation: choices: homebranch: the library the item is from. holdingbranch: the library the item was checked out from. + - + - "When issuing an item that has been marked as lost, " + - pref: IssueLostItem + choices: + confirm: "require confirmation" + alert: "display a message" + nothing : "do nothing" + - . Holds Policy: - - pref: AllowHoldPolicyOverride diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt index 1bceb0c..aaa0464 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -234,6 +234,10 @@ function refocus(calendar) { [% END %] +[% IF ( alert.ITEM_LOST ) %] +
This item has been lost with a status of "[% alert.ITEM_LOST %]".
+[% END %] + [% IF ( NEEDSCONFIRMATION ) %]
-- 1.7.2.5