Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 16085)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 16086)
@@ -702,4 +702,43 @@
             mapping = {'a':self.context.display_fullname})
 
+class ExportPDFBaseDataPlusSlip(UtilityView, grok.View):
+    """Deliver a PDF base and studycourse data slip.
+    """
+    grok.context(IStudentStudyCourse)
+    grok.name('basedata_slip.pdf')
+    grok.require('waeup.viewStudent')
+    prefix = 'form'
+
+    omit_fields = (
+        'suspended',
+        'adm_code', 'suspended_comment',
+        'current_level',
+        'flash_notice', 'entry_session',
+        'parents_email')
+
+    form_fields = grok.AutoFields(IStudentStudyCourse).omit('certificate')
+
+    @property
+    def title(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('Current Study Course Data'), 'waeup.kofa',
+            target_language=portal_language)
+
+    @property
+    def label(self):
+        portal_language = getUtility(IKofaUtils).PORTAL_LANGUAGE
+        return translate(_('Base and Study Course Data of'),
+            'waeup.kofa', target_language=portal_language) \
+            + ' %s' % self.context.student.display_fullname
+
+    def render(self):
+        studentview = StudentBasePDFFormPage(self.context.student,
+            self.request, self.omit_fields)
+        students_utils = getUtility(IStudentsUtils)
+        return students_utils.renderPDF(
+            self, 'basedata_slip.pdf',
+            self.context.student, studentview, 
+            omit_fields=self.omit_fields)
+
 class ExportPDFClearanceSlip(grok.View):
     """Deliver a PDF slip of the context.
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 16085)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 16086)
@@ -2618,4 +2618,20 @@
         return
 
+    def test_student_basedata_slip(self):
+        IWorkflowState(self.student).setState('school fee paid')
+        self.browser.open(self.login_path)
+        self.browser.getControl(name="form.login").value = self.student_id
+        self.browser.getControl(name="form.password").value = 'spwd'
+        self.browser.getControl("Login").click()
+        # Students can open base data slip
+        # (no button available in base package)
+        pdf_url = '%s/basedata_slip.pdf' % self.studycourse_path
+        self.browser.open(pdf_url)
+        self.assertEqual(self.browser.headers['Status'], '200 Ok')
+        self.assertEqual(self.browser.headers['Content-Type'], 'application/pdf')
+        path = os.path.join(samples_dir(), 'basedata_slip.pdf')
+        open(path, 'wb').write(self.browser.contents)
+        print "Sample PDF basedata_slip.pdf written to %s" % path
+
     def test_student_clearance(self):
         # Student cant login if their password is not set
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 16085)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 16086)
@@ -149,5 +149,15 @@
         f_text = Paragraph(f_text, ENTRY1_STYLE)
         data_middle.append([f_label,f_text])
-
+    if not 'date_of_birth' in omit_fields:
+        f_label = trans(_('Date of Birth:'), lang)
+        f_label = Paragraph(f_label, ENTRY1_STYLE)
+        date_of_birth = studentview.context.date_of_birth
+        tz = getUtility(IKofaUtils).tzinfo
+        date_of_birth = to_timezone(date_of_birth, tz)
+        if date_of_birth is not None:
+            date_of_birth = date_of_birth.strftime("%d/%m/%Y")
+        f_text = formatted_text(date_of_birth)
+        f_text = Paragraph(f_text, ENTRY1_STYLE)
+        data_middle.append([f_label,f_text])
     if getattr(studentview.context, 'certcode', None):
         if not 'certificate' in omit_fields:
@@ -205,15 +215,4 @@
                 studentview.context, current_level)
             f_text = formatted_text(current_level)
-            f_text = Paragraph(f_text, ENTRY1_STYLE)
-            data_middle.append([f_label,f_text])
-        if not 'date_of_birth' in omit_fields:
-            f_label = trans(_('Date of Birth:'), lang)
-            f_label = Paragraph(f_label, ENTRY1_STYLE)
-            date_of_birth = studentview.context.date_of_birth
-            tz = getUtility(IKofaUtils).tzinfo
-            date_of_birth = to_timezone(date_of_birth, tz)
-            if date_of_birth is not None:
-                date_of_birth = date_of_birth.strftime("%d/%m/%Y")
-            f_text = formatted_text(date_of_birth)
             f_text = Paragraph(f_text, ENTRY1_STYLE)
             data_middle.append([f_label,f_text])
