Bug 13415 - Prevent librarians from scanning multiple items into a single barcode...
authorKyle M Hall <kyle@bywatersolutions.com>
Tue, 9 Dec 2014 11:30:36 +0000 (06:30 -0500)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Fri, 19 Dec 2014 20:41:11 +0000 (17:41 -0300)
It appears that some librarians will attempt to scan items as fast as
they can without checking to make sure the checkout was submitted and
the page reloaded properly. This can cause multiple barcodes to be
scanned into the barcode field if the person is fast enough.
This causes the checkout of both ( or more! ) items to fail.

Test Plan:
1) Apply this patch
2) Attempt to scan two or more items into the barcode field
   You can emulate this with a keybaord by hitting a few keys, then
   enter, then a few more keys, then enter again. The barcodes don't
   need to be valid for this test.
3) Note the dialog stating the barcode has been submitted and to please
   wait.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt

index b938724..04b9d61 100644 (file)
@@ -60,6 +60,17 @@ function toggle_onsite_checkout(){
 }
 
 $(document).ready(function() {
+    [% IF !NEEDSCONFIRMATION %]
+        $('#barcode').prop('disabled', false).focus();
+    [% END %]
+    $('#mainform').bind('submit',function() {
+        $('#barcode').on('keypress',function(event) {
+            $('#barcodeSubmittedModal').modal();
+            event.preventDefault(); }
+        );
+    });
+
+
     [% IF !( CircAutoPrintQuickSlip == 'clear' ) %]
         // listen submit to trigger qslip on empty checkout
         $('#mainform').bind('submit',function() {
@@ -528,11 +539,7 @@ No patron matched <span class="ex">[% message %]</span>
 
        <div class="hint">Enter item barcode:</div>
 
-    [% IF NEEDSCONFIRMATION %]
-           <input type="text" name="barcode" id="barcode" class="barcode focus" size="14" disabled="disabled" />
-    [% ELSE %]
-           <input type="text" name="barcode" id="barcode" class="barcode focus" size="14" />
-    [% END %]
+    <input type="text" name="barcode" id="barcode" class="barcode focus" size="14" disabled="disabled" />
     <button type="submit" class="btn">Check out</button>
 
     <div class="date-select">
@@ -871,4 +878,14 @@ No patron matched <span class="ex">[% message %]</span>
 [% INCLUDE 'circ-menu.inc' %]
 </div>[% END %][% END %]
 </div>
+<!-- Modal -->
+<div id="barcodeSubmittedModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="barcodeSubmittedModalLabel" aria-hidden="true">
+    <div class="modal-header">
+        <h3 id="barcodeSubmittedModalLabel">Barcode submitted</h3>
+    </div>
+
+    <div class="modal-body">
+        <p>You have already submitted a barcode, please wait for the checkout to process...</p>
+    </div>
+</div>
 [% INCLUDE 'intranet-bottom.inc' %]