Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py	(revision 10018)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py	(revision 10019)
@@ -30,7 +30,9 @@
     NigeriaExportPDFPaymentSlipPage,
     NigeriaStudentClearanceEditFormPage,
+    NigeriaExportPDFClearanceSlipPage
     )
 
-from waeup.fceokene.students.interfaces import ICustomStudentOnlinePayment
+from waeup.fceokene.students.interfaces import (
+    ICustomStudentOnlinePayment, ICustomUGStudentClearance)
 
 class CustomExportPDFAdmissionSlipPage(ExportPDFAdmissionSlipPage):
@@ -48,5 +50,4 @@
     def label(self):
         portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
-        lang = self.request.cookies.get('kofa.language', portal_language)
         line0 = ''
         if self.context.student.current_mode.startswith('ug'):
@@ -92,4 +93,33 @@
         return False
 
+class CustomExportPDFClearanceSlipPage(NigeriaExportPDFClearanceSlipPage):
+    """Deliver a PDF slip of the context.
+    """
+
+    @property
+    def form_fields(self):
+        if self.context.is_postgrad:
+            form_fields = grok.AutoFields(
+                ICustomPGStudentClearance).omit('clearance_locked')
+        else:
+            form_fields = grok.AutoFields(
+                ICustomUGStudentClearance).omit('clearance_locked')
+        if not getattr(self.context, 'officer_comment'):
+            form_fields = form_fields.omit('officer_comment')
+        return form_fields
+
+    @property
+    def label(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+
+        line0 = ''
+        if self.context.student.current_mode.startswith('ug'):
+            line0 = 'Directorate of Undergraduate Programme\n'
+        line1 = translate(_('Clearance Slip of'),
+            'waeup.kofa', target_language=portal_language) \
+            + ' %s' % self.context.display_fullname
+        return '%s%s' % (line0, line1)
+
+
 class CustomStudentClearanceEditFormPage(NigeriaStudentClearanceEditFormPage):
     """ View to edit student clearance data by student
Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/interfaces.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/interfaces.py	(revision 10018)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/interfaces.py	(revision 10019)
@@ -18,4 +18,10 @@
 
 from zope import schema
+from waeup.kofa.schema import FormattedDate, PhoneNumber
+from waeup.kofa.students.interfaces import IUGStudentClearance
+from waeup.kofa.students.vocabularies import nats_vocab
+from waeup.kofa.schoolgrades import ResultEntryField
+from kofacustom.nigeria.interfaces import (
+    high_qual, high_grade, exam_types, LGASource)
 from kofacustom.nigeria.students.interfaces import (
     INigeriaStudentBase, INigeriaUGStudentClearance, INigeriaPGStudentClearance,
@@ -37,8 +43,188 @@
     """
 
-class ICustomUGStudentClearance(INigeriaUGStudentClearance):
+class ICustomUGStudentClearance(IUGStudentClearance):
     """Representation of ug student clearance data.
 
-    """
+    Completely customized for FCE Okene.
+
+    """
+
+    officer_comment = schema.Text(
+        title = _(u"Officer's Comment"),
+        required = False,
+        )
+
+    clearance_locked = schema.Bool(
+        title = _(u'Clearance form locked'),
+        default = False,
+        required = False,
+        )
+
+    clr_code = schema.TextLine(
+        title = _(u'CLR Activation Code'),
+        required = False,
+        readonly = False,
+        )
+
+    date_of_birth = FormattedDate(
+        title = _(u'Date of Birth'),
+        required = False,
+        show_year = True,
+        )
+
+    nationality = schema.Choice(
+        source = nats_vocab,
+        title = _(u'Nationality'),
+        required = True,
+        )
+
+    lga = schema.Choice(
+        source = LGASource(),
+        title = _(u'State/LGA (Nigerians only)'),
+        required = False,
+        )
+
+    def_adm = schema.Bool(
+        title = _(u'Deferent of Admission'),
+        required = False,
+        readonly = False,
+        )
+
+    fst_sit_fname = schema.TextLine(
+        title = _(u'Full Name'),
+        required = False,
+        readonly = False,
+        )
+    fst_sit_no = schema.TextLine(
+        title = _(u'Exam Number'),
+        required = False,
+        readonly = False,
+        )
+
+    fst_sit_date = FormattedDate(
+        title = _(u'Exam Date'),
+        required = False,
+        readonly = False,
+        show_year = True,
+        )
+
+    fst_sit_type = schema.Choice(
+        title = _(u'Exam Type'),
+        required = False,
+        readonly = False,
+        vocabulary = exam_types,
+        )
+
+    fst_sit_results = schema.List(
+        title = _(u'Exam Results'),
+        value_type = ResultEntryField(),
+        required = False,
+        readonly = False,
+        default = [],
+        )
+
+    scd_sit_fname = schema.TextLine(
+        title = _(u'Full Name'),
+        required = False,
+        readonly = False,
+        )
+    scd_sit_no = schema.TextLine(
+        title = _(u'Exam Number'),
+        required = False,
+        readonly = False,
+        )
+
+    scd_sit_date = FormattedDate(
+        title = _(u'Exam Date'),
+        required = False,
+        readonly = False,
+        show_year = True,
+        )
+
+    scd_sit_type = schema.Choice(
+        title = _(u'Exam Type'),
+        required = False,
+        readonly = False,
+        vocabulary = exam_types,
+        )
+
+    scd_sit_results = schema.List(
+        title = _(u'Exam Results'),
+        value_type = ResultEntryField(),
+        required = False,
+        readonly = False,
+        default = [],
+        )
+
+    #alr_fname = schema.TextLine(
+    #    title = _(u'Full Name'),
+    #    required = False,
+    #    readonly = False,
+    #    )
+
+    #alr_no = schema.TextLine(
+    #    title = _(u'Exam Number'),
+    #    required = False,
+    #    readonly = False,
+    #    )
+
+    #alr_date = FormattedDate(
+    #    title = _(u'Exam Date'),
+    #    required = False,
+    #    readonly = False,
+    #    show_year = True,
+    #    )
+
+    #alr_results = schema.List(
+    #    title = _(u'Exam Results'),
+    #    value_type = ResultEntryField(),
+    #    required = False,
+    #    readonly = False,
+    #    default = [],
+    #    )
+
+    hq_type = schema.Choice(
+        title = _(u'Qualification Obtained'),
+        required = False,
+        readonly = False,
+        vocabulary = high_qual,
+        )
+
+    hq_fname = schema.TextLine(
+        title = _(u'Full Name'),
+        required = False,
+        readonly = False,
+        )
+
+    hq_matric_no = schema.TextLine(
+        title = _(u'Former Matric Number'),
+        required = False,
+        readonly = False,
+        )
+
+    #hq_degree = schema.Choice(
+    #    title = _(u'Class of Degree'),
+    #    required = False,
+    #    readonly = False,
+    #    vocabulary = high_grade,
+    #    )
+
+    hq_school = schema.TextLine(
+        title = _(u'Institution Attended'),
+        required = False,
+        readonly = False,
+        )
+
+    hq_session = schema.TextLine(
+        title = _(u'Years Attended'),
+        required = False,
+        readonly = False,
+        )
+
+    hq_disc = schema.TextLine(
+        title = _(u'Course Combination'),
+        required = False,
+        readonly = False,
+        )
 
 class ICustomPGStudentClearance(INigeriaPGStudentClearance):
Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py	(revision 10018)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py	(revision 10019)
@@ -343,5 +343,5 @@
 
     def test_open_slips(self):
-        # Managers can add online clearance slip
+        # Managers can open clearance slip
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
         self.browser.open(self.student_path + '/view_clearance')
Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py	(revision 10018)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py	(revision 10019)
@@ -330,4 +330,15 @@
         return _('(see payment slip)')
 
+    SEPARATORS_DICT = {
+        'form.fst_sit_fname': _(u'First Sitting Record'),
+        'form.scd_sit_fname': _(u'Second Sitting Record'),
+        #'form.alr_fname': _(u'Advanced Level Record'),
+        'form.hq_type': _(u'Advanced Level Record'),
+        'form.hq2_type': _(u'Second Higher Education Record'),
+        'form.nysc_year': _(u'NYSC Information'),
+        'form.employer': _(u'Employment History'),
+        'form.former_matric': _(u'Former Student'),
+        }
+
     # FCEOkene prefix
     STUDENT_ID_PREFIX = u'K'
