Index: /WAeUP_SRP/base/WAeUPTool.py
===================================================================
--- /WAeUP_SRP/base/WAeUPTool.py	(revision 2655)
+++ /WAeUP_SRP/base/WAeUPTool.py	(revision 2656)
@@ -312,5 +312,5 @@
         log_after = 100
         for student in res:
-            if not count % log_after: 
+            if not count % log_after:
                 logger.info("processed %d total %d" % (log_after,count))
             count += 1
@@ -357,5 +357,5 @@
         csv_writer.writerows(l)
     ###)
-    
+
     security.declareProtected(ManagePortal, 'removeDeletedDocIds') ###(
     def removeDeletedDocIds(self, max=1000):
@@ -630,6 +630,6 @@
         else:
             logger.info('matric_no %s not found in results_import' % student.matric_no)
-            level = 0
-            verdict = 'N/A'
+            level = ''
+            verdict = ''
         #student should not be allowed to perform this transition
         #wftool = self.portal_workflow
@@ -838,5 +838,5 @@
                                                              brain.reg_no,
                                                              app_picture))
-            
+
         return student_id
     ###)
Index: /WAeUP_SRP/base/Widgets.py
===================================================================
--- /WAeUP_SRP/base/Widgets.py	(revision 2655)
+++ /WAeUP_SRP/base/Widgets.py	(revision 2656)
@@ -254,10 +254,10 @@
 
 class WAeUPSessionWidget(CPSSelectWidget): ###(
-    """WAeUP Session Widget."""
+    """WAeUP Session Widget for import only"""
     meta_type = 'WAeUP Session Widget'
 
     def _getSessions(self):
         current_year = DateTime().year()
-        d = {'-1': 'N/A'}
+        d = {'': ''}
         for y in range(current_year - 9,current_year + 1):
             d['%s' % str(y)[-2:]] = '%4d/%4d' % (y,y+1)
@@ -293,4 +293,5 @@
         return 1
 
+    # rendering is not used, instead we use a select widget with dynamic vocabulary
     def render(self, mode, datastructure, **kw):
         """Render in mode from datastructure."""
Index: /WAeUP_SRP/base/skins/waeup_accommodation/getAccommodationInfo.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_accommodation/getAccommodationInfo.py	(revision 2655)
+++ /WAeUP_SRP/base/skins/waeup_accommodation/getAccommodationInfo.py	(revision 2656)
@@ -64,5 +64,5 @@
 info['email']=s_brain.email
 info['level']=s_brain.level
-info['verdict']=getattr(s_brain,"verdict","N/A")
+info['verdict']=getattr(s_brain,'verdict','')
 
 
@@ -90,5 +90,5 @@
     info['acco'] = None
     return info
-info['session'] = session = context.getSessionId()  
+info['session'] = session = context.getSessionId()
 acco_id = 'accommodation_' + session[0]
 acco = getattr(student,acco_id,None)
Index: /WAeUP_SRP/base/skins/waeup_epayment/approve_epayment.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_epayment/approve_epayment.py	(revision 2655)
+++ /WAeUP_SRP/base/skins/waeup_epayment/approve_epayment.py	(revision 2656)
@@ -30,4 +30,14 @@
 student = getattr(students,student_id)
 
+s_brain = context.students_catalog(id=student_id)[0]
+session = s_brain.session
+
+next_info = context.getNextInfo(s_brain)
+next_session_id = next_info['next_session_id']
+next_session_str = next_info['next_session_str']
+next_level_id = next_info['next_level_id']
+next_transition = next_info['next_transition']
+next_verdict = next_info['next_verdict']
+
 pd = {}
 #from Products.zdb import set_trace;set_trace()
@@ -39,6 +49,22 @@
 pd['resp_desc'] = 'Payment approved by %s, %s' % (member,DateTime.DateTime())
 doc.edit(mapping=pd)
+
 if doc.type_description.startswith('School Fee'):
-    wftool.doActionFor(student,'pay_school_fee')
+    study_course = getattr(student,'study_course')
+    try:
+        wftool.doActionFor(study_course,'open')
+    except:
+        pass
+    verdict = s_brain.verdict
+    if verdict == 'N/A':
+        verdict = ''
+    study_course.getContent().edit(mapping= {'current_level': next_level_id,
+                                             'current_session': next_session_id,
+                                             'current_verdict': next_verdict,
+                                             'previous_verdict': verdict,
+                                             })
+    if next_transition:
+        wftool.doActionFor(student,next_transition)
+
 logger.info('%s approves epayment for %s' % (member,student_id))
 wftool.doActionFor(context,'close')
Index: /WAeUP_SRP/base/skins/waeup_student/getNextInfo.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/getNextInfo.py	(revision 2655)
+++ /WAeUP_SRP/base/skins/waeup_student/getNextInfo.py	(revision 2656)
@@ -42,5 +42,4 @@
     info['next_session_id'] = next_session_id = "%02d" % (int(session_id)+1)
     if int(session_id) > 4:
-        info['next_transition'] = "pay_school_fee"
         info['next_verdict'] = ''
         if verdict in ('A','B',):
@@ -48,4 +47,6 @@
         else:
             info['next_level_id'] = level_id
+        if int(session_id) > int(context.getSessionId()[0]) -2:
+            info['next_transition'] = "pay_school_fee"
     else:
         info['next_level_id'] = "%s" % (int(level_id) + 100)
