diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py
index d28f5bb41ad67a5e9c2d32fcb89a9195fc2bd626..820770d630ee50daa62c6419e7ba774522e601b4 100644
--- a/aleksis/apps/alsijil/model_extensions.py
+++ b/aleksis/apps/alsijil/model_extensions.py
@@ -93,6 +93,16 @@ def annotate_person_statistics(
     return persons
 
 
+def  annotate_person_statistics_from_documentations(docs: QuerySet[Documentation]) -> QuerySet[Person]:
+    """Annotate a queryset of persons with class register statistics from queryset of documentations."""
+    docs = list(documentations.values_list("pk", flat=True))
+    return annotate_person_statistics(
+        persons,
+        Q(participations__related_documentation__in=docs),
+        Q(new_personal_notes__documentation__in=docs),
+    )
+
+
 def annotate_person_statistics_for_school_term(
     persons: QuerySet[Person], school_term: SchoolTerm, group: Group | None = None
 ) -> QuerySet[Person]:
@@ -103,9 +113,4 @@ def annotate_person_statistics_for_school_term(
     )
     if group:
         documentations.filter(Q(course__groups=group) | Q(course__groups__parent_groups=group))
-    docs = list(documentations.values_list("pk", flat=True))
-    return annotate_person_statistics(
-        persons,
-        Q(participations__related_documentation__in=docs),
-        Q(new_personal_notes__documentation__in=docs),
-    )
+    return annotate_person_statistics_from_documentations(documentations)
diff --git a/aleksis/apps/alsijil/tasks.py b/aleksis/apps/alsijil/tasks.py
index e8cab0065bffe5d610e69fe5e1053aad5cd57138..882bbc1ae20d73a22a8a067c9a5bb32b9409aa33 100644
--- a/aleksis/apps/alsijil/tasks.py
+++ b/aleksis/apps/alsijil/tasks.py
@@ -185,8 +185,15 @@ def generate_full_register_printout(
     group = group[0]
     context["group"] = group
 
+    if include_members_table or include_person_overviews or include_coursebook:
+        documentations = Documentation.objects.filter(
+            Q(datetime_start__date__gte=group.school_term.date_start)
+            & Q(datetime_end__date__lte=group.school_term.date_end)
+            & (Q(course__groups=group) | Q(course__groups__parent_groups=group))
+        )
+
     if include_members_table or include_person_overviews:
-        context["members"] = annotate_person_statistics_for_school_term(group.members.all(), group.school_term, group)
+        context["members"] = annotate_person_statistics_from_documentations(documentations)
 
     if include_person_overviews:
         doc_query_set = Documentation.objects.select_related("subject").prefetch_related("teachers"),
@@ -223,6 +230,11 @@ def generate_full_register_printout(
             ),
         )
 
+    if include_coursebook:
+        context["documentations_by_day"] = {}
+        for day in documentations.dates("datetime_start", "day"):
+            context["documentations_by_day"][day] = documentations.filter(datetime_start__date=day)
+
     # OLD
 
     context["school_term"] = group.school_term
diff --git a/aleksis/apps/alsijil/templates/alsijil/partials/register_coursebook.html b/aleksis/apps/alsijil/templates/alsijil/partials/register_coursebook.html
index 122eedc7567e5ead796e33da356c0d3a4173da30..7931a9675631bbaff3099b32d1e9dd85db6aa5df 100644
--- a/aleksis/apps/alsijil/templates/alsijil/partials/register_coursebook.html
+++ b/aleksis/apps/alsijil/templates/alsijil/partials/register_coursebook.html
@@ -1,4 +1,4 @@
-{% for week in weeks %}
+{% for day, documentations in documentations_by_day %}
   <h4>{% trans 'Week' %} {{ week.week }}: {{ week.0 }}–{{ week.6 }}</h4>
 
   <table class="small-print">