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' %]
 
 [% END %]
-[% END %]