Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 10279)
@@ -2961,10 +2961,17 @@
     def _set_exporter_values(self):
         # We provide all student exporters, nothing else, yet.
-        # Bursary Officers don't have the general exportData permission
-        # and are only allowed to export bursary data.
+        # Bursary or Department Officers don't have the general exportData 
+        # permission and are only allowed to export bursary or payments
+        # overview data respectively. This is the only place where
+        # waeup.exportBursaryData and waeup.exportPaymentsOverview
+        # are used.
+        exporters = []
         if not checkPermission('waeup.exportData', self.context):
-            self.exporters = [('Bursary Data', 'bursary')]
-            return
-        exporters = []
+            if checkPermission('waeup.exportBursaryData', self.context):
+                exporters += [('Bursary Data', 'bursary')]
+            if checkPermission('waeup.exportPaymentsOverview', self.context):
+                exporters += [('Student Payments Overview', 'paymentsoverview')]
+            self.exporters = exporters
+            return
         for name in EXPORTER_NAMES:
             util = getUtility(ICSVExporter, name=name)
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 10279)
@@ -3183,4 +3183,39 @@
             )
 
+    def test_export_departmet_officers(self):
+        # Create department officer
+        self.app['users'].addUser('mrdepartment', 'mrdepartmentsecret')
+        self.app['users']['mrdepartment'].email = 'mrdepartment@foo.ng'
+        self.app['users']['mrdepartment'].title = 'Carlo Pitter'
+        # Assign local role
+        department = self.app['faculties']['fac1']['dep1']
+        prmlocal = IPrincipalRoleManager(department)
+        prmlocal.assignRoleToPrincipal('waeup.local.DepartmentOfficer', 'mrdepartment')
+        # Login as department officer
+        self.browser.open(self.login_path)
+        self.browser.getControl(name="form.login").value = 'mrdepartment'
+        self.browser.getControl(name="form.password").value = 'mrdepartmentsecret'
+        self.browser.getControl("Login").click()
+        self.assertMatches('...You logged in...', self.browser.contents)
+        self.browser.open("http://localhost/app/faculties/fac1/dep1")
+        self.browser.getLink("Export student data").click()
+        self.browser.getControl("Configure new export").click()
+        # Only the paymentsoverview exporter is available for department officers
+        self.assertFalse('<option value="students">' in self.browser.contents)
+        self.assertTrue(
+            '<option value="paymentsoverview">' in self.browser.contents)
+        self.browser.getControl(name="exporter").value = ['paymentsoverview']
+        self.browser.getControl(name="session").value = ['2004']
+        self.browser.getControl(name="level").value = ['100']
+        self.browser.getControl("Create CSV file").click()
+        self.assertTrue('Export started' in self.browser.contents)
+        # Thew job can be discarded
+        self.assertEqual(len(self.app['datacenter'].running_exports), 1)
+        #job_id = self.app['datacenter'].running_exports[0][0]
+        job_id = self.wait_for_export_job_completed()
+        self.browser.open("http://localhost/app/faculties/fac1/dep1/exports")
+        self.browser.getControl("Discard").click()
+        self.assertEqual(len(self.app['datacenter'].running_exports), 0)
+
     def test_export_bursary_officers(self):
         # Create bursary officer
