Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py	(revision 11570)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py	(revision 11575)
@@ -630,12 +630,13 @@
 
     def update(self):
-        for key in self.context.keys():
-            ticket = self.context[key]
-            if ticket.p_state == 'paid':
-                  self.flash(
-                      _('This type of payment has already been made.'),
-                      type='warning')
-                  self.redirect(self.url(self.context))
-                  return
+        if not self.context.special:
+            for key in self.context.keys():
+                ticket = self.context[key]
+                if ticket.p_state == 'paid':
+                      self.flash(
+                          _('This type of payment has already been made.'),
+                          type='warning')
+                      self.redirect(self.url(self.context))
+                      return
         applicants_utils = getUtility(IApplicantsUtils)
         container = self.context.__parent__
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/payment.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/payment.py	(revision 11570)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/payment.py	(revision 11575)
@@ -44,10 +44,11 @@
         """Process applicant after payment was approved.
         """
-        wf_info = IWorkflowInfo(self.__parent__)
-        try:
-            wf_info.fireTransition('approve')
-        except InvalidTransitionError:
-            msg = log = 'Error: %s' % sys.exc_info()[1]
-            return msg, log
+        if not self.__parent__.special:
+            wf_info = IWorkflowInfo(self.__parent__)
+            try:
+                wf_info.fireTransition('approve')
+            except InvalidTransitionError:
+                msg = log = 'Error: %s' % sys.exc_info()[1]
+                return msg, log
         log = 'payment approved: %s' % self.p_id
         msg = _('Payment approved')
@@ -57,10 +58,11 @@
         """Process applicant after payment was made.
         """
-        wf_info = IWorkflowInfo(self.__parent__)
-        try:
-            wf_info.fireTransition('pay')
-        except InvalidTransitionError:
-            msg = log = 'Error: %s' % sys.exc_info()[1]
-            return msg, log
+        if not self.__parent__.special:
+            wf_info = IWorkflowInfo(self.__parent__)
+            try:
+                wf_info.fireTransition('pay')
+            except InvalidTransitionError:
+                msg = log = 'Error: %s' % sys.exc_info()[1]
+                return msg, log
         log = 'successful payment: %s' % self.p_id
         msg = _('Successful payment')
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 11570)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 11575)
@@ -943,4 +943,5 @@
         configuration.academic_session = session_1
         configuration.transcript_fee = 200.0
+        configuration.clearance_fee = 300.0
         self.app['configuration'].addSessionConfiguration(configuration)
 
@@ -974,18 +975,20 @@
         self.assertTrue(
             '<span>200.0</span>' in self.browser.contents)
-        self.browser.getLink("Logout").click()
-        # Login as manager
-        #self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
-        #self.browser.open(applicant_path + '/manage')
-        # When unselecting special_application, the payment ticket
-        # can still be created.
-        #self.browser.getControl(name="form.special_application").value = [
-        #    '']
-        #self.browser.getControl("Save").click()
-        #self.browser.getControl("Add online payment ticket").click()
-        #self.assertMatches('...Payment ticket created...',
-        #                   self.browser.contents)
-        #self.assertMatches('...<span>--</span>...',
-        #                   self.browser.contents)
+        self.assertEqual(len(self.special_applicant.keys()), 1)
+        # The applicant's workflow remain started ...
+        self.special_applicant.values()[0].approveApplicantPayment()
+        self.assertEqual(self.special_applicant.state, 'started')
+        self.browser.open(applicant_path + '/edit')
+        # ... so that he can create further tickets.
+        self.browser.getControl(name="form.special_application").value = [
+            'clearance']
+        self.browser.getControl("Save").click()
+        self.browser.getControl("Add online payment ticket").click()
+        self.assertMatches('...Payment ticket created...',
+                           self.browser.contents)
+        self.browser.open(applicant_path)
+        self.assertTrue(
+            '<td>Acceptance Fee</td>' in self.browser.contents)
+        self.assertEqual(len(self.special_applicant.keys()), 2)
         return
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/utils.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/utils.py	(revision 11570)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/utils.py	(revision 11575)
@@ -56,5 +56,5 @@
         payment.p_session = container.year
         payment.amount_auth = 0.0
-        if container.prefix.startswith('special'):
+        if applicant.special:
             if applicant.special_application:
                 fee_name = applicant.special_application + '_fee'
Index: main/waeup.kofa/trunk/src/waeup/kofa/utils/utils.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/utils/utils.py	(revision 11570)
+++ main/waeup.kofa/trunk/src/waeup/kofa/utils/utils.py	(revision 11575)
@@ -159,4 +159,5 @@
     SPECIAL_APP_DICT = {
         'transcript': 'Transcript Fee Payment',
+        'clearance': 'Acceptance Fee',
         }
 
