Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py	(revision 14874)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py	(revision 14875)
@@ -99,5 +99,5 @@
 
 
-# Not yet readily configured. MAC is missing. Bank account numbers are
+# Not yet readily configured. Bank account numbers are
 # contradictory. pay_item_ids are not yet assigned.
 
@@ -111,5 +111,6 @@
     currency = CURRENCY
     product_id = PRODUCT_ID
-    mac = ''  # must be provided by Interswitch
+    mac = 'D43ED93B7A307B152C7111D04E1F384428057CD1E75428D3A4C5631C28ACB9C8C822A88CA76DEDC5F9A520CF4BFDB2824FF8B207AAFC667DF3CBB13685B66627'
+    pay_item_id = '000'
 
     def update(self):
@@ -127,25 +128,28 @@
         xmldict['provider_item_name'] = PROVIDER_ITEM_NAME
         # Institution data
-        xmldict['institution_acct'] = '0010761873'
-        xmldict['institution_bank_id'] = '11'
+        xmldict['institution_acct'] = '00000000'
+        xmldict['institution_bank_id'] = '00'
         xmldict['institution_amt'] = '0.0'
-        provider_amt = 500.0
-
+        provider_amt = 0.0
         if self.context.p_category.startswith('schoolfee'):
             self.pay_item_id = '102'
+            provider_amt = 2800.0
+            if self.student.current_mode.endswith('pt') or \
+                self.student.current_mode.endswith('we'):
+                xmldict['institution_acct'] = '1012808851 '
+                xmldict['institution_bank_id'] = '117'
+            elif self.student.current_mode in ('nd_ft', 'hnd_ft'):
+                xmldict['institution_acct'] = '0026235493'
+                xmldict['institution_bank_id'] = '31'
         elif self.context.p_category == 'clearance':
             self.pay_item_id = '103'
-        elif self.context.p_category == 'bed_allocation':
-            self.pay_item_id = '104'
-        elif self.context.p_category == 'hostel_maintenance':
-            self.pay_item_id = '105'
-        elif self.context.p_category == 'transfer':
-            self.pay_item_id = '106'
-        elif self.context.p_category == 'gown':
-            self.pay_item_id = '107'
-        elif self.context.p_category == 'transcript':
-            self.pay_item_id = '108'
-        elif self.context.p_category == 'late_registration':
-            self.pay_item_id = '109'
+            provider_amt = 500.0
+            if self.student.current_mode.endswith('pt') or \
+                self.student.current_mode.endswith('we'):
+                xmldict['institution_acct'] = '1012808851 '
+                xmldict['institution_bank_id'] = '117'
+            elif self.student.current_mode == 'nd_ft':
+                xmldict['institution_acct'] = '2004402644'
+                xmldict['institution_bank_id'] = '8'
         elif self.context.p_category in SPECIAL_PAYMENT_PARAMS.keys():
             self.pay_item_id = SPECIAL_PAYMENT_PARAMS[self.context.p_category][0]
@@ -262,4 +266,5 @@
     gateway_host = HOST
     gateway_url = URL
+    mac = 'D43ED93B7A307B152C7111D04E1F384428057CD1E75428D3A4C5631C28ACB9C8C822A88CA76DEDC5F9A520CF4BFDB2824FF8B207AAFC667DF3CBB13685B66627'
 
 class CustomInterswitchPaymentVerifyWebservicePageStudent(
@@ -271,4 +276,5 @@
     gateway_host = HOST
     gateway_url = URL
+    mac = 'D43ED93B7A307B152C7111D04E1F384428057CD1E75428D3A4C5631C28ACB9C8C822A88CA76DEDC5F9A520CF4BFDB2824FF8B207AAFC667DF3CBB13685B66627'
 
 class CustomInterswitchPaymentRequestWebservicePageApplicant(
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py	(revision 14874)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py	(revision 14875)
@@ -59,4 +59,7 @@
         IWorkflowState(self.student).setState('cleared')
         self.student.nationality = u'NG'
+        # ND FT Non-Deltan Fresh Student School Fee
+        self.certificate.study_mode = 'nd_ft'
+        self.certificate.school_fee_3 = 30000.0
         self.browser.open(self.payments_path + '/addop')
         self.browser.getControl(name="form.p_category").value = ['schoolfee']
@@ -70,18 +73,40 @@
                            self.browser.contents)
         self.assertMatches(
-            '...<span>40000.0</span>...',
-            self.browser.contents)
-        self.payment_url = self.browser.url
-        self.browser.getLink("CollegePAY", index=0).click()
-        self.assertMatches('...<input type="hidden" name="pay_item_id" value="102" />...',
-                           self.browser.contents)
-        self.assertMatches('...Total Amount Authorized:...',
-                           self.browser.contents)
-        self.assertEqual(self.student.current_mode, 'ug_ft')
-        self.assertMatches(
-            '...<input type="hidden" name="amount" value="4000000" />...',
-            self.browser.contents)
-        self.assertMatches(
-            '...item_name="School Fee" item_amt="4000000" bank_id="11" acct_num="0010761873"...',
+            '...<span>30000.0</span>...',
+            self.browser.contents)
+        self.payment_url = self.browser.url
+        self.browser.getLink("CollegePAY", index=0).click()
+        self.assertTrue('<input type="hidden" name="pay_item_id" value="102" />'
+            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="2695000" bank_id="31" acct_num="0026235493"' in
+            self.browser.contents)
+        # ND FT Non-Deltan Fresh Student Acceptance Fee
+        self.app['configuration']['2004'].clearance_fee = 12345.0
+        self.browser.open(self.payments_path + '/addop')
+        self.browser.getControl(name="form.p_category").value = ['clearance']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...ticket created...',
+                           self.browser.contents)
+        ctrl = self.browser.getControl(name='val_id')
+        self.value = ctrl.options[1]
+        self.browser.getLink(self.value).click()
+        self.assertMatches('...Amount Authorized...',
+                           self.browser.contents)
+        self.assertMatches(
+            '...<span>12345.0</span>...',
+            self.browser.contents)
+        self.payment_url = self.browser.url
+        self.browser.getLink("CollegePAY", index=0).click()
+        self.assertTrue('<input type="hidden" name="pay_item_id" value="103" />' in
+                           self.browser.contents)
+        self.assertTrue(
+            '<input type="hidden" name="amount" value="1234500" />' in
+            self.browser.contents)
+        self.assertTrue(
+            'item_name="Acceptance" item_amt="1159500" bank_id="8" acct_num="2004402644"' in
             self.browser.contents)
 
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/locales/en/LC_MESSAGES/waeup.kofa.po
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 14874)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 14875)
@@ -17,2 +17,14 @@
 msgid "Special Application"
 msgstr "Remedial Payment"
+
+msgid "Initial School Fee"
+msgstr "Initial School Fee (Deltan)"
+
+msgid "Returning School Fee"
+msgstr "Returning School Fee (Deltan)"
+
+msgid "Foreigner Initial School Fee"
+msgstr "Initial School Fee (Non-Deltan)"
+
+msgid "Foreigner Returning School Fee"
+msgstr "Returning School Fee (Non-Deltan)"
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py	(revision 14874)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py	(revision 14875)
@@ -23,7 +23,13 @@
 from kofacustom.dspg.interfaces import MessageFactory as _
 
+
+def local(student):
+    lga = getattr(student, 'lga')
+    if lga and lga.startswith('delta'):
+        return True
+    return False
+
 class CustomStudentsUtils(NigeriaStudentsUtils):
     """A collection of customized methods.
-
     """
 
@@ -71,10 +77,19 @@
                 # update method of the PreviousPaymentAddFormPage.
                 if previous_level == 100:
-                    amount = getattr(certificate, 'school_fee_1', 0.0)
+                    if local(student):
+                        amount = getattr(certificate, 'school_fee_1', 0.0)
+                    else:
+                        amount = getattr(certificate, 'school_fee_3', 0.0)
                 else:
-                    amount = getattr(certificate, 'school_fee_2', 0.0)
+                    if local(student):
+                        amount = getattr(certificate, 'school_fee_2', 0.0)
+                    else:
+                        amount = getattr(certificate, 'school_fee_4', 0.0)
             else:
                 if student.state == CLEARED:
-                    amount = getattr(certificate, 'school_fee_1', 0.0)
+                    if local(student):
+                        amount = getattr(certificate, 'school_fee_1', 0.0)
+                    else:
+                        amount = getattr(certificate, 'school_fee_3', 0.0)
                 elif student.state == RETURNING:
                     # In case of returning school fee payment the
@@ -88,5 +103,8 @@
                             u'Session configuration object is not available.'
                             ), None
-                    amount = getattr(certificate, 'school_fee_2', 0.0)
+                    if local(student):
+                        amount = getattr(certificate, 'school_fee_2', 0.0)
+                    else:
+                        amount = getattr(certificate, 'school_fee_4', 0.0)
                 elif student.is_postgrad and student.state == PAID:
                     # Returning postgraduate students also pay for the
@@ -99,5 +117,8 @@
                             u'Session configuration object is not available.'
                             ), None
-                    amount = getattr(certificate, 'school_fee_2', 0.0)
+                    if local(student):
+                        amount = getattr(certificate, 'school_fee_2', 0.0)
+                    else:
+                        amount = getattr(certificate, 'school_fee_4', 0.0)
         elif category == 'clearance':
             try:
@@ -106,4 +127,8 @@
                 return _('Study course data are incomplete.'), None
             amount = academic_session.clearance_fee
+            if student.current_mode == 'nd_ft' and local(student):
+                amount /= 2
+            if student.current_mode == 'hnd_ft':
+                amount = 0.0
         elif category == 'bed_allocation':
             p_item = self.getAccommodationDetails(student)['bt']
