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 10011)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py	(revision 10012)
@@ -96,5 +96,5 @@
         self.browser.getControl(name="form.p_category").value = ['schoolfee']
         self.browser.getControl("Create ticket").click()
-        self.assertMatches('...Amount could not be determined...',
+        self.assertMatches('...Wrong state...',
                            self.browser.contents)
         IWorkflowState(self.student).setState('cleared')
@@ -184,5 +184,5 @@
         self.browser.getControl(name="form.p_category").value = ['schoolfee']
         self.browser.getControl("Create ticket").click()
-        self.assertMatches('...Amount could not be determined...',
+        self.assertMatches('...Wrong state...',
                            self.browser.contents)
 
@@ -223,7 +223,8 @@
         error, payment = utils.setPaymentDetails('schoolfee',self.student)
         self.assertEqual(payment, None)
-        self.assertEqual(error, u'Amount could not be determined.')
+        self.assertEqual(error, u'Wrong state.')
 
         IWorkflowState(self.student).setState('cleared')
+        self.certificate.study_mode = 'nce_ft'
         error, payment = utils.setPaymentDetails('schoolfee',self.student)
         self.assertEqual(payment.p_level, 100)
@@ -244,4 +245,10 @@
         self.assertEqual(payment.amount_auth, 11545.0)
         self.assertEqual(payment.p_item, u'CERT1')
+        self.assertEqual(error, None)
+
+        # UG students pay 65150
+        self.certificate.study_mode = 'ug_ft'
+        error, payment = utils.setPaymentDetails('schoolfee',self.student)
+        self.assertEqual(payment.amount_auth, 65150.0)
         self.assertEqual(error, None)
 
Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py	(revision 10011)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/utils.py	(revision 10012)
@@ -122,8 +122,14 @@
                     'NFRE','NARB','NHAU','NIGB','NYOR','NSOS')
 
+            if student.state not in (CLEARED, RETURNING):
+                return _('Wrong state.'), None
+
             #PDE
             if student.current_mode == 'pd_ft':
                 amount = 35000
-            # NCE/UG
+            # UG
+            elif student.current_mode == 'ug_ft':
+                amount = 65150
+            # NCE
             elif not student.current_mode.endswith('_sw'):
                 # PRENCE
@@ -133,5 +139,5 @@
                     else:
                         amount = 15400
-                # NCE/UG I fresh
+                # NCE I fresh
                 elif student.current_level == 100 and student.state == CLEARED:
                     if student.depcode in ARTS:
@@ -139,5 +145,5 @@
                     else:
                         amount = 12495
-                # NCE/UG II
+                # NCE II
                 elif student.current_level in (100, 110, 120) and \
                     student.state == RETURNING:
@@ -146,5 +152,5 @@
                     else:
                         amount = 11545
-                # NCE/UG III
+                # NCE III
                 elif student.current_level in (200, 210, 220):
                     if student.depcode in ARTS:
@@ -152,5 +158,5 @@
                     else:
                         amount = 11545
-                # NCE/UG III repeater
+                # NCE III repeater
                 elif student.current_level in (300, 310, 320) and \
                     student.current_verdict == 'O':
@@ -159,5 +165,5 @@
                     else:
                         amount = 6773
-                # NCE/UG III spillover
+                # NCE III spillover
                 elif student.current_level in (300, 310, 320) and \
                     student.current_verdict == 'B':
@@ -166,5 +172,5 @@
                     else:
                         amount = 9645
-                # NCE/UG III second spillover
+                # NCE III second spillover
                 elif student.current_level in (400, 410, 420) and \
                     student.current_verdict == 'B':
@@ -179,5 +185,5 @@
                     else:
                         amount = 22400
-                # NCE/UG II sw
+                # NCE II sw
                 elif student.current_level in (100, 110, 120) and \
                     student.state == RETURNING:
@@ -186,5 +192,5 @@
                     else:
                         amount = 18900
-                # NCE/UG III sw
+                # NCE III sw
                 elif student.current_level in (200, 210, 220):
                     if student.depcode in ARTS:
@@ -192,5 +198,5 @@
                     else:
                         amount = 20900
-                # NCE/UG IV sw
+                # NCE IV sw
                 elif student.current_level in (300, 310, 320):
                     if student.depcode in ARTS:
@@ -198,5 +204,5 @@
                     else:
                         amount = 18900
-                # NCE/UG V sw
+                # NCE V sw
                 elif student.current_level in (400, 410, 420):
                     if student.depcode in ARTS:
@@ -204,5 +210,5 @@
                     else:
                         amount = 18900
-                # NCE/UG V spillover sw
+                # NCE V spillover sw
                 elif student.current_level in (500, 510, 520) and \
                     student.current_verdict == 'B':
@@ -211,5 +217,5 @@
                     else:
                         amount = 17400
-                # NCE/UG V second spillover sw
+                # NCE V second spillover sw
                 elif student.current_level in (600, 610, 620) and \
                     student.current_verdict == 'B':
