From 473291068d8fdc919dbcb46b121cc6d56c35f930 Mon Sep 17 00:00:00 2001
From: Chad Billman <chad@pennmanor.net>
Date: Thu, 21 Jan 2016 10:59:01 -0500
Subject: [PATCH] Bug 15752 - Automatically switch patron during circulation

With this syspref enabled scanning a patron barcode into the item
barcode field during circulation will redirect you to the patron's
circulation page.

This allows circulation with only a barcode scanner.

Testing:

- Enable the AutoSwitchPatron syspref
- Navigate to a patron's check out screen
- Enter a patron barcode into the "Enter item barcode" field

Result
- Browser should be redirected to the entered patron

Signed-off-by: Joel <aloi54@live.fr>
---
 circ/circulation.pl                                                | 6 ++++++
 .../data/mysql/atomicupdate/Bug15752_CircAutoSwitchPatron.sql      | 2 ++
 installer/data/mysql/sysprefs.sql                                  | 1 +
 .../prog/en/modules/admin/preferences/circulation.pref             | 7 +++++++
 4 files changed, 16 insertions(+)
 create mode 100644 installer/data/mysql/atomicupdate/Bug15752_CircAutoSwitchPatron.sql

diff --git a/circ/circulation.pl b/circ/circulation.pl
index 130d350..d76cb78 100755
--- a/circ/circulation.pl
+++ b/circ/circulation.pl
@@ -82,6 +82,12 @@ if (!C4::Context->userenv){
     }
 }
 
+if (C4::Context->preference("AutoSwitchPatron") ) {
+    if (Koha::Patrons->search( { cardnumber => $query->param('barcode')} )->count() > 0) {
+        print $query->redirect("/cgi-bin/koha/circ/circulation.pl?findborrower=".$query->param('barcode'));
+    }
+}
+
 my $barcodes = [];
 my $barcode =  $query->param('barcode');
 # Barcode given by user could be '0'
diff --git a/installer/data/mysql/atomicupdate/Bug15752_CircAutoSwitchPatron.sql b/installer/data/mysql/atomicupdate/Bug15752_CircAutoSwitchPatron.sql
new file mode 100644
index 0000000..620c659
--- /dev/null
+++ b/installer/data/mysql/atomicupdate/Bug15752_CircAutoSwitchPatron.sql
@@ -0,0 +1,2 @@
+INSERT INTO systempreferences (variable,value,options,explanation,type)
+VALUES ('AutoSwitchPatron', '0', '', 'Auto switch to patron', 'YesNo');
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 5155fe7..bdf723c 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -68,6 +68,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
 ('AutoSelfCheckAllowed','0','','For corporate and special libraries which want web-based self-check available from any PC without the need for a manual staff login. Most libraries will want to leave this turned off. If on, requires self-check ID and password to be entered in AutoSelfCheckID and AutoSelfCheckPass sysprefs.','YesNo'),
 ('AutoSelfCheckID','','','Staff ID with circulation rights to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','free'),
 ('AutoSelfCheckPass','','','Password to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','free'),
+('AutoSwitchPatron', '0', '', 'Auto switch to patron', 'YesNo'),
 ('Babeltheque','0','','Turn ON Babeltheque content  - See babeltheque.com to subscribe to this service','YesNo'),
 ('Babeltheque_url_js','','','Url for Babeltheque javascript (e.g. http://www.babeltheque.com/bw_XX.js)','Free'),
 ('Babeltheque_url_update','','','Url for Babeltheque update (E.G. http://www.babeltheque.com/.../file.csv.bz2)','Free'),
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 90b2844..0d8a057 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
@@ -8,6 +8,13 @@ Circulation:
                   no: Deactivate
             - the navigation sidebar on all Circulation pages.
         -
+            - pref: AutoSwitchPatron
+              choices:
+                  yes: "Enable"
+                  no: "Don't enable"
+            - the automatic redirection to another patron when a patron barcode is scanned instead of a book.
+            - This should not be enabled if you have overlapping patron and book barcodes.
+        -
             - pref: CircAutocompl
               choices:
                   yes: Try
-- 
2.1.4