From 08196a3341937a1bf701c980db6bc0fbee000f2e 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
---
installer/data/mysql/sysprefs.sql | 2 +-
installer/data/mysql/updatedatabase.pl | 25 ++++++++++++++++++++
.../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, 34 insertions(+), 9 deletions(-)
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 0a3f20f..9da5066 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -142,7 +142,7 @@ INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES
-- LDAP ? required fields?
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('WebBasedSelfCheck',0,'If ON, enables the web-based self-check system',NULL,'YesNo');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('SelfCheckTimeout',120,'Define the number of seconds before the Web-based Self Checkout times out a patron','','Integer');
-INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AllowSelfCheckReturns',0,'If enabled, patrons may return items through the Web-based Self Checkout','','YesNo');
+INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AllowSelfCheckReturns','none','If enabled, patrons may return items through the Web-based Self Checkout','all|nonblocked|none','Choice');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('SelfCheckHelpMessage','','Enter HTML to include under the basic Web-based Self Checkout instructions on the Help page','70|10','Textarea');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('numSearchResults',20,'Specify the maximum number of results to display on a page of results',NULL,'Integer');
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OPACnumSearchResults',20,'Specify the maximum number of results to display on a page of results',NULL,'Integer');
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index adc1e7f..5270a01 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -7036,6 +7036,31 @@ if ( CheckVersion($DBversion) ) {
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);
+}
+
=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 64cf338..2b69b08 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
@@ -532,8 +532,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 bfd71a2..f745d53 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
@@ -149,8 +149,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' %]
[% END %]
-[% END %]