Index: main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser.py
===================================================================
--- main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser.py	(revision 17175)
+++ main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser.py	(revision 17190)
@@ -26,5 +26,5 @@
     FriendlyDatetimeDisplayWidget)
 from waeup.kofa.applicants.pdf import PDFApplicationSlip
-from waeup.kofa.browser.layout import KofaEditFormPage, action
+from waeup.kofa.browser.layout import KofaEditFormPage, KofaPage, action
 from waeup.kofa.applicants.browser import (
     ApplicantRegistrationPage, ApplicantsContainerPage,
@@ -147,5 +147,6 @@
         applicants_utils = getUtility(IApplicantsUtils)
         if self.context.state in applicants_utils.BALANCE_PAYMENT_STATES:
-            actions[1].append(_('Add balance payment ticket'))
+            actions[1].append(_('Make Donation'))
+            #actions[1].append(_('Make Donation via USSD'))
         return actions
 
@@ -160,4 +161,28 @@
         form_fields['reg_number'].for_display = True
         return form_fields
+
+    @action(_('Save'), style='primary')
+    def save(self, **data):
+        if self.upload_success is False:  # False is not None!
+            # Error during image upload. Ignore other values.
+            return
+        self.applyData(self.context, **data)
+        self.flash(_('Form has been saved.'))
+        return
+
+    @action(_('Add online payment ticket'), style='primary')
+    def addPaymentTicket(self, **data):
+        self.redirect(self.url(self.context, '@@addafp'))
+        return
+
+    @action(_('Make Donation'), style='primary')
+    def addBalancePaymentTicket(self, **data):
+        self.redirect(self.url(self.context, '@@addbp'))
+        return
+
+    @action(_('Make Donation via USSD Money Transfer'), style='primary')
+    def makeUSSDonation(self, **data):
+        self.redirect(self.url(self.context, '@USSSD'))
+        return
         
 class CustomBalancePaymentAddFormPage(BalancePaymentAddFormPage):
@@ -232,2 +257,12 @@
             self.redirect(self.url(self.context))
         return
+
+class USSDInfoPage(KofaPage):
+    """
+    """
+    grok.context(ICustomApplicant)
+    grok.require('waeup.handleApplication')
+    grok.name('ussdinfo')
+    label = _('Donate via USSD')
+    grok.template('ussdinfo')
+    pnav = 3
Index: main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser_templates/ussdinfo.pt
===================================================================
--- main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser_templates/ussdinfo.pt	(revision 17190)
+++ main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser_templates/ussdinfo.pt	(revision 17190)
@@ -0,0 +1,8 @@
+<p>To make a donation, choose one of the payment methods below:</p>
+
+<ol>
+<li>Pay by USSD Ecobank Customers: <strong>*326*6*Amount*20341823#</strong></li>
+<li>Pay by USSD Other Bank Customers: <strong>*BankUSSDcode*000*20341823+Amount#</strong></li>
+<li>You can also write your cheque in favour of <strong>BIG TENT FOUNDATION FOR CHARITY, ENLIGHTENMENT AND EMPOWERMENT</strong></li>
+</ol>
+
Index: main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/viewlets.py
===================================================================
--- main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/viewlets.py	(revision 17175)
+++ main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/viewlets.py	(revision 17190)
@@ -21,5 +21,6 @@
 from waeup.kofa.applicants.viewlets import ApplicantsAuthTab
 from kofacustom.lpng.applicants.interfaces import ICustomApplicant
-from kofacustom.lpng.applicants.browser import ApplicantDisplayFormPage
+from kofacustom.lpng.applicants.browser import (ApplicantDisplayFormPage,
+    ApplicantEditFormPage)
 
 from kofacustom.lpng.interfaces import MessageFactory as _
@@ -40,5 +41,5 @@
 
 class SelectPunitActionButton(ManageActionButton):
-    grok.order(1)
+    grok.order(2)
     grok.context(ICustomApplicant)
     grok.require('waeup.handleApplication')
@@ -47,2 +48,14 @@
     text = _('Locate Polling Unit')
     target ='punitformpage'
+
+class MakeUSSDDonationActionButton(ManageActionButton):
+    grok.order(1)
+    grok.context(ICustomApplicant)
+    grok.require('waeup.handleApplication')
+    grok.view(ApplicantDisplayFormPage)
+    icon = 'actionicon_donate.png'
+    text = _('Make Donation via USSD')
+    target ='ussdinfo'
+
+class MakeUSSDDonationActionButton2(MakeUSSDDonationActionButton):
+    grok.view(ApplicantEditFormPage)
