Index: /WAeUP_SRP/base/skins/waeup_epayment/getNextInfo.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_epayment/getNextInfo.py	(revision 2758)
+++ /WAeUP_SRP/base/skins/waeup_epayment/getNextInfo.py	(revision 2758)
@@ -0,0 +1,62 @@
+## Script (Python) "getNextInfo"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=student_brain
+##title=
+##
+# $Id: getNextInfo.py 2678 2007-11-16 13:41:44Z henrik $
+"""
+return the students next info
+"""
+try:
+    from Products.zdb import set_trace
+except:
+    def set_trace():
+        pass
+
+info = {}
+
+reasons = ''
+
+session_id = student_brain.session
+level_id = student_brain.level
+review_state = student_brain.review_state
+verdict = student_brain.verdict
+
+has_verdict = verdict and verdict != 'N/A'
+has_session = session_id and session_id != 'N/A'
+has_level = level_id and level_id != 'N/A'
+
+info['next_transition'] = None
+info['next_session_id'] = next_session_id = session_id
+info['next_level_id'] = next_level_id = level_id
+info['next_verdict'] = verdict
+info['next_previous_verdict'] = ''
+verdicts_voc = context.portal_vocabularies.verdicts
+if review_state == 'cleared_and_validated':
+    info['next_transition'] = "pay_school_fee"
+    info['next_verdict'] = ''
+elif review_state == 'returning' and has_verdict and has_level and has_session:
+    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'] = ''
+        info['next_previous_verdict'] = verdict
+        if verdict in ('A','B',):
+            info['next_level_id'] = "%s" % (int(level_id) + 100)
+        elif verdict == 'C':
+            info['next_level_id'] = "%s" % (int(level_id) + 10)
+        else:
+            info['next_level_id'] = level_id
+    else:
+        info['next_level_id'] = "%s" % (int(level_id) + 100)
+elif review_state == 'returning' and not (has_session and has_level and has_verdict):
+    reasons = "Your data record is incomplete. School fee payment has been disabled, please contact your faculty!"
+
+info['reasons'] = reasons
+info['next_session_str'] = context.getSessionsVoc(next_session_id)
+
+return info
Index: /WAeUP_SRP/base/skins/waeup_epayment/getPaymentsFolderInfo.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_epayment/getPaymentsFolderInfo.py	(revision 2757)
+++ /WAeUP_SRP/base/skins/waeup_epayment/getPaymentsFolderInfo.py	(revision 2758)
@@ -1,3 +1,3 @@
-## Script (Python) "getPaymentsFolderInfo"
+z## Script (Python) "getPaymentsFolderInfo"
 ##bind container=container
 ##bind context=context
@@ -109,5 +109,5 @@
         row['confirmed'] = 'unsuccessful'
     row['is_editable'] = is_so and (row['confirmed'] == 'active')
-        
+
     payments.append(row)
 
Index: /WAeUP_SRP/base/skins/waeup_layout/portlet_student_workflow_display.pt
===================================================================
--- /WAeUP_SRP/base/skins/waeup_layout/portlet_student_workflow_display.pt	(revision 2757)
+++ /WAeUP_SRP/base/skins/waeup_layout/portlet_student_workflow_display.pt	(revision 2758)
@@ -77,7 +77,7 @@
   <span tal:condition="python:info['review_state']=='returning'">
   <tr><td class="active">
-    <a href="" tal:attributes="href string:${info/url}/session_results_view">
+    
     Returning
-    </a>
+
   </td></tr>
   </span>
Index: /WAeUP_SRP/base/skins/waeup_student/create_level.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/create_level.py	(revision 2757)
+++ /WAeUP_SRP/base/skins/waeup_student/create_level.py	(revision 2758)
@@ -117,5 +117,6 @@
     cert = res[0]
     path = cert.getPath()
