Index: main/waeup.kofa/trunk/CHANGES.txt
===================================================================
--- main/waeup.kofa/trunk/CHANGES.txt	(revision 12895)
+++ main/waeup.kofa/trunk/CHANGES.txt	(revision 12896)
@@ -5,15 +5,18 @@
 =======================
 
+* Add `StudentsUtils.increaseMatricInteger` method which allows to use various
+  matric number counters when computing the matric number.
+
 * Bypass school fee payment activation code creation if student is allowed
   to proceed to next session.
 
-* Convert level into a schema field to be consistent with the documentation.
-
-* Rename classes StudentPaymentsExporter and BedTicketsExporter to be
+* Convert `level` into a schema field to be consistent with the documentation.
+
+* Rename classes `StudentPaymentsExporter` and `BedTicketsExporter` to be
   in accordance with other exporter names.
 
-* Add ReportsManager role.
-
-* Do not automatically allow ImportManagers to import user data.
+* Add `ReportsManager` role.
+
+* Do not automatically allow import managers to import user data.
 
 * Skip empty rows produced by spreadsheet software.
@@ -21,8 +24,8 @@
 * Add components to  configure a student export jobs in faculties.
 
-* StudentOnlinePaymentProcessor: Raise DuplicationError if payment
-  (in state paid) with same p_session and p_category exists.
-
-* Add new payment state 'waived'. This state can only be set by import
+* `StudentOnlinePaymentProcessor` : Raise `DuplicationError` if payment
+  (in state ``paid``) with same `p_session` and `p_category` exists.
+
+* Add new payment state ``waived``. This state can only be set by import
   and is only used for the payments overview exporter to
   mark sessions with waived fees.
@@ -33,5 +36,5 @@
 * Student statistic can now be broken down by faculties or by departments.
 
-* Check if p_id exists in payments_catalog when importing payment tickets in
+* Check if `p_id` exists in payments catalog when importing payment tickets in
   create mode.
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 12895)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 12896)
@@ -516,5 +516,20 @@
         return None, payment
 
+    def increaseMatricInteger(self, student):
+        """Increase counter for matric numbers.
+
+        This counter can be a centrally stored attribute or an attribute of 
+        faculties, departments or certificates. In the base package the counter
+        is as an attribute of the site configuration object.
+        """
+        grok.getSite()['configuration'].next_matric_integer += 1
+        return
+
     def constructMatricNumber(self, student):
+        """Fetch the matric number counter which fits the student and
+        construct the new matric number of the student.
+
+        In the base package the counter value is returned.
+        """
         next_integer = grok.getSite()['configuration'].next_matric_integer
         if next_integer == 0:
@@ -526,17 +541,15 @@
 
         If the student's matric number is unset a new matric number is
-        constructed using the next_matric_integer attribute of
-        the site configuration container and according to the
-        matriculation number construction rules defined in the
-        constructMatricNumber method. The new matric number is set,
-        the students catalog updated and next_matric_integer
-        increased by one.
+        constructed according to the matriculation number construction rules
+        defined in the constructMatricNumber method. The new matric number is 
+        set, the students catalog updated. The corresponding matric number
+        counter is increased by one.
 
         This method is tested but not used in the base package. It can
         be used in custom packages by adding respective views
-        and by customizing constructMatricNumber according to the
-        university's matriculation number construction rules.
-
-        The method can be disabled by setting next_matric_integer to zero.
+        and by customizing increaseMatricInteger and constructMatricNumber
+        according to the university's matriculation number construction rules.
+
+        The method can be disabled by setting the counter to zero.
         """
         if student.matric_number is not None:
@@ -552,5 +565,5 @@
             return _('Matriculation number exists.'), None
         notify(grok.ObjectModifiedEvent(student))
-        grok.getSite()['configuration'].next_matric_integer += 1
+        self.increaseMatricInteger(student)
         return None, matric_number
 
