Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/applicant.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/applicant.py	(revision 13967)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/applicant.py	(revision 13968)
@@ -41,4 +41,5 @@
     IApplicant, IApplicantEdit, ISpecialApplicant)
 from waeup.kofa.applicants.workflow import application_states_dict
+from waeup.kofa.applicants.payment import ApplicantOnlinePayment
 
 def search(query=None, searchtype=None, view=None):
@@ -71,4 +72,10 @@
         self.applicant_id = None
         return
+
+    @property
+    def payments(self):
+        payments = [value for value in self.values()
+            if isinstance(value, ApplicantOnlinePayment)]
+        return payments
 
     def writeLogMessage(self, view, message):
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/applicantdisplaypage.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/applicantdisplaypage.pt	(revision 13967)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/applicantdisplaypage.pt	(revision 13968)
@@ -54,5 +54,5 @@
     </thead>
     <tbody>
-      <tr tal:repeat="value context/values">
+      <tr tal:repeat="value context/payments">
         <td> <a tal:attributes="href python:view.url(value)">
         <span tal:content="value/p_id">PID</span></a></td>
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/applicanteditpage.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/applicanteditpage.pt	(revision 13967)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser_templates/applicanteditpage.pt	(revision 13968)
@@ -106,5 +106,5 @@
       </thead>
       <tbody>
-        <tr tal:repeat="cl context/values">
+        <tr tal:repeat="cl context/payments">
            <td>
             <input type="checkbox"
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/export.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/export.py	(revision 13967)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/export.py	(revision 13968)
@@ -201,5 +201,5 @@
         payments = []
         for applicant in used:
-            for payment in applicant.values():
+            for payment in applicant.payments:
                 if payment.p_state == 'paid':
                     payments.append(payment)
@@ -215,5 +215,5 @@
         payments = []
         for applicant in used:
-            for payment in applicant.values():
+            for payment in applicant.payments:
                 if payment.p_state == 'paid':
                     payments.append(payment)
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_applicant.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_applicant.py	(revision 13967)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_applicant.py	(revision 13968)
@@ -34,4 +34,5 @@
     )
 from waeup.kofa.applicants.interfaces import IApplicant
+from waeup.kofa.applicants.payment import ApplicantOnlinePayment
 from waeup.kofa.testing import FunctionalTestCase, FunctionalLayer
 
@@ -205,4 +206,14 @@
         return
 
+    def test_payments(self):
+        payment = ApplicantOnlinePayment()
+        no_payment = object()
+        self.applicant['pid'] = payment
+        self.applicant['nopid'] = no_payment
+        self.assertEqual(len(self.applicant.values()),2)
+        self.assertEqual(len(self.applicant.payments),1)
+        self.assertEqual(self.applicant.payments[0],payment)
+        return
+
 class ApplicantFactoryTest(FunctionalTestCase):
 
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 13967)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 13968)
@@ -1079,5 +1079,5 @@
         self.assertEqual(len(self.special_applicant.keys()), 1)
         # The applicant's workflow state is paid ...
-        self.special_applicant.values()[0].approveApplicantPayment()
+        self.special_applicant.payments[0].approveApplicantPayment()
         self.assertEqual(self.special_applicant.state, 'paid')
         self.browser.open(applicant_path + '/edit')
@@ -1094,5 +1094,5 @@
         self.assertEqual(len(self.special_applicant.keys()), 2)
         # Second payment can also be approved wthout error message
-        flashtype, msg, log = self.special_applicant.values()[1].approveApplicantPayment()
+        flashtype, msg, log = self.special_applicant.payments[1].approveApplicantPayment()
         self.assertEqual(flashtype, 'success')
         self.assertEqual(msg, 'Payment approved')
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_export.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_export.py	(revision 13967)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_export.py	(revision 13968)
@@ -283,5 +283,5 @@
         applicant = self.setup_applicant(self.applicant)
         exporter = ApplicantPaymentExporter()
-        exporter.export(applicant.values(), self.outfile)
+        exporter.export(applicant.payments, self.outfile)
         result = open(self.outfile, 'rb').read()
         cdate = str('%s#' % self.applicant['p120'].creation_date)