-    query = Eq("path","%s/%s" % (path,current_level)) &\
+    academics_level = 100 * (int(current_level)/100)
+    query = Eq("path","%s/%s" % (path,academics_level)) &\
             Eq('portal_type','CertificateCourse')
     courses = aq_portal(query)
Index: eUP_SRP/base/skins/waeup_student/getNextInfo.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/getNextInfo.py	(revision 2757)
+++ 	(revision )
@@ -1,60 +1,0 @@
-## Script (Python) "getNextInfo"
-##bind container=container
-##bind context=context
-##bind namespace=
-##bind script=script
-##bind subpath=traverse_subpath
-##parameters=student_brain
-##title=
-##
-# $Id$
-"""
-return the students next info
-"""
-try:
-    from Products.zdb import set_trace
-except:
-    def set_trace():
-        pass
-
-info = {}
-
-reasons = ''
-
-session_id = student_brain.session
-level_id = student_brain.level
-review_state = student_brain.review_state
-verdict = student_brain.verdict
-
-has_verdict = verdict and verdict != 'N/A'
-has_session = session_id and session_id != 'N/A'
-has_level = level_id and level_id != 'N/A'
-
-info['next_transition'] = None
-info['next_session_id'] = next_session_id = session_id
-info['next_level_id'] = next_level_id = level_id
-info['next_verdict'] = verdict
-info['next_previous_verdict'] = ''
-verdicts_voc = context.portal_vocabularies.verdicts
-if review_state == 'cleared_and_validated':
-    info['next_transition'] = "pay_school_fee"
-    info['next_verdict'] = ''
-elif review_state == 'returning' and has_verdict and has_level and has_session:
-    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'] = ''
-        info['next_previous_verdict'] = verdict
-        if verdict in ('A','B',):
-            info['next_level_id'] = "%s" % (int(level_id) + 100)
-        else:
-            info['next_level_id'] = level_id
-    else:
-        info['next_level_id'] = "%s" % (int(level_id) + 100)
-elif review_state == 'returning' and not (has_session and has_level and has_verdict):
-    reasons = "Your data record is incomplete. School fee payment has been disabled, please contact your faculty!"
-
-info['reasons'] = reasons
-info['next_session_str'] = context.getSessionsVoc(next_session_id)
-
-return info
Index: /WAeUP_SRP/base/skins/waeup_student/getStudyLevelInfo.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/getStudyLevelInfo.py	(revision 2757)
+++ /WAeUP_SRP/base/skins/waeup_student/getStudyLevelInfo.py	(revision 2758)
@@ -38,8 +38,9 @@
 logger = logging.getLogger('Skins.getStudyLevelInfo')
 
+info = {}
+
 student_id = context.getStudentId()
-level_id = context.getId()
+level_id  =  context.getId()
 
-info = {}
 info['is_so'] = is_so = context.isSectionOfficer()
 info['is_student'] = is_student = context.isStudent()
@@ -49,12 +50,14 @@
 info['view_only'] =  review_state != "school_fee_paid"
 
+level_doc = info['doc'] = context.getContent()
 
 school_fee_paid =  review_state == 'school_fee_paid'
-
 is_current_level = level_id == student.level
 
-info['show_check_boxes'] =  (is_ca and school_fee_paid and is_current_level) or\
-                            (is_student and school_fee_paid and is_current_level) or\
-                            (is_so and is_current_level)
+
+
+info['show_check_boxes'] =  (is_ca and school_fee_paid and is_current_level and not level_doc.verdict) or\
+                            (is_student and school_fee_paid and is_current_level and not level_doc.verdict) or\
+                            (is_so and is_current_level and not level_doc.verdict)
 
 info['is_current_level'] = is_current_level
@@ -72,5 +75,5 @@
     elif review_state == 'courses_validated':
         info['status_info'] = "Courses validated"
-level_doc = info['doc'] = context.getContent()
+
 cert_id = student.course
 info['cert_id'] = cert_id
@@ -90,11 +93,13 @@
 if gpa and total_credits:
     info['gpa'] = "%4.2f" % (float(gpa)/int(total_credits))
