From e39e19c2714a5349b7863dcc4844d081b286ab5f Mon Sep 17 00:00:00 2001 From: Mason James Date: Tue, 9 Jul 2013 13:48:08 +1200 Subject: [PATCH] Bug 10554 - Add more options to 'AllowSelfCheckReturns' syspref Content-Type: text/plain; charset="utf-8" This patch modifies the options of AllowSelfCheckReturns syspref from a 2 option selection - 'allow patrons', dont allow patrons' to a 3 option selection - 'allow all patrons', 'allow non-blocked patrons' , allow no patrons' currently, a problem with the syspref behavior in Koha is that enabling the 'AllowSelfCheckReturns' syspref does *not* allow patrons with a 'block' to return items via the SCO. (this is apparently by design, and not a bug) however, some libraries do want to allow patrons to return items via the SCO even if they have a 'block' this patch adds this additional behavior, by adding a new option to the syspref, but also retaining the existing syspref behavior after the patch, there are 2 allow options - 'Allow all' allows all patrons to return items (including blocked patrons) - 'Allow non-blocked' allows only non-blocked patrons to return items (note: this is the current 'allow' behavior) the patch correctly 'upgrades' existing 'allow' selection to the new 'Allow non-blocked' value. so, any existing 'allow' selection works as before ---------- to test these 3 syspref options... 1/ - set syspref to 'dont allow' - issue an item to a patron - attempt to return item via SCO, return should FAIL 2/ - set syspref to 'allow all' - issue an item to a patron - attempt to return item via SCO, return should SUCCEED 3/ - set syspref to 'allow nonblocked' - issue an item to a patron - attempt to return item via SCO, return should SUCCEED - issue an item to a patron, with a returndate of '2001-01-01' (important: this will create an overdue item, that will put a 'block' on this patron's account) - attempt to return item via SCO, return should FAIL http://bugs.koha-community.org/show_bug.cgi?id=10544 Signed-off-by: Mason James --- installer/data/mysql/sysprefs.sql | 4 ++- installer/data/mysql/updatedatabase.pl | 26 +++++++++++++++++++- .../en/modules/admin/preferences/circulation.pref | 5 ++-- .../opac-tmpl/prog/en/modules/sco/sco-main.tt | 6 ++--- opac/sco/sco-main.pl | 5 ++-- 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 4b9c492..cf2622a 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -22,7 +22,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('AllowPurchaseSuggestionBranchChoice','0','1','Allow user to choose branch when making a purchase suggestion','YesNo'), ('AllowRenewalLimitOverride','0',NULL,'if ON, allows renewal limits to be overridden on the circulation screen','YesNo'), ('AllowReturnToBranch','anywhere','anywhere|homebranch|holdingbranch|homeorholdingbranch','Where an item may be returned','Choice'), -('AllowSelfCheckReturns','0','','If enabled, patrons may return items through the Web-based Self Checkout','YesNo'), +('AllowSelfCheckReturns','none','If enabled, patrons may return items through the Web-based Self Checkout','all|nonblocked|none','Choice'); ('AllowTooManyOverride','1','','If on, allow staff to override and check out items when the patron has reached the maximum number of allowed checkouts','YesNo'), ('alphabet','A B C D E F G H I J K L M N O P Q R S T U V W X Y Z',NULL,'Alphabet than can be expanded into browse links, e.g. on Home > Patrons','free'), ('AlternateHoldingsField','',NULL,'The MARC field/subfield that contains alternate holdings information for bibs taht do not have items attached (e.g. 852abchi for libraries converting from MARC Magician).','free'), @@ -419,3 +419,5 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('z3950AuthorAuthFields','701,702,700',NULL,'Define the MARC biblio fields for Personal Name Authorities to fill biblio.author','free'), ('z3950NormalizeAuthor','0','','If ON, Personal Name Authorities will replace authors in biblio.author','YesNo') ; + +installer/data/mysql/sysprefs.sql diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 31f494a..6d2e24e 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -7130,12 +7130,36 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } - $DBversion = "3.13.00.020"; if ( CheckVersion($DBversion) ) { $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('WhenLostForgiveFine','0',NULL,'If ON, Forgives the fines on an item when it is lost.','YesNo')"); $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('WhenLostChargeReplacementFee','1',NULL,'If ON, Charge the replacement price when a patron loses an item.','YesNo')"); print "Upgrade to $DBversion done (Bug 7639: system preferences to forgive fines on lost items)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.13.00.XXX"; +if ( CheckVersion($DBversion) ) { + + #get current value + my $sth = $dbh->prepare("SELECT * from systempreferences where variable = 'AllowSelfCheckReturns'"); + $sth->execute; + my $row = $sth->fetchrow_hashref; + my $val = $row->{value}; + my $newval; + + if ($val =~ /1/ ) { + $newval = 'nonblocked'; + } else { + $newval = 'none'; + } + + # update syspref + my $sth_update = $dbh->prepare("UPDATE systempreferences + SET value=?, options='all|nonblocked|none', type='Choice' WHERE variable='AllowSelfCheckReturns'"); + $sth_update->execute($newval); + + print "Upgrade to $DBversion done (added 'nonblocked' to AllowSelfCheckReturns syspref)\n"; SetVersion ($DBversion); } 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 96b6d34..65af022 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 @@ -556,8 +556,9 @@ Circulation: - - pref: AllowSelfCheckReturns choices: - yes: Allow - no: "Don't allow" + all: "Allow all" + nonblocked: "Allow non-blocked" + none: "Don't allow" - patrons to return items through web-based self checkout system. - - "Include the following HTML in the Help page of the web-based self checkout system:" diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt b/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt index 3803368..e374404 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tt @@ -140,8 +140,7 @@ $(document).ready(function() { [% END %] Please see a member of the library staff.

-[% IF ( returnitem ) %] -[% IF ( AllowSelfCheckReturns ) %] +[% IF (AllowSelfCheckReturns == 'nonblocked' and returnitem ) or AllowSelfCheckReturns == 'all' %]
@@ -149,7 +148,6 @@ $(document).ready(function() {
[% END %] -[% END %]
@@ -162,7 +160,7 @@ $(document).ready(function() {

[% IF ( confirm_renew_issue ) %]This item is already checked out to you.[% END %]

[% IF ( renew ) %] -[% IF ( AllowSelfCheckReturns ) %] +[% IF (AllowSelfCheckReturns == 'nonblocked' or AllowSelfCheckReturns == 'all') %] diff --git a/opac/sco/sco-main.pl b/opac/sco/sco-main.pl index 0f16c8c..a897ea2 100755 --- a/opac/sco/sco-main.pl +++ b/opac/sco/sco-main.pl @@ -83,7 +83,7 @@ if (C4::Context->preference('SelfCheckTimeout')) { $template->param(SelfCheckTimeout => $selfchecktimeout); # Checks policy laid out by AllowSelfCheckReturns, defaults to 'on' if preference is undefined -my $allowselfcheckreturns = 1; +my $allowselfcheckreturns = 'nonblocked'; if (defined C4::Context->preference('AllowSelfCheckReturns')) { $allowselfcheckreturns = C4::Context->preference('AllowSelfCheckReturns'); } @@ -120,7 +120,7 @@ my $return_only = 0; if ($op eq "logout") { $query->param( patronid => undef, patronlogin => undef, patronpw => undef ); } -elsif ( $op eq "returnbook" && $allowselfcheckreturns ) { +elsif ( $op eq "returnbook" && $allowselfcheckreturns =~ /nonblocked|all/) { my ($doreturn) = AddReturn( $barcode, $branch ); #warn "returnbook: " . $doreturn; $borrower = GetMemberDetails(undef,$patronid); @@ -152,6 +152,7 @@ elsif ( $op eq "checkout" ) { "circ_error_$issue_error" => 1, title => $item->{title}, hide_main => 1, + barcode => $barcode, ); if ($issue_error eq 'DEBT') { $template->param(amount => C4::Budgets->GetCurrency()->{symbol}.$impossible->{DEBT}); -- 1.7.10.4