Index: main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py	(revision 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py	(revision 9905)
@@ -50,9 +50,9 @@
         # Managers can add online payment tickets
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
-        self.app['configuration']['2004'].school_fee_base = 1234.0
+        self.app['configuration']['2004'].school_fee = 1234.0
         self.browser.open(self.payments_path)
         IWorkflowState(self.student).setState('cleared')
         self.browser.open(self.payments_path + '/addop')
-        self.browser.getControl(name="form.p_category").value = ['schoolfee_1']
+        self.browser.getControl(name="form.p_category").value = ['schoolfee']
         self.browser.getControl("Create ticket").click()
         self.assertMatches('...ticket created...',
@@ -81,5 +81,5 @@
             'RETURN_TYPE=%s&'
             'PROGRAMME_TYPE=CERT1&'
-            'PAYMENT_TYPE=School Fee 1st instalment&'
+            'PAYMENT_TYPE=School Fee&'
             'ACADEMIC_SESSION=2004/2005&'
             'MATRIC_NO=E1000000&'
Index: main/waeup.aaue/trunk/src/waeup/aaue/interfaces.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/interfaces.py	(revision 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/interfaces.py	(revision 9905)
@@ -32,6 +32,12 @@
     # Base fees, do not remove.
 
-    school_fee_base = schema.Float(
-        title = _(u'School Fee Instalments'),
+    #school_fee_base = schema.Float(
+    #    title = _(u'School Fee Instalments'),
+    #    default = 0.0,
+    #    required = False,
+    #    )
+
+    school_fee = schema.Float(
+        title = _(u'School Fee'),
         default = 0.0,
         required = False,
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py	(revision 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/browser.py	(revision 9905)
@@ -26,5 +26,5 @@
 
 from waeup.aaue.students.interfaces import (
-    ICustomStudentOnlinePayment, ICustomCourseTicketAdd)
+    ICustomStudentOnlinePayment)
 
 class CustomOnlinePaymentDisplayFormPage(NigeriaOnlinePaymentDisplayFormPage):
@@ -53,9 +53,2 @@
     form_fields['creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
     form_fields['payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
-
-class CourseTicketAddFormPage2(CourseTicketAddFormPage):
-    """Add a course ticket by student.
-    """
-    grok.name('ctadd')
-    grok.require('waeup.handleStudent')
-    form_fields = grok.AutoFields(ICustomCourseTicketAdd)
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/interfaces.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/interfaces.py	(revision 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/interfaces.py	(revision 9905)
@@ -30,29 +30,4 @@
 from waeup.aaue.payments.interfaces import ICustomOnlinePayment
 from waeup.aaue.interfaces import MessageFactory as _
-
-class CourseSource(BasicContextualSourceFactory):
-    """A course source delivers all courses inside the portal by looking
-       up a catalog.
-    """
-    def getValues(self, context):
-        catalog = getUtility(ICatalog, name='courses_catalog')
-        courses = sorted(list(catalog.searchResults(
-            code=(None, None))),key=lambda value: value.code)
-        payments = context.student.getPaymentTuples()
-        if (context.student.current_session, 'schoolfee_2', 'paid') in payments:
-            pass
-        else:
-            courseslist = list(courses)
-            for course in courseslist:
-                if course.semester == 2:
-                    courses.remove(course)
-        return courses
-
-    def getToken(self, context, value):
-        return value.code
-
-    def getTitle(self, context, value):
-        return "%s - %s (%d)" % (
-            value.code, value.title[:64], value.semester)
 
 class ICustomStudentBase(INigeriaStudentBase):
@@ -119,14 +94,4 @@
     """
 
-class ICustomCourseTicketAdd(IKofaObject):
-    """An interface for adding course tickets.
-
-    """
-    course = schema.Choice(
-        title = _(u'Course'),
-        source = CourseSource(),
-        readonly = False,
-        )
-
 class ICustomStudentUpdateByRegNo(INigeriaStudentUpdateByRegNo):
     """Representation of a student. Skip regular reg_number validation.
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/student.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/student.py	(revision 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/student.py	(revision 9905)
@@ -35,12 +35,4 @@
     grok.provides(ICustomStudent)
 
-    def getPaymentTuples(self):
-        """Special AAUE method needed for selecting courses in semesters
-        the student has paid for.
-        """
-        payments = [(p.p_session, p.p_category, p.p_state)
-            for p in self['payments'].values()]
-        return payments
-
 # Set all attributes of Student required in IStudent as field
 # properties. Doing this, we do not have to set initial attributes
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/studylevel.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/studylevel.py	(revision 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/studylevel.py	(revision 9905)
@@ -39,26 +39,4 @@
     grok.provides(ICustomStudentStudyLevel)
 
-    def addCertCourseTickets(self, cert):
-        """Collect all certificate courses and create course
-        tickets automatically.
-
-        Add ticket only if student has paid for the course.semester.
-        """
-        payments = self.student.getPaymentTuples()
-        if cert is not None:
-            for key, val in cert.items():
-                if val.level != self.level:
-                    continue
-                if val.course.semester == 2 and \
-                    not (self.student.current_session,
-                    'schoolfee_2', 'paid') in payments:
-                    continue
-                ticket = createObject(u'waeup.CourseTicket')
-                ticket.automatic = True
-                ticket.mandatory = val.mandatory
-                ticket.carry_over = False
-                self.addCourseTicket(ticket, val.course)
-        return
-
 CustomStudentStudyLevel = attrs_to_fields(
     CustomStudentStudyLevel, omit=['total_credits', 'gpa'])
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 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_browser.py	(revision 9905)
@@ -92,5 +92,5 @@
         self.browser.open(self.payments_path)
         self.browser.getLink("Add current session payment ticket").click()
-        self.browser.getControl(name="form.p_category").value = ['schoolfee_1']
+        self.browser.getControl(name="form.p_category").value = ['schoolfee']
         self.browser.getControl("Create ticket").click()
         self.assertMatches('...Wrong state...',
@@ -101,6 +101,6 @@
         self.assertMatches('...Amount could not be determined...',
                            self.browser.contents)
-        self.app['configuration']['2004'].school_fee_base = 6666.0
-        self.browser.getControl(name="form.p_category").value = ['schoolfee_1']
+        self.app['configuration']['2004'].school_fee = 6666.0
+        self.browser.getControl(name="form.p_category").value = ['schoolfee']
         self.browser.getControl("Create ticket").click()
         self.assertMatches('...ticket created...',
@@ -119,5 +119,5 @@
         ticket.p_state = 'paid'
         self.browser.open(self.payments_path + '/addop')
-        self.browser.getControl(name="form.p_category").value = ['schoolfee_1']
+        self.browser.getControl(name="form.p_category").value = ['schoolfee']
         self.browser.getControl("Create ticket").click()
         self.assertMatches('...This type of payment has already been made...',
@@ -151,8 +151,9 @@
         self.assertMatches('...ticket created...',
                            self.browser.contents)
-        # Remove all payments so that we can add a school fee payment again
-        keys = [i for i in self.student['payments'].keys()]
-        for payment in keys:
-            del self.student['payments'][payment]
+
+
+    def deactivated_test_for_instalment_payments(self):
+        self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+        self.browser.open(self.payments_path)
         self.browser.open(self.payments_path + '/addop')
         self.browser.getControl(name="form.p_category").value = ['schoolfee_1']
@@ -194,5 +195,5 @@
         configuration.academic_session = 2005
         self.app['configuration'].addSessionConfiguration(configuration)
-        self.app['configuration']['2005'].school_fee_base = 7777.0
+        self.app['configuration']['2005'].school_base = 7777.0
         self.browser.open(self.payments_path + '/addop')
         self.browser.getControl(name="form.p_category").value = ['schoolfee_1']
@@ -239,5 +240,5 @@
         self.app['configuration']['2004'].maint_fee = 180.0
         self.app['configuration']['2004'].clearance_fee = 1234.0
-        self.app['configuration']['2004'].school_fee_base = 6666.0
+        self.app['configuration']['2004'].school_fee = 6666.0
         utils = getUtility(IStudentsUtils)
 
@@ -245,12 +246,12 @@
         configuration.academic_session = 2005
         self.app['configuration'].addSessionConfiguration(configuration)
-        self.app['configuration']['2005'].school_fee_base = 7777.0
-
-        error, payment = utils.setPaymentDetails('schoolfee_1',self.student)
+        self.app['configuration']['2005'].school_fee = 7777.0
+
+        error, payment = utils.setPaymentDetails('schoolfee',self.student)
         self.assertEqual(payment, None)
         self.assertEqual(error, u'Wrong state.')
 
         IWorkflowState(self.student).setState('cleared')
-        error, payment = utils.setPaymentDetails('schoolfee_1',self.student)
+        error, payment = utils.setPaymentDetails('schoolfee',self.student)
         self.assertEqual(payment.p_level, 100)
         self.assertEqual(payment.p_session, 2004)
@@ -264,8 +265,8 @@
         # ... for returning
         self.app['configuration']['2005'].penalty_ug = 88.0
-        error, payment = utils.setPaymentDetails('schoolfee_1',self.student)
+        error, payment = utils.setPaymentDetails('schoolfee',self.student)
         self.assertEqual(payment.amount_auth, 6765.0)
         IWorkflowState(self.student).setState('returning')
-        error, payment = utils.setPaymentDetails('schoolfee_1',self.student)
+        error, payment = utils.setPaymentDetails('schoolfee',self.student)
         self.assertEqual(payment.p_level, 200)
         self.assertEqual(payment.p_session, 2005)
@@ -313,5 +314,5 @@
         return
 
-    def test_student_course_registration(self):
+    def deactivated_test_student_course_registration(self):
 
         # Add more courses
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 9905)
@@ -67,6 +67,4 @@
             return _(u'Session configuration object is not available.'), None
         # Determine fee.
-        if category == 'schoolfee':
-            return _('School fee has to be paid by two instalments.'), None
         if category == 'transfer':
             amount = academic_session.transfer_fee
@@ -80,5 +78,5 @@
             amount = academic_session.clearance_fee
             p_item = student['studycourse'].certificate.code
-        elif category == 'schoolfee_1':
+        elif category == 'schoolfee':
             try:
                 certificate = student['studycourse'].certificate
@@ -86,8 +84,6 @@
             except (AttributeError, TypeError):
                 return _('Study course data are incomplete.'), None
-            payment_allowed = False
             if student.state == CLEARED:
-                payment_allowed = True
-                amount = academic_session.school_fee_base
+                amount = academic_session.school_fee
             elif student.state == RETURNING or\
                 (student.is_postgrad and student.state == PAID):
@@ -101,17 +97,4 @@
                     # next session but their level always remains the same.
                     p_session += 1
-                initial_instalment_made = False
-                for key in student['payments'].keys():
-                    ticket = student['payments'][key]
-                    if ticket.p_category == 'schoolfee_1' and \
-                        ticket.p_state == 'paid':
-                        initial_instalment_made = True
-                    if ticket.p_state == 'paid' and\
-                        ticket.p_category == 'schoolfee_2' and \
-                        ticket.p_item == p_item and \
-                        ticket.p_session == p_session-1: #  = current session
-                        payment_allowed = True
-                if not initial_instalment_made:
-                    payment_allowed = True
                 try:
                     academic_session = grok.getSite()[
@@ -119,35 +102,13 @@
                 except KeyError:
                     return _(u'Session configuration object is not available.'), None
-                amount = academic_session.school_fee_base
+                amount = academic_session.school_fee
             else:
                 return _('Wrong state.'), None
-            if not payment_allowed:
-                return _('The previous 2nd school fee instalment '
-                         'has not yet been paid.'), None
-        elif category == 'schoolfee_2':
-            try:
-                certificate = student['studycourse'].certificate
-                p_item = certificate.code
-            except (AttributeError, TypeError):
-                return _('Study course data are incomplete.'), None
-            payment_allowed = False
-            for key in student['payments'].keys():
-                ticket = student['payments'][key]
-                if ticket.p_state == 'paid' and\
-                   ticket.p_category == 'schoolfee_1' and \
-                   ticket.p_item == p_item and \
-                   ticket.p_session == p_session:
-                   payment_allowed = True
-            if not payment_allowed:
-                return _('The 1st school fee instalment '
-                         'has not yet been paid or session has '
-                         'not yet been started.'), None
-            amount = academic_session.school_fee_base
         if amount in (0.0, None):
             return _(u'Amount could not be determined.'), None
         # Add session specific penalty fee.
-        if category == 'schoolfee_1' and student.is_postgrad:
+        if category == 'schoolfee' and student.is_postgrad:
             amount += academic_session.penalty_pg
-        elif category == 'schoolfee_1':
+        elif category == 'schoolfee':
             amount += academic_session.penalty_ug
         # Create ticket.
Index: main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py	(revision 9904)
+++ main/waeup.aaue/trunk/src/waeup/aaue/utils/utils.py	(revision 9905)
@@ -40,6 +40,7 @@
 
     SELECTABLE_PAYMENT_CATEGORIES = {
-        'schoolfee_1': 'School Fee 1st instalment',
-        'schoolfee_2': 'School Fee 2nd instalment',
+        'schoolfee': 'School Fee',
+        #'schoolfee_1': 'School Fee 1st instalment',
+        #'schoolfee_2': 'School Fee 2nd instalment',
         'clearance': 'Acceptance Fee',
         'hostel_maintenance': 'Hostel Maintenance Fee',