-    
-info['submission_allowed']= school_fee_paid and level_id == student.level
+
+info['submission_allowed']= school_fee_paid and level_id == student.level and not level_doc.verdict
 info['validation_allowed']= review_state == 'courses_registered' and is_current_level
 info['rejection_allowed']= review_state in ('courses_registered', 'courses_validated',) and is_current_level
 
-info['verdict'] = context.portal_vocabularies.verdicts.get(level_doc.verdict)
+info['verdict'] = context.portal_vocabularies.verdicts.get(level_doc.verdict).upper()
 info['session'] = context.portal_vocabularies.sessions.get(level_doc.session)
+info['level_str'] = context.portal_vocabularies.levels.get(level_id)
+
 
 # carry_overs.sort(cmp_semester_id)
Index: /WAeUP_SRP/base/skins/waeup_student/new_session_results_slip.pt
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/new_session_results_slip.pt	(revision 2758)
+++ /WAeUP_SRP/base/skins/waeup_student/new_session_results_slip.pt	(revision 2758)
@@ -0,0 +1,118 @@
+<metal:body use-macro="here/slip_template/macros/master">
+    <metal:main fill-slot="main"
+                tal:define="info context/getStudyLevelInfo">
+    <span tal:condition="not: info">
+      <span tal:content="here/illegal_view" />
+    </span>
+    <span tal:condition="info" tal:omit-tag="">
+      <h3>Session Results of <span tal:content="info/student/name" />
+      </h3>
+      <br />
+      <table>
+        <tr>
+          <th width="180px">Student ID:</th>
+          <td> 
+            <span tal:replace="info/student/id" />
+          </td>      
+        </tr>      
+     
+        <tr>
+          <th width="150px">Matriculation Number:</th><td tal:content="info/student/matric_no" />                     
+        </tr>
+        <tr>
+          <th>Level:</th><td tal:content="info/level_str" />                     
+        </tr>
+        <tr>
+          <th width="180px">Verdict:</th><td tal:content="info/verdict" /> 
+        </tr>
+        <tr>  
+          <th>Session:</th><td tal:content="info/session" /> 
+        </tr>
+        <tr>  
+          <th valign="top">GPA:</th><td> <span tal:content="info/gpa" /> (on the basis of the data below)  </td> 
+        </tr>                    
+       </table>
+
+      <span tal:condition="info/carry_overs" tal:omit-tag="">
+      <h3>Carryover Courses</h3>
+      <br />
+      <table tal:condition="python: 1" class="contentListing" width="100%" summary="content layout" id="folder_content">
+        <tr tal:repeat="row info/carry_overs"
+            tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+      
+          <td width="78%" tal:content="row/title"></td>
+          <td align="center" width="10%" tal:content="row/code"></td>
+          <td align="center" width="2%"><span tal:content="row/semester" /></td>
+          <td align="center" width="2%" tal:content="row/credits"></td>
+          <td align="center" width="4%" tal:content="row/score"></td>
+          <td align="center" width="2%" tal:content="row/grade"></td>
+          <td align="center" width="2%" tal:content="row/weight"></td>
+    
+        </tr>
+      </table>
+      </span> 
+
+      <span tal:condition="not:info/data_missing" tal:omit-tag=""> 
+      <h3>Session Courses</h3>
+      <br />
+
+      <table class="contentListing" width="100%" id="folder_content">
+        
+        <span tal:repeat="sem python:('1','2')">       
+                    
+        <tr>
+        <th tal:attributes="colspan python: 1" 
+            tal:content="python: test(sem == '1','First Semester', 'Second Semester')" />
+        <th align='center'></th> 
+        <th align='center'>sm</th>
+        <th align='center'>cr</th>
+        <th align='center'>sc</th>
+        <th align='center'>gr</th>
+        <th align='center'>wt</th>
+            
+        </tr>                
+        <tr tal:repeat="row python: test(sem == '1',info['normal1'],info['normal2'])"
+            tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+
+          <td width="78%" tal:content="row/title"></td>
+          <td align="center" width="10%" tal:content="row/code"></td>
+          <td align="center" width="2%"><span tal:content="row/semester" /></td>
+          <td align="center" width="2%" tal:content="row/credits"></td>
+          <td align="center" width="4%" tal:content="row/score"></td>
+          <td align="center" width="2%" tal:content="row/grade"></td>
+          <td align="center" width="2%" tal:content="row/weight"></td>
+        </tr>
+
+        </span>        
+        
+        <tr><th colspan="3" tal:condition="info/normal3"> Combined</th></tr>                
+        <tr tal:condition="info/normal3" tal:repeat="row info/normal3"
+            tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
+
+          <td width="78%" tal:content="row/title"></td>
+          <td align="center" width="10%" tal:content="row/code"></td>
+          <td align="center" width="2%"><span tal:content="row/semester" /></td>
+          <td align="center" width="2%" tal:content="row/credits"></td>
+          <td align="center" width="4%" tal:content="row/score"></td>
+          <td align="center" width="2%" tal:content="row/grade"></td>
+          <td align="center" width="2%" tal:content="row/weight"></td>
+          
+       
+        </tr>        
+        
+      </table>
+      </span>
+      
+      <br />
+      <table>
+      <tr><th>sm:</th> <td>Semester</td></tr>
+      <tr><th>cr:</th> <td>Credits</td></tr>
+      <tr><th>sc:</th> <td>Score</td></tr>
+      <tr><th>gr: </th> <td>Grade</td></tr>
+      <tr><th>wt: </th> <td>Weight</td></tr>
+      </table>      
+                     
+    </span>
+    </metal:main>
+</metal:body>
+
Index: /WAeUP_SRP/base/skins/waeup_student/refresh_level.py
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/refresh_level.py	(revision 2757)
+++ /WAeUP_SRP/base/skins/waeup_student/refresh_level.py	(revision 2758)
@@ -47,5 +47,5 @@
 res = context.portal_catalog(portal_type="Certificate", id = cert_id)
 query = Eq('student_id',student_id) & Eq('level_id', level_id)
