Index: main/waeup.uniben/trunk/src/waeup/uniben/remita/browser.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/remita/browser.py	(revision 14959)
+++ main/waeup.uniben/trunk/src/waeup/uniben/remita/browser.py	(revision 14960)
@@ -81,4 +81,6 @@
             if student.current_mode == 'ug_pt':
                 return '2067091679'
+            if student.current_mode == 'special_ft':
+                return '2750318564' # Module 2
             if student.is_jupeb:
                 return '1946888188'
@@ -101,4 +103,8 @@
         if self.context.p_category == 'jupeb':
             return '1947198586'
+        if self.context.p_category == 'pharmd_1': 
+            return '2750314820' # Clerkship
+        if self.context.p_category == 'pharmd_2': 
+            return '2750174184' # Module 1
         return ''
 
@@ -124,4 +130,6 @@
     @property
     def lineitems(self):
+        inst_bankcode = "000"
+        inst_acct = "0040217361011"
         provider_amt = 0.0
         if self.context.p_category == 'schoolfee' and \
@@ -130,14 +138,15 @@
         elif self.context.p_category == 'clearance':
             provider_amt = self.dynamic_provider_amt(self.context.student)
-        inst_amt = self.context.amount_auth - provider_amt
+        elif self.context.p_category == 'pharmd_1':
+            inst_acct = "0020197061015"
+            provider_amt = 0.0
         if self.context.student.is_jupeb \
             or self.context.student.current_mode == 'dp_ft':
             inst_acct = "0040217361038"
-        else:
-            inst_acct = "0040217361011"
+        inst_amt = self.context.amount_auth - provider_amt
         if provider_amt:
             lineitems = (
                           {"lineItemsId":"itemid1","beneficiaryName":"Uniben",
-                          "beneficiaryAccount":inst_acct,"bankCode":"000",
+                          "beneficiaryAccount":inst_acct,"bankCode":inst_bankcode,
                           "beneficiaryAmount":inst_amt,"deductFeeFrom":"1"},
                           {"lineItemsId":"itemid2","beneficiaryName":"WAeAC",
@@ -148,7 +157,27 @@
             lineitems = (
                           {"lineItemsId":"itemid1","beneficiaryName":"Uniben",
-                          "beneficiaryAccount":inst_acct,"bankCode":"000",
+                          "beneficiaryAccount":inst_acct,"bankCode":inst_bankcode,
                           "beneficiaryAmount":inst_amt,"deductFeeFrom":"1"},
                         )
+        # Split pharmd school fee payments into 3 parts if students decide to pay the
+        # entire school fee at once. If the amount is less than N240000, the student
+        # has obviously paid the first installment of N80000 (pharmd_1)
+        if self.context.p_category == 'schoolfee' \
+            and self.context.student.current_mode == 'special_ft' \
+            and self.context.amount_auth >= 240000:
+            pcn_amt = 80000.0
+            inst_amt -= pcn_amt
+            lineitems = (
+                          {"lineItemsId":"itemid1","beneficiaryName":"Uniben",
+                          "beneficiaryAccount":inst_acct,"bankCode":inst_bankcode,
+                          "beneficiaryAmount":inst_amt,"deductFeeFrom":"1"},
+                          {"lineItemsId":"itemid2","beneficiaryName":"PCN",
+                          "beneficiaryAccount":"0020197061015","bankCode":inst_bankcode,
+                          "beneficiaryAmount":pcn_amt,"deductFeeFrom":"0"},
+                          {"lineItemsId":"itemid3","beneficiaryName":"WAeAC",
+                          "beneficiaryAccount":"1014261520","bankCode":"057",
+                          "beneficiaryAmount":provider_amt,"deductFeeFrom":"0"}
+                        )
+        self.context.provider_amt = provider_amt
         return lineitems
 
@@ -240,4 +269,5 @@
                       "beneficiaryAmount":provider_amt,"deductFeeFrom":"0"}
                     )
+        self.context.provider_amt = provider_amt
         return lineitems
 
Index: main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py	(revision 14959)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py	(revision 14960)
@@ -178,4 +178,14 @@
     #    return False
 
+    def _pharmdInstallments(self, student):
+        installments = 0.0
+        if len(student['payments']):
+            for ticket in student['payments'].values():
+                if ticket.p_state == 'paid' and \
+                    ticket.p_category.startswith('pharmd') and \
+                    ticket.p_session == student.current_session:
+                    installments += ticket.amount_auth
+        return installments
+
     def setPaymentDetails(self, category, student,
             previous_session, previous_level):
@@ -218,4 +228,7 @@
         elif category == 'clinexam':
             amount = academic_session.clinexam_fee
+        elif category.startswith('pharmd') \
+            and student.current_mode == 'special_ft':
+            amount = 80000.0
         elif category == 'bed_allocation':
             p_item = self.getAccommodationDetails(student)['bt']
@@ -348,4 +361,8 @@
                             and certificate.custom_float_1:
                             amount -= certificate.custom_float_1
+                # PHARMD school fee amount is fixed and previously paid
+                # installments in current session are deducted.
+                if student.current_mode == 'special_ft':
+                    amount = 240000.0 - self._pharmdInstallments(student)
             # Give 50% school fee discount to staff members.
             if student.is_staff:
Index: main/waeup.uniben/trunk/src/waeup/uniben/utils/utils.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/utils/utils.py	(revision 14959)
+++ main/waeup.uniben/trunk/src/waeup/uniben/utils/utils.py	(revision 14960)
@@ -86,4 +86,6 @@
         'registration': 'Total Registration Fee',
         'clinexam':'Clinical Examination Fee',
+        'pharmd_1':'Clerkship Fee',
+        'pharmd_2':'Module 1 Fee',
         }
 
@@ -103,4 +105,6 @@
         'jupeb': 'JUPEB Examination Fee',
         'clinexam':'Clinical Examination Fee',
+        'pharmd_1':'PharmD Clerkship Fee (1st school fee prepayment)',
+        'pharmd_2':'PharmD Module 1 Fee (2nd school fee prepayment)',
         }
 
