Index: WAeUP_SRP/trunk/profiles/default/schemas/payment.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/schemas/payment.xml	(revision 1612)
+++ WAeUP_SRP/trunk/profiles/default/schemas/payment.xml	(revision 1613)
@@ -6,5 +6,5 @@
   <field name="type_description" meta_type="CPS String Field" >
     <property name="is_searchabletext">True</property>
-  </field> <field name="order_id" meta_type="CPS String Field"/>
+  </field> 
   <field name="amount" meta_type="CPS String Field"/>
   <field name="resp_pay_reference" meta_type="CPS String Field"/>
Index: WAeUP_SRP/trunk/skins/waeup_epayment/getPaymentsFolderInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_epayment/getPaymentsFolderInfo.py	(revision 1612)
+++ WAeUP_SRP/trunk/skins/waeup_epayment/getPaymentsFolderInfo.py	(revision 1613)
@@ -53,4 +53,8 @@
     else:
         row['is_approvable'] = is_so and (review_state == "opened")
+    if so_object.type_description.startswith('School Fee'):
+        row['is_requeryable'] = (review_state == "opened") and info['review_state'] == 'cleared_and_validated'
+    else:
+        row['is_requeryable'] = is_so and (review_state == "opened")
     if (review_state == "closed") and so_object.resp_code in ('SC','00','AP',):
         row['confirmed'] = 'active'
Index: WAeUP_SRP/trunk/skins/waeup_epayment/payments_view.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_epayment/payments_view.pt	(revision 1612)
+++ WAeUP_SRP/trunk/skins/waeup_epayment/payments_view.pt	(revision 1613)
@@ -34,9 +34,17 @@
             </td>
             <td>
-            <a tal:condition="python:row['is_approvable']"
+            <a tal:condition="row/is_approvable"
                tal:attributes="href string:${context/absolute_url}/${row/id}/approve_epayment;
                                onclick python:'return window.confirm(\'%s\')' %(cpsmcat('Are you sure? You will not be able to undo the approval.'), );
                                ">
                 [approve payment]
+            </a>             
+            </td>
+            <td>
+            <a tal:condition="row/is_requeryable"
+               tal:attributes="href string:${context/absolute_url}/${row/id}/requery_payment;
+                               onclick python:'return window.confirm(\'%s\')' %(cpsmcat('Are you sure? You will not be able to undo the approval.'), );
+                               ">
+                [requery payment]
             </a>             
             </td>
Index: WAeUP_SRP/trunk/skins/waeup_epayment/requery_payment.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_epayment/requery_payment.py	(revision 1613)
+++ WAeUP_SRP/trunk/skins/waeup_epayment/requery_payment.py	(revision 1613)
@@ -0,0 +1,66 @@
+## Script (Python) "pay_online"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+# $Id$
+"""
+pay online
+"""
+from urllib import urlencode
+import logging
+logger = logging.getLogger('Skins.pay_online')
+import DateTime
+
+if context.portal_membership.isAnonymousUser():
+    return None
+
+request = context.REQUEST
+wftool = context.portal_workflow
+students = context.portal_url.getPortalObject().campus.students
+
+student_id = context.getStudentId()
+student = getattr(students,student_id)
+
+sbrain = context.students_catalog(id=student_id)[0]
+info = {}
+info['site_id'] = '300100100'
+info['currency_id'] = '566'
+
+#from Products.zdb import set_trace;set_trace()
+if student_id is None:
+    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
+
+if context.portal_url().find('uniben-demo.waeup.org') >-1 or\
+   context.portal_url().find('uniben.waeup.org') >-1:
+    info['action'] = "http://www.wemaonlinepayments.biz/querytransaction.aspx"
+else:
+    #pass
+    #return None
+    info['action'] = "%s/payments/%s/simulate_queryatransaction" % (student.absolute_url(),p_id)
+
+
+info['callback_url'] = "%s/payments/%s/epayment_requery_cb" % (student.absolute_url(),p_id)
+payment = context
+if payment.portal_type != 'Payment':
+    return
+payment_doc = payment.getContent()
+#from Products.zdb import set_trace;set_trace()
+info['order_id'] = payment_doc.order_id
+info['type_description'] = payment_doc.type_description
+info['pay_bill_to'] = payment_doc.pay_bill_to
+info['amount'] = payment_doc.amount
+logger.info('%(student_id)s requeried online school fee payment for order_id %(order_id)s' % info)
+payment_fields = (('x_SiteID','site_id'),
+                  ('x_OrderID','order_id'),
+                  ('x_Redirect_url','callback_url'),
+                  )
+args = {}
+for arg,field in payment_fields:
+    args[arg] = info[field]
+info['args'] = args
+return context.requery_payment_form(info=info)
Index: WAeUP_SRP/trunk/skins/waeup_epayment/requery_payment_form.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_epayment/requery_payment_form.pt	(revision 1613)
+++ WAeUP_SRP/trunk/skins/waeup_epayment/requery_payment_form.pt	(revision 1613)
@@ -0,0 +1,49 @@
+<metal:body use-macro="here/main_template/macros/master">
+    <metal:main fill-slot="main"
+                tal:define="info options/info">
+                
+        <h3>Authorize Online Payment! </h3>
+        <br />
+                
+      <form method="post" action="pay_online"
+            tal:attributes="action info/action ">
+      <span tal:repeat="arg python:info['args'].items()"
+            tal:omit-tag="">
+          <input type="hidden" tal:attributes="name python:arg[0];value python:arg[1]" />
+      </span>          
+      <div>Requery this payment</div>
+        <table>
+          <tr>
+            <td width="100px">
+            Payment:</td>
+            <td tal:content="info/type_description"></td>
+          </tr>
+          <tr>
+            <td>
+            Name:
+            </td>
+            <td tal:content="info/pay_bill_to" />
+          </tr>
+          <tr>
+            <td >
+            Amount:
+            </td>
+            <td> Naira <span tal:content="info/amount" /></td>
+          </tr>
+          <tr>
+            <td >
+            Bank:
+            </td>
+            <td>Wema Bank</td>
+          </tr>          
+        </table>
+        <br />
+        <input type="submit" 
+               class="standalone" 
+               name="goto_bank" 
+               value="Requery this payment with Bank" 
+               />
+      </form>
+    </metal:main>
+</metal:body>
+
Index: WAeUP_SRP/trunk/skins/waeup_student/delete_course_result.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_student/delete_course_result.py	(revision 1612)
+++ WAeUP_SRP/trunk/skins/waeup_student/delete_course_result.py	(revision 1613)
@@ -14,4 +14,6 @@
 
 from Products.CMFCore.utils import getToolByName
+from AccessControl import Unauthorized
+
 here = context
 from urllib import urlencode
@@ -30,7 +32,11 @@
             real_ids.append(id)
     if real_ids:
-        context.manage_delObjects(real_ids)
-        logger.info('%s deleted StudentCourseResult object %s for %s' % (member,id,context.getStudentId()))
-        message = 'psm_item(s)_deleted'
+        try:
+            context.manage_delObjects(real_ids)
+            logger.info('%s deleted StudentCourseResult object %s for %s' % (member,id,context.getStudentId()))
+            message = 'psm_item(s)_deleted'
+        except Unauthorized:
+            logger.info('%s has no permission to delete StudentCourseResult objects for %s' % (member,context.getStudentId()))
+            message = 'no item(s) deleted'
 else:
     message = 'psm_select_at_least_one_document'