-existing_courses = [course.code for course in 
+existing_courses = [course.code for course in
                     context.course_results.evalAdvancedQuery(query)]
 l = []
@@ -54,5 +54,6 @@
     cert = res[0]
     path = cert.getPath()
-    query = Eq("path","%s/%s" % (path,student.level)) &\
+    academics_level = 100 * (int(student.level)/100)
+    query = Eq("path","%s/%s" % (path,academics_level)) &\
             Eq('portal_type','CertificateCourse')
     courses = aq_portal(query)
@@ -67,6 +68,6 @@
         d['core_or_elective'] = getattr(c.getObject().getContent(),'core_or_elective')
         d['course_id'] = course_id
-        d['student_id'] = student_id 
-        d['level_id'] = level_id 
+        d['student_id'] = student_id
+        d['level_id'] = level_id
         d['key'] = "%s|%s|%s" % (student_id,level_id,course_id)
         records.append(d)
Index: /WAeUP_SRP/base/skins/waeup_student/study_level_view.pt
===================================================================
--- /WAeUP_SRP/base/skins/waeup_student/study_level_view.pt	(revision 2757)
+++ /WAeUP_SRP/base/skins/waeup_student/study_level_view.pt	(revision 2758)
@@ -17,5 +17,5 @@
                        view_only info/view_only">       
     <div style="text-align: right" 
-         tal:condition="python:review_state in ('courses_registered','courses_validated',)">
+         tal:condition="python:review_state in ('courses_registered','courses_validated',) and is_current_level">
     <a href="" target="slip" tal:attributes="href string:course_registration_slip"
         onclick="javascript:window.open('','slip','width=600, height=700, directories=no, toolbar=no, location=no, menubar=yes, scrollbars=yes, status=no, resizable=no, dependent=no')">
@@ -24,4 +24,13 @@
     </a>
     </div>
+    
+    <div style="text-align: right" 
+         tal:condition="info/verdict">
+    <a href="" target="slip" tal:attributes="href string:new_session_results_slip"
+        onclick="javascript:window.open('','slip','width=600, height=700, directories=no, toolbar=no, location=no, menubar=yes, scrollbars=yes, status=no, resizable=no, dependent=no')">
+        <img tal:attributes="src string:${here/portal_url}/actionicon_print.png" />
+        Session Results Slip
+    </a>
+    </div>    
 
           
@@ -64,5 +73,5 @@
     <form action="." method="post" class="group" onsubmit="return submit_once()">
       <span tal:condition="info/carry_overs" tal:omit-tag="">
-      <h4>Carryover Courses</h4>
+      <h3>Carryover Courses</h3>
       <br />
       <table tal:condition="python: 1" class="contentListing" width="100%" summary="content layout" id="folder_content">
@@ -94,5 +103,4 @@
       </table>
       </span> 
-      <br />
 
       <div class="" tal:condition="python: info['data_missing'] and not info['spillover']">
@@ -102,5 +110,5 @@
        
       <span tal:condition="not:info/data_missing" tal:omit-tag=""> 
-      <h4>Session Courses</h4>
+      <h3>Session Courses</h3>
       <br />
 
@@ -112,5 +120,5 @@
         <th tal:attributes="colspan python: test(show_check_boxes,'2','1')" 
             tal:content="python: test(sem == '1','First Semester', 'Second Semester')" />
-        <th align='center'>code</th> 
+        <th align='center'></th> 
         <th align='center'>sm</th>
         <th align='center'>cr</th>
@@ -186,5 +194,14 @@
       </span>
       
-    
+      <br />
+      <table>
+      <tr><th>sm:</th> <td>Semester</td></tr>
+      <tr><th>cr:</th> <td>Credits</td></tr>
+      <tr><th>sc:</th> <td>Score</td></tr>
+      <tr><th>gr: </th> <td>Grade</td></tr>
+      <tr><th>wt: </th> <td>Weight</td></tr>
+      </table>      
+          
+      <br />
       
       <table tal:condition="python: is_student and info['submission_allowed'] and show_check_boxes" width="100%" cellspacing="0" cellpadding="2"
@@ -230,5 +247,5 @@
         </tr>
       </table>
-      <table tal:condition="python:is_so and is_current_level" width="100%" cellspacing="0" cellpadding="2"
+      <table tal:condition="python: is_so and show_check_boxes" width="100%" cellspacing="0" cellpadding="2"
              class="folderButtons">
         <tr>
Index: /WAeUP_SRP/fceokene/profiles/default/actions.xml
===================================================================
--- /WAeUP_SRP/fceokene/profiles/default/actions.xml	(revision 2757)
+++ /WAeUP_SRP/fceokene/profiles/default/actions.xml	(revision 2758)
@@ -159,5 +159,5 @@
      category="student"
      condition_expr="python: here.isStudent() and here.getStudentWorkflowInfo()['tr']"
-     url_expr="string:${portal_url}/request_transfer" visible="True"/>
+     url_expr="string:${portal_url}/request_transfer" visible="False"/>
  </action-provider>
  <action-provider name="portal_registration">
Index: /WAeUP_SRP/fceokene/waeup_custom/getPaymentsFolderInfo.py
===================================================================
--- /WAeUP_SRP/fceokene/waeup_custom/getPaymentsFolderInfo.py	(revision 2757)
+++ /WAeUP_SRP/fceokene/waeup_custom/getPaymentsFolderInfo.py	(revision 2758)
@@ -108,4 +108,5 @@
     else:
         row['confirmed'] = 'unsuccessful'
+    row['is_editable'] = is_so and (row['confirmed'] == 'active')
     payments.append(row)
 
