--- loncom/homework/grades.pm	2013/06/16 16:59:29	1.691
+++ loncom/homework/grades.pm	2013/06/28 22:40:04	1.693
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.691 2013/06/16 16:59:29 raeburn Exp $
+# $Id: grades.pm,v 1.693 2013/06/28 22:40:04 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -7431,6 +7431,7 @@ used to fill in the scantron_questions f
      startline    - Reference to hash where key is question number (0 is first)
                     and key is number of first bubble line for current student
                     or code-based randompick and/or randomorder.
+
 =cut
 
 
@@ -8065,7 +8066,7 @@ sub scantron_validate_missingbubbles {
     my $max_bubble=&scantron_get_maxbubble(\$nav_error,\%scantron_config);
     if ($nav_error) {
         $r->print(&navmap_errormsg());
-        return '';
+        return(1,$currentphase);
     }
 
     if (!$max_bubble) { $max_bubble=2**31; }
@@ -8188,7 +8189,7 @@ sub scantron_process_students {
     }
     my $map=$navmap->getResourceByUrl($sequence);
     my ($randomorder,$randompick,@master_seq,%symb_to_resource,%grader_partids_by_symb,
-        %grader_randomlists_by_symb,%orderedforcode);
+        %grader_randomlists_by_symb);
     if (ref($map)) {
         $randomorder = $map->randomorder();
         $randompick = $map->randompick();
@@ -8340,6 +8341,13 @@ SCANTRONFORM
             return '';      # Why return ''?  Beats me.
         }
 
+        if (($scancode) && ($randomorder || $randompick)) {
+            my $parmresult =
+                &Apache::lonparmset::storeparm_by_symb($symb,
+                                                       '0_examcode',2,$scancode,
+                                                       'string_examcode',$uname,
+                                                       $udom);
+        }
 	$completedstudents{$uname}={'line'=>$line};
         if ($env{'form.verifyrecord'}) {
             my $lastpos = $env{'form.scantron_maxbubble'}*$scantron_config{'Qlength'};
@@ -8871,8 +8879,8 @@ sub checkscantron_results {
         my $scan_record=
             &Apache::grades::scantron_parse_scanline($line,$i,\%scantron_config,
                                                      $scan_data);
-        unless ($uname=&Apache::grades::scantron_find_student($scan_record,$scan_data,
-                                                              \%idmap,$i)) {
+        unless ($uname=&scantron_find_student($scan_record,$scan_data,
+                                              \%idmap,$i)) {
             &Apache::grades::scantron_add_delay(\@delayqueue,$line,
                                 'Unable to find a student that matches',1);
             next;