From 63f692b64f16c55e148452264e94a44ac9e4ab3d Mon Sep 17 00:00:00 2001 From: pines Date: Mon, 23 Oct 2006 18:56:40 +0000 Subject: [PATCH] checkdigit test git-svn-id: svn://svn.open-ils.org/ILS/trunk@6500 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/xul/staff_client/server/circ/checkin.js | 26 ++++++++++++++++++++ Open-ILS/xul/staff_client/server/circ/checkout.js | 27 +++++++++++++++++++++ .../xul/staff_client/server/circ/copy_status.js | 26 ++++++++++++++++++++ .../xul/staff_client/server/circ/in_house_use.js | 26 ++++++++++++++++++++ .../server/skin/media/images/bad_barcode.png | Bin 0 -> 7498 bytes 5 files changed, 105 insertions(+) create mode 100644 Open-ILS/xul/staff_client/server/skin/media/images/bad_barcode.png diff --git a/Open-ILS/xul/staff_client/server/circ/checkin.js b/Open-ILS/xul/staff_client/server/circ/checkin.js index 81a2d129df..6cc903a381 100644 --- a/Open-ILS/xul/staff_client/server/circ/checkin.js +++ b/Open-ILS/xul/staff_client/server/circ/checkin.js @@ -5,6 +5,7 @@ circ.checkin = function (params) { JSAN.use('util.error'); this.error = new util.error(); JSAN.use('util.network'); this.network = new util.network(); + JSAN.use('util.barcode'); JSAN.use('util.date'); this.OpenILS = {}; JSAN.use('OpenILS.data'); this.OpenILS.data = new OpenILS.data(); this.OpenILS.data.init({'via':'stash'}); this.data = this.OpenILS.data; @@ -261,11 +262,36 @@ circ.checkin.prototype = { }, + 'test_barcode' : function(bc) { + var obj = this; + var good = util.barcode.check(bc); + if (good) { + return true; + } else { + if ( 1 == obj.error.yns_alert( + 'Bad checkdigit; possible mis-scan. Use this barcode ("' + bc + '") anyway?', + 'Bad Barcode', + 'Cancel', + 'Accept Barcode', + null, + 'Check here to confirm this action', + '/xul/server/skin/media/images/bad_barcode.png' + ) ) { + return true; + } else { + return false; + } + } + }, + 'checkin' : function() { var obj = this; try { var barcode = obj.controller.view.checkin_barcode_entry_textbox.value; if (!barcode) return; + if (barcode) { + if ( obj.test_barcode(barcode) ) { /* good */ } else { /* bad */ return; } + } var backdate = obj.controller.view.checkin_effective_date_textbox.value; var auto_print = document.getElementById('checkin_auto'); if (auto_print) auto_print = auto_print.checked; diff --git a/Open-ILS/xul/staff_client/server/circ/checkout.js b/Open-ILS/xul/staff_client/server/circ/checkout.js index dc4fc5f270..2087418737 100644 --- a/Open-ILS/xul/staff_client/server/circ/checkout.js +++ b/Open-ILS/xul/staff_client/server/circ/checkout.js @@ -6,6 +6,7 @@ circ.checkout = function (params) { JSAN.use('util.error'); this.error = new util.error(); JSAN.use('util.network'); this.network = new util.network(); JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'}); + JSAN.use('util.barcode'); } circ.checkout.prototype = { @@ -415,6 +416,28 @@ circ.checkout.prototype = { } }, + 'test_barcode' : function(bc) { + var obj = this; + var good = util.barcode.check(bc); + if (good) { + return true; + } else { + if ( 1 == obj.error.yns_alert( + 'Bad checkdigit; possible mis-scan. Use this barcode ("' + bc + '") anyway?', + 'Bad Barcode', + 'Cancel', + 'Accept Barcode', + null, + 'Check here to confirm this action', + '/xul/server/skin/media/images/bad_barcode.png' + ) ) { + return true; + } else { + return false; + } + } + }, + 'checkout' : function(params) { var obj = this; @@ -427,6 +450,10 @@ circ.checkout.prototype = { if (! (params.barcode||params.noncat)) return; + if (params.barcode) { + if ( obj.test_barcode(params.barcode) ) { /* good */ } else { /* bad */ return; } + } + /**********************************************************************************************************************/ /* Permissibility test before checkout */ diff --git a/Open-ILS/xul/staff_client/server/circ/copy_status.js b/Open-ILS/xul/staff_client/server/circ/copy_status.js index 72470873f8..4e05a6dd9c 100644 --- a/Open-ILS/xul/staff_client/server/circ/copy_status.js +++ b/Open-ILS/xul/staff_client/server/circ/copy_status.js @@ -5,6 +5,7 @@ circ.copy_status = function (params) { JSAN.use('util.error'); this.error = new util.error(); JSAN.use('util.network'); this.network = new util.network(); + JSAN.use('util.barcode'); JSAN.use('util.date'); JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'}); } @@ -315,12 +316,37 @@ circ.copy_status.prototype = { }, + 'test_barcode' : function(bc) { + var obj = this; + var good = util.barcode.check(bc); + if (good) { + return true; + } else { + if ( 1 == obj.error.yns_alert( + 'Bad checkdigit; possible mis-scan. Use this barcode ("' + bc + '") anyway?', + 'Bad Barcode', + 'Cancel', + 'Accept Barcode', + null, + 'Check here to confirm this action', + '/xul/server/skin/media/images/bad_barcode.png' + ) ) { + return true; + } else { + return false; + } + } + }, + 'copy_status' : function(barcode) { var obj = this; try { try { document.getElementById('last_scanned').setAttribute('value',''); } catch(E) {} if (!barcode) barcode = obj.controller.view.copy_status_barcode_entry_textbox.value; if (!barcode) return; + if (barcode) { + if ( obj.test_barcode(barcode) ) { /* good */ } else { /* bad */ return; } + } JSAN.use('circ.util'); var copy = obj.network.simple_request( 'FM_ACP_RETRIEVE_VIA_BARCODE', [ barcode ]); if (copy == null) { diff --git a/Open-ILS/xul/staff_client/server/circ/in_house_use.js b/Open-ILS/xul/staff_client/server/circ/in_house_use.js index 83d2eebc9a..0589aa3de4 100644 --- a/Open-ILS/xul/staff_client/server/circ/in_house_use.js +++ b/Open-ILS/xul/staff_client/server/circ/in_house_use.js @@ -5,6 +5,7 @@ circ.in_house_use = function (params) { JSAN.use('util.error'); this.error = new util.error(); JSAN.use('util.network'); this.network = new util.network(); + JSAN.use('util.barcode'); JSAN.use('util.date'); JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'}); } @@ -197,12 +198,37 @@ circ.in_house_use.prototype = { }, + 'test_barcode' : function(bc) { + var obj = this; + var good = util.barcode.check(bc); + if (good) { + return true; + } else { + if ( 1 == obj.error.yns_alert( + 'Bad checkdigit; possible mis-scan. Use this barcode ("' + bc + '") anyway?', + 'Bad Barcode', + 'Cancel', + 'Accept Barcode', + null, + 'Check here to confirm this action', + '/xul/server/skin/media/images/bad_barcode.png' + ) ) { + return true; + } else { + return false; + } + } + }, + 'in_house_use' : function() { var obj = this; try { var barcode; if (obj.controller.view.in_house_use_menu.value == '' || obj.controller.view.in_house_use_menu.value == 'barcode') { barcode = obj.controller.view.in_house_use_barcode_entry_textbox.value; + if (barcode) { + if ( obj.test_barcode(barcode) ) { /* good */ } else { /* bad */ return; } + } } else { barcode = ( obj.controller.view.in_house_use_menu.value ); //barcode = obj.data.hash.cnct[ obj.controller.view.in_house_use_menu.value ].name() diff --git a/Open-ILS/xul/staff_client/server/skin/media/images/bad_barcode.png b/Open-ILS/xul/staff_client/server/skin/media/images/bad_barcode.png new file mode 100644 index 0000000000000000000000000000000000000000..e5acc55b4f2b3f8d2fcacdb58e219705e7d16592 GIT binary patch literal 7498 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