Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py	(revision 14920)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/browser.py	(revision 14921)
@@ -196,4 +196,23 @@
 </payment_item_detail>""" % xmldict
 
+        # dep_sug payments are treated completely separately. The following lines
+        # override the configuration above.
+        if self.context.p_category == 'dep_sug':
+            self.pay_item_id = '102' # We use school fee item id
+            # amount_auth is being ignored. However, the sum of all split payments
+            # must coincide with the amount_auth configured in students/utils.py
+            xmldict['amt1'] = 100 * (1000 - GATEWAY_AMT)
+            xmldict['amt2'] = 100 * 500
+            xmldict['amt3'] = 100 * 900
+            xmldict['amt4'] = 100 * 500
+            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="SUG" item_amt="%(amt1)d" bank_id="11" acct_num="0038079930" />
+<item_detail item_id="2" item_name="Students Welfare" item_amt="%(amt2)d" bank_id="11" acct_num="0037892949" />
+<item_detail item_id="3" item_name="Anti-Cult Book" item_amt="%(amt3)d" bank_id="11" acct_num="0037892949" />
+<item_detail item_id="4" item_name="NADESSTU " item_amt="%(amt4)d" bank_id="11" acct_num="0036375968" />
+</item_details>
+</payment_item_detail>""" % xmldict
+
         self.xml_data = """<input type="hidden" name="xml_data" value='%s'  />""" % xmltext
         self.context.provider_amt = provider_amt
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py	(revision 14920)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/interswitch/tests.py	(revision 14921)
@@ -182,4 +182,28 @@
             in self.browser.contents)
 
+    def test_interswitch_form_dep_sug_payments(self):
+        # Manager can access InterswitchForm
+        self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+        self.browser.open(self.payments_path)
+        IWorkflowState(self.student).setState('cleared')
+        self.browser.open(self.payments_path + '/addop')
+        self.browser.getControl(name="form.p_category").value = ['dep_sug']
+        self.browser.getControl("Create ticket").click()
+        self.assertMatches('...ticket created...', self.browser.contents)
+        ctrl = self.browser.getControl(name='val_id')
+        self.value = ctrl.options[0]
+        self.browser.getLink(self.value).click()
+        self.assertTrue('<span>2900.0</span>'  in self.browser.contents)
+        self.payment_url = self.browser.url
+        self.browser.getLink("CollegePAY", index=0).click()
+        self.assertTrue('<item_detail item_id="1" item_name="SUG" item_amt="75000" bank_id="11" acct_num="0038079930" />'
+            in self.browser.contents)
+        self.assertTrue('<item_detail item_id="2" item_name="Students Welfare" item_amt="50000" bank_id="11" acct_num="0037892949" />'
+            in self.browser.contents)
+        self.assertTrue('<item_detail item_id="3" item_name="Anti-Cult Book" item_amt="90000" bank_id="11" acct_num="0037892949" />'
+            in self.browser.contents)
+        self.assertTrue('<item_detail item_id="4" item_name="NADESSTU " item_amt="50000" bank_id="11" acct_num="0036375968" />'
+            in self.browser.contents)
+
     @external_test
     def test_webservice(self):
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py	(revision 14920)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/students/utils.py	(revision 14921)
@@ -163,4 +163,6 @@
         elif category == 'carryover4':
             amount = 13000.0
+        elif category == 'dep_sug':
+            amount = 2900.0
         else:
             fee_name = category + '_fee'
Index: /main/kofacustom.dspg/trunk/src/kofacustom/dspg/utils/utils.py
===================================================================
--- /main/kofacustom.dspg/trunk/src/kofacustom/dspg/utils/utils.py	(revision 14920)
+++ /main/kofacustom.dspg/trunk/src/kofacustom/dspg/utils/utils.py	(revision 14921)
@@ -38,4 +38,5 @@
 
     STUDY_MODES_DICT = {
+        'transfer': 'Transfer',
         'ug_ft': 'Undergraduate Full Time',
         'ug_pt': 'Undergraduate Part Time',
@@ -55,4 +56,5 @@
         'clearance': 'Acceptance',
         'schoolfee': 'School Fee',
+        'dep_sug':'Departmental and SUG Dues', # is not a special paynent
         'carryover1': '1, 2 or 3 Carry-Over Courses',
         'carryover4': '4 Carry-Over Courses',
@@ -108,4 +110,5 @@
         'clearance': 'Acceptance',
         'schoolfee': 'School Fee',
+        'dep_sug':'Departmental and SUG Dues',
         #'carryover1': 'One Carry-Over',
         #'carryover2': 'Two Carry-Overs',
