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 14244)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py	(revision 14246)
@@ -437,4 +437,42 @@
         print "Sample PDF transcript.pdf written to %s" % path
 
+    def test_payment_disabled(self):
+        self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+        self.browser.open(self.payments_path)
+        IWorkflowState(self.student).setState('cleared')
+        self.browser.getLink("Add current session payment ticket").click()
+        self.browser.getControl(name="form.p_category").value = ['schoolfee_incl']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...ticket created...', self.browser.contents)
+        self.app['configuration']['2004'].payment_disabled = ['sf_all']
+        self.browser.getLink("Add current session payment ticket").click()
+        self.browser.getControl(name="form.p_category").value = ['schoolfee_incl']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...This category of payments has been disabled...',
+                           self.browser.contents)
+
+        self.app['configuration']['2004'].payment_disabled = ['sf_pt']
+        self.browser.getControl(name="form.p_category").value = ['schoolfee_incl']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...ticket created...', self.browser.contents)
+        self.certificate.study_mode = 'ug_pt'
+        self.browser.getLink("Add current session payment ticket").click()
+        self.browser.getControl(name="form.p_category").value = ['schoolfee_incl']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...This category of payments has been disabled...',
+                           self.browser.contents)
+
+        self.app['configuration']['2004'].payment_disabled = ['sf_pg']
+        self.browser.getControl(name="form.p_category").value = ['schoolfee_incl']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...ticket created...', self.browser.contents)
+        self.certificate.study_mode = 'special_pg_ft'
+        self.browser.getLink("Add current session payment ticket").click()
+        self.browser.getControl(name="form.p_category").value = ['schoolfee']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...This category of payments has been disabled...',
+                           self.browser.contents)
+        return
+
 class StudentUITests(StudentsFullSetup):
     """Tests for customized student class views and pages
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 14244)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 14246)
@@ -141,7 +141,16 @@
     def _isPaymentDisabled(self, p_session, category, student):
         academic_session = self._getSessionConfiguration(p_session)
-        if category.startswith('schoolfee') and \
-            'sf_all' in academic_session.payment_disabled:
-            return True
+        if category.startswith('schoolfee'):
+            if 'sf_all' in academic_session.payment_disabled:
+                return True
+            if 'sf_pg' in academic_session.payment_disabled and \
+                student.is_postgrad:
+                return True
+            if 'sf_pt' in academic_session.payment_disabled and \
+                student.current_mode.endswith('_pt'):
+                return True
+            if 'sf_found' in academic_session.payment_disabled and \
+                student.current_mode == 'found':
+                return True
         if category.startswith('clearance') and \
             'cl_regular' in academic_session.payment_disabled and \
@@ -314,5 +323,5 @@
             if student.is_postgrad:
                 amount += academic_session.penalty_pg
-                if not student.lga.startswith('edo'):
+                if student.lga and not student.lga.startswith('edo'):
                     amount += 20000.0
             else:
Index: main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py	(revision 14244)
+++ main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py	(revision 14246)
@@ -154,4 +154,7 @@
     DISABLE_PAYMENT_GROUP_DICT = {
         'sf_all': 'School Fee - All Students',
+        'sf_pg': 'School Fee - Postgraduate Students',
+        'sf_pt': 'School Fee - Part-Time Students',
+        'sf_found': 'School Fee - Foundation Students',
         'maint_all': 'Accommodation Fee - All Students',
         'cl_regular': 'Acceptance Fee - Regular Students',
