Index: /main/kofacustom.edopoly/trunk/src/kofacustom/edopoly/students/tests/test_utils.py
===================================================================
--- /main/kofacustom.edopoly/trunk/src/kofacustom/edopoly/students/tests/test_utils.py	(revision 15343)
+++ /main/kofacustom.edopoly/trunk/src/kofacustom/edopoly/students/tests/test_utils.py	(revision 15344)
@@ -36,5 +36,4 @@
         site['configuration'].next_matric_integer_2 = 1
         site['configuration'].next_matric_integer_3 = 1
-        site['configuration'].next_matric_integer_4 = 1
         self.student.matric_number = None
         # nd_ft
@@ -42,4 +41,5 @@
         msg, mnumber = utils.setMatricNumber(self.student)
         self.assertEqual(self.student.matric_number, 'fac1/ND/04/00001')
+        self.assertEqual(site['configuration'].next_matric_integer, 2)
         self.assertEqual(msg, None)
         # hnd_ft
@@ -48,4 +48,5 @@
         msg, mnumber = utils.setMatricNumber(self.student)
         self.assertEqual(self.student.matric_number, 'fac1/HD/04/00001')
+        self.assertEqual(site['configuration'].next_matric_integer_2, 2)
         self.assertEqual(msg, None)
         # nd_pt
@@ -54,4 +55,5 @@
         msg, mnumber = utils.setMatricNumber(self.student)
         self.assertEqual(self.student.matric_number, 'fac1/PT/04/00001')
+        self.assertEqual(site['configuration'].next_matric_integer_3, 2)
         self.assertEqual(msg, None)
         return
Index: /main/kofacustom.edopoly/trunk/src/kofacustom/edopoly/students/utils.py
===================================================================
--- /main/kofacustom.edopoly/trunk/src/kofacustom/edopoly/students/utils.py	(revision 15343)
+++ /main/kofacustom.edopoly/trunk/src/kofacustom/edopoly/students/utils.py	(revision 15344)
@@ -93,24 +93,17 @@
         req_payments_titles = 'ICT and Logbook'
         if len(student['payments']):
-            # All ND and HND part time do not pay LOGBOOK
+            # All ND and HND part time do not pay for LOGBOOK
             if student.current_mode.endswith('_pt'):
                 req_payments = ('ict_entre',)
                 req_payments_titles = 'ICT'
-            # HND2 full time do not pay for SIWES
-            #elif student.current_mode == 'hnd_ft' and student.state == RETURNING:
-            #    req_payments = ('ict_entre', 'logbook_combo')
-            #    req_payments_titles = 'ICT and Logbook'
-            # HND1 full time do not pay both LOGBOOK
-            elif student.current_mode == 'hnd_ft' and student.state == CLEARED:
+            # HND1 and HND2 full time do not pay for LOGBOOK
+            elif student.current_mode == 'hnd_ft' and student.state in (
+                CLEARED, RETURNING):
                 req_payments = ('ict_entre',)
                 req_payments_titles = 'ICT'
-            # ND2 FULL TIME Do not pay LOGBOOK
+            # ND2 FULL TIME do not pay LOGBOOK
             elif student.current_mode == 'nd_ft' and student.state == RETURNING:
                 req_payments = ('ict_entre',)
                 req_payments_titles = 'ICT'
-            # ND1 full time do not pay SIWES
-            #elif student.current_mode == 'nd_ft' and student.state == CLEARED:
-            #    req_payments = ('ict_entre', 'logbook_combo')
-            #    req_payments_titles = 'ICT and Logbook'
             num = 0
             for ticket in student['payments'].values():
@@ -265,4 +258,19 @@
         return _('Matriculation number cannot be set.'), None
 
+
+    def increaseMatricInteger(self, student):
+        """Increase counter for matric numbers.
+        """
+        if student.current_mode == 'nd_ft':
+            grok.getSite()['configuration'].next_matric_integer += 1
+            return
+        elif student.current_mode == 'hnd_ft':
+            grok.getSite()['configuration'].next_matric_integer_2 += 1
+            return
+        elif student.current_mode in ('nd_pt', 'hnd_pt'):
+            grok.getSite()['configuration'].next_matric_integer_3 += 1
+            return
+        return
+
     def getAccommodationDetails(self, student):
         """Determine the accommodation data of a student.
