Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py	(revision 16759)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py	(revision 16760)
@@ -30,5 +30,6 @@
 from kofacustom.dspg.applicants.interfaces import ICustomApplicantOnlinePayment
 from kofacustom.dspg.interfaces import MessageFactory as _
-from kofacustom.dspg.students.utils import MICROSOFT_FEE
+from kofacustom.dspg.students.utils import (
+    MICROSOFT_FEE, DEVELOP_FEE, TECH_FEE)
 
 PRODUCT_ID = '7269' # must be provided by Interswitch
@@ -140,11 +141,12 @@
         tech_fee = 0.0
         microsoft_fee = 0.0
+        develop_fee = 0.0
         if self.context.p_category.startswith('schoolfee'):
             self.pay_item_id = '102'
             if self.context.p_item != 'Balance':
                 provider_amt = 2800.0
-                tech_fee = 1200.0
-                if student.state == RETURNING:
-                    microsoft_fee = MICROSOFT_FEE
+                tech_fee = TECH_FEE(student)
+                develop_fee = DEVELOP_FEE(student)
+                microsoft_fee = MICROSOFT_FEE(student)
             if student.faccode == 'SPAT':
                 xmldict['institution_acct'] = '1556004203'
@@ -236,9 +238,11 @@
         xmldict['provider_amt'] = 100 * provider_amt
         xmldict['tech_fee'] = 100 * tech_fee
+        xmldict['develop_fee'] = 100 * develop_fee
         xmldict['microsoft_fee'] = 100 * microsoft_fee
         xmldict['institution_item_name'] = self.context.category
         xmldict['institution_name'] = INSTITUTION_NAME
         xmldict['institution_amt'] = institution_amt = 100 * (
-            self.context.amount_auth - provider_amt - tech_fee - microsoft_fee - GATEWAY_AMT)
+            self.context.amount_auth - provider_amt - tech_fee -
+            develop_fee - microsoft_fee - GATEWAY_AMT)
 
         if provider_amt == 0:
@@ -248,5 +252,5 @@
 </item_details>
 </payment_item_detail>""" % xmldict
-        elif tech_fee == 0:
+        elif tech_fee == 0:   # implies develop_fee == 0
             xmltext = """<payment_item_detail>
 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s">
@@ -261,4 +265,5 @@
 <item_detail item_id="2" item_name="%(provider_item_name)s" item_amt="%(provider_amt)d" bank_id="%(provider_bank_id)s" acct_num="%(provider_acct)s" />
 <item_detail item_id="3" item_name="Technology Fee" item_amt="%(tech_fee)d" bank_id="10" acct_num="0032256360" />
+<item_detail item_id="4" item_name="Developmental Levy" item_amt="%(develop_fee)d" bank_id="51" acct_num="1012963301" />
 </item_details>
 </payment_item_detail>""" % xmldict
@@ -269,5 +274,6 @@
 <item_detail item_id="2" item_name="%(provider_item_name)s" item_amt="%(provider_amt)d" bank_id="%(provider_bank_id)s" acct_num="%(provider_acct)s" />
 <item_detail item_id="3" item_name="Technology Fee" item_amt="%(tech_fee)d" bank_id="10" acct_num="0032256360" />
-<item_detail item_id="4" item_name="Microsoft Academy Fee" item_amt="%(microsoft_fee)d" bank_id="8" acct_num="2011810360" />
+<item_detail item_id="4" item_name="Developmental Levy" item_amt="%(develop_fee)d" bank_id="51" acct_num="1012963301" />
+<item_detail item_id="5" item_name="Microsoft Academy Fee" item_amt="%(microsoft_fee)d" bank_id="117" acct_num="4011256518" />
 </item_details>
 </payment_item_detail>""" % xmldict
@@ -288,5 +294,5 @@
 </item_details>
 </payment_item_detail>""" % xmldict
-            elif tech_fee == 0:
+            elif tech_fee == 0: # implies develop_fee == 0
                 xmltext = """<payment_item_detail>
 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s">
