Index: main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py	(revision 13962)
+++ main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py	(revision 13963)
@@ -98,5 +98,5 @@
             % self.p_id)
         self.assertEqual(self.browser.contents,
-            'PayeeName=Anna Tester~'
+            'PayeeName=TESTER, Anna~'
             'Faculty=fac1~'
             'Department=dep1~'
@@ -181,5 +181,5 @@
             % self.p_id)
         self.assertEqual(self.browser.contents,
-            'PayeeName=Anna Tester~'
+            'PayeeName=TESTER, Anna~'
             'Faculty=fac1~'
             'Department=dep1~'
@@ -213,5 +213,5 @@
             % self.p_id)
         self.assertEqual(self.browser.contents,
-            'PayeeName=Anna Tester~'
+            'PayeeName=TESTER, Anna~'
             'Faculty=fac1~'
             'Department=dep1~'
@@ -291,5 +291,5 @@
             % self.p_id)
         self.assertEqual(self.browser.contents,
-            'PayeeName=John Anthony Tester~'
+            'PayeeName=TESTER, John Anthony~'
             'Faculty=N/A~'
             'Department=N/A~'
Index: main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 13962)
+++ main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 13963)
@@ -107,2 +107,8 @@
 msgid "Registration Number or Applicant Id:"
 msgstr "JAMB Reg. No. or Applicant Id:"
+
+msgid "Level Report"
+msgstr "Summary of Results"
+
+msgid "Create level report"
+msgstr "Create summary of results"
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py	(revision 13962)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py	(revision 13963)
@@ -649,15 +649,25 @@
             code=(self.context.code, self.context.code)
             )
-        header = [[_('Matric No.'),
+        header = [[_(''),
+                   _('Matric No.'),
                    _('Reg. No.'),
                    _('Fullname'),
                    _('Status'),
-                   _('Course of Studies'),
+                   _('Course of\nStudies'),
                    _('Level'),
-                   _('Score'),
-                   _('CA') ],]
+                   _('Exam\nScore'),
+                   _('CA'),
+                   _('Total'),
+                   _('Grade'),
+                   ],]
         tickets = []
+        no = 1
         for ticket in list(coursetickets):
-            row = [ticket.student.matric_number,
+            if None in (ticket.score, ticket.ca):
+                total = 'n/a'
+            else:
+                total = ticket.score + ticket.ca
+            row = [no,
+                  ticket.student.matric_number,
                   ticket.student.reg_number,
                   ticket.student.display_fullname,
@@ -665,7 +675,11 @@
                   ticket.student.certcode,
                   ticket.level,
+                  ticket.ca,
                   ticket.score,
-                  ticket.ca]
+                  total,
+                  ticket.grade,
+                  ]
             tickets.append(row)
+            no += 1
         return header + sorted(tickets, key=lambda value: value[0])
 
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/export.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/export.py	(revision 13962)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/export.py	(revision 13963)
@@ -89,4 +89,4 @@
 
     fields = ('matric_number', 'student_id',
-              'level', 'code', 'level_session', 'score', 'ca')
+              'level', 'code', 'level_session', 'ca', 'score')
 
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/reports/tests/test_student_level_statistics.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/reports/tests/test_student_level_statistics.py	(revision 13962)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/reports/tests/test_student_level_statistics.py	(revision 13963)
@@ -7,5 +7,4 @@
 from waeup.kofa.students.tests.test_catalog import CatalogTestSetup
 from waeup.kofa.students.tests.test_browser import StudentsFullSetup
-from waeup.kofa.tests.test_async import FunctionalAsyncTestCase
 from waeup.kofa.browser.tests.test_pdf import samples_dir
 
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py	(revision 13962)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py	(revision 13963)
@@ -767,5 +767,5 @@
         self.browser.getControl(name="scores:list", index=0).value = 'abc'
         self.browser.getControl("Update scores").click()
-        self.assertTrue('Error: Score(s) and CA(s) of Anna Tester have not be updated.'
+        self.assertTrue('Error: Score(s) and CA(s) of TESTER, Anna have not be updated.'
             in self.browser.contents)
         # Scores can be removed.
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_export.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_export.py	(revision 13962)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_export.py	(revision 13963)
@@ -167,5 +167,5 @@
             'display_fullname,matric_number\r\n'
             '1,,1,CRS1,100,DEP1,FAC1,100,2012,0,100,,2,Course 1,A111111,CERT1,'
-            'Anna M. Tester,234\r\n'
+            '"TESTER, Anna M.",234\r\n'
             )
         return
Index: main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py	(revision 13962)
+++ main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py	(revision 13963)
@@ -18,4 +18,6 @@
 """Customize general helper utilities for Kofa.
 """
+
+import string
 from kofacustom.nigeria.utils.utils import NigeriaKofaUtils
 
@@ -161,2 +163,21 @@
         'Institute of Education': ('dp_ft'),
         }
+
+    def fullname(self, firstname, lastname, middlename=None):
+        """Construct fullname.
+        """
+        try:
+            lastname = lastname.upper()
+        except AttributeError:
+            pass
+        # We do not necessarily have the middlename attribute
+        if middlename:
+            givennames = '%s %s' % (firstname, middlename)
+        else:
+            givennames = '%s' % firstname
+        givennames = string.capwords(
+            givennames.replace('-', ' - ')).replace(' - ', '-')
+        fullname = '%s, %s' % (lastname, givennames)
+        if '<' in fullname:
+            return 'XXX'
+        return fullname