@@ -296,5 +302,5 @@
 </item_details>
 </payment_item_detail>""" % xmldict
-            else:
+            elif microsoft_fee == 0:
                 xmltext = """<payment_item_detail>
 <item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s">
@@ -303,4 +309,16 @@
 <item_detail item_id="3" item_name="%(provider_item_name)s" item_amt="%(provider_amt)d" bank_id="%(provider_bank_id)s" acct_num="%(provider_acct)s" />
 <item_detail item_id="4" item_name="Technology Fee" item_amt="%(tech_fee)d" bank_id="10" acct_num="0032256360" />
+<item_detail item_id="5" item_name="Developmental Levy" item_amt="%(develop_fee)d" bank_id="51" acct_num="1012963301" />
+</item_details>
+</payment_item_detail>""" % xmldict
+            else:
+                xmltext = """<payment_item_detail>
+<item_details detail_ref="%(detail_ref)s" college="%(institution_name)s" department="%(department)s" faculty="%(faculty)s">
+<item_detail item_id="1" item_name="%(institution_item_name)s 1" item_amt="%(institution_amt_1)d" bank_id="%(institution_bank_id)s" acct_num="%(institution_acct)s" />
+<item_detail item_id="2" item_name="%(institution_item_name)s 2" item_amt="%(institution_amt_2)d" bank_id="8" acct_num="2034761924" />
+<item_detail item_id="3" item_name="%(provider_item_name)s" item_amt="%(provider_amt)d" bank_id="%(provider_bank_id)s" acct_num="%(provider_acct)s" />
+<item_detail item_id="4" item_name="Technology Fee" item_amt="%(tech_fee)d" bank_id="10" acct_num="0032256360" />
+<item_detail item_id="5" item_name="Developmental Levy" item_amt="%(develop_fee)d" bank_id="51" acct_num="1012963301" />
+<item_detail item_id="6" item_name="Microsoft Academy Fee" item_amt="%(microsoft_fee)d" bank_id="117" acct_num="4011256518" />
 </item_details>
 </payment_item_detail>""" % xmldict
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py	(revision 16759)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py	(revision 16760)
@@ -86,5 +86,6 @@
         self.assertMatches('...ticket created...',
                            self.browser.contents)
-        self.assertTrue('<span>30000.0</span>'  in self.browser.contents)
+        # 30000 + 4250 + 15000 + 5950.0 = 55200
+        self.assertTrue('<span>55200.0</span>'  in self.browser.contents)
         self.payment_url = self.browser.url
         self.browser.getLink("Pay via Interswitch", index=0).click()
@@ -92,8 +93,17 @@
             in self.browser.contents)
         self.assertTrue(
-            '<input type="hidden" name="amount" value="3000000" />' in
-            self.browser.contents)
-        self.assertTrue(
-            'item_name="School Fee" item_amt="2575000" bank_id="8" acct_num="2004145840"' in
+            '<input type="hidden" name="amount" value="5520000" />' in
+            self.browser.contents)
+        self.assertTrue(
+            'item_name="School Fee" item_amt="2695000" bank_id="8" acct_num="2004145840"' in
+            self.browser.contents)
+        self.assertTrue(
+            'item_name="Technology Fee" item_amt="425000" bank_id="10" acct_num="0032256360"' in
+            self.browser.contents)
+        self.assertTrue(
+            'item_name="Developmental Levy" item_amt="1500000" bank_id="51" acct_num="1012963301"' in
+            self.browser.contents)
+        self.assertTrue(
+            'item_name="Microsoft Academy Fee" item_amt="595000" bank_id="117" acct_num="4011256518"' in
             self.browser.contents)
         # ND FT Non-Deltan Fresh Student Acceptance Fee
@@ -190,15 +200,21 @@
         self.browser.getControl("Create ticket").click()
         self.assertMatches('...ticket created...', self.browser.contents)
-        self.assertTrue('<span>30000.0</span>'  in self.browser.contents)
-        self.payment_url = self.browser.url
-        self.browser.getLink("Pay via Interswitch", index=0).click()
-        self.assertTrue('<item_detail item_id="1" item_name="School Fee 1" item_amt="1545000" bank_id="388" acct_num="1556004203" />'
-            in self.browser.contents)
-        self.assertTrue('<item_detail item_id="2" item_name="School Fee 2" item_amt="1030000" bank_id="8" acct_num="2034761924" />'
+        self.assertTrue('<span>55200.0</span>' in self.browser.contents)
+        self.payment_url = self.browser.url
+        self.browser.getLink("Pay via Interswitch", index=0).click()
+        self.assertTrue('<item_detail item_id="1" item_name="School Fee 1" item_amt="1617000" bank_id="388" acct_num="1556004203" />'
+            in self.browser.contents)
+        self.assertTrue('<item_detail item_id="2" item_name="School Fee 2" item_amt="1078000" bank_id="8" acct_num="2034761924" />'
             in self.browser.contents)
         self.assertTrue('<item_detail item_id="3" item_name="WAEAC" item_amt="280000" bank_id="8" acct_num="2028964403" />'
             in self.browser.contents)
-        self.assertTrue('<item_detail item_id="4" item_name="Technology Fee" item_amt="120000" bank_id="10" acct_num="0032256360" />'
-            in self.browser.contents)
+        self.assertTrue('<item_detail item_id="4" item_name="Technology Fee" item_amt="425000" bank_id="10" acct_num="0032256360" />'
+            in self.browser.contents)
+        self.assertTrue(
+            '<item_detail item_id="5" item_name="Developmental Levy" item_amt="1500000" bank_id="51" acct_num="1012963301"' in
+            self.browser.contents)
+        self.assertTrue(
+            '<item_detail item_id="6" item_name="Microsoft Academy Fee" item_amt="595000" bank_id="117" acct_num="4011256518"' in
+            self.browser.contents)
 
     def test_interswitch_form_dep_sug_payments(self):
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/tests/test_utils.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/tests/test_utils.py	(revision 16759)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/tests/test_utils.py	(revision 16760)
@@ -110,4 +110,5 @@
         self.assertEqual(payment.p_level, 200)
         self.assertEqual(payment.p_session, 2005)
-        self.assertEqual(payment.amount_auth, 9999.0) # now includes Microsoft Fee
+        # 9999 + 5950 + 15000 4250
+        self.assertEqual(payment.amount_auth, 35199.0)
 
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py	(revision 16759)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py	(revision 16760)
@@ -24,6 +24,4 @@
 from kofacustom.dspg.interfaces import MessageFactory as _
 
-MICROSOFT_FEE = 0.0
-
 def local(student):
     lga = getattr(student, 'lga')
@@ -31,4 +29,19 @@
         return True
     return False
+
+def MICROSOFT_FEE(student):
+    if student.is_fresh:
+        return 5950.0
+    return 0.0
+
+def DEVELOP_FEE(student):
+    if local(student) and student.faccode != 'SPAT':
+        return 10000.0
+    return 15000.0
+
+def TECH_FEE(student):
+    if student.is_fresh:
+        return 4250.0
+    return 1200.0
 
 class CustomStudentsUtils(NigeriaStudentsUtils):
@@ -213,5 +226,4 @@
                         300, 310, 320, 330, 600, 610, 620, 630):
                         amount -= 7000
-                    amount += MICROSOFT_FEE
                 elif student.is_postgrad and student.state == PAID:
                     # Returning postgraduate students also pay for the
@@ -228,4 +240,7 @@
                     else:
                         amount = getattr(certificate, 'school_fee_4', 0.0)
+            amount += MICROSOFT_FEE(student)
+            amount += DEVELOP_FEE(student)
+            amount += TECH_FEE(student)
         elif category == 'clearance':
             try:
