diff --git a/app/timetracking/backend/order_service.py b/app/timetracking/backend/order_service.py index ad541b5..01dbae6 100644 --- a/app/timetracking/backend/order_service.py +++ b/app/timetracking/backend/order_service.py @@ -127,6 +127,7 @@ class OrderService: if case_id not in case_groups: case_groups[case_id] = { 'case_vtiger_id': time_entry.get('case_vtiger_id'), + 'case_title': time_entry.get('case_title'), # Case titel fra vTiger 'contact_name': time_entry.get('contact_name'), 'worked_date': time_entry.get('worked_date'), # Seneste dato 'is_travel': False, # Marker hvis nogen entry er rejse @@ -172,30 +173,33 @@ class OrderService: # Take last 4 digits case_number = f"CC{vtiger_parts[1][-4:]}" - # Brug tidsregistreringers beskrivelser som titel (filter bort dato-mønstre) - import re - case_title = "Ingen beskrivelse" - if group['descriptions']: - # Fjern "X m" og "X t" mønstre (måneder/timer fra dato format) - clean_descriptions = [] - for desc in group['descriptions']: - # Fjern mønstre som "12 m", "2 t", "/ 12 m /", etc. - cleaned = re.sub(r'[/\s]*\d+\s*[mt]\s*[/\s]*', ' ', desc, flags=re.IGNORECASE).strip() - # Fjern ekstra whitespace - cleaned = re.sub(r'\s+', ' ', cleaned).strip() - # Fjern tomme strenge eller bare punktum/komma/bindestreg - if cleaned and cleaned not in [',', '.', '-', '/', '']: - clean_descriptions.append(cleaned) - - if clean_descriptions: - unique_descriptions = list(set(clean_descriptions)) - if len(unique_descriptions) == 1: - case_title = unique_descriptions[0] - else: - # Hvis forskellige, join dem - case_title = ", ".join(unique_descriptions[:3]) # Max 3 for ikke at blive for lang - if len(unique_descriptions) > 3: - case_title += "..." + # Brug case titel fra vTiger (fallback til time entry beskrivelser) + case_title = group.get('case_title') or "Ingen beskrivelse" + + # Hvis case titel er tom eller generisk, brug time entry beskrivelser + if not case_title or case_title.lower() in ['none', 'ingen beskrivelse', '']: + import re + if group['descriptions']: + # Fjern "X m" og "X t" mønstre (måneder/timer fra dato format) + clean_descriptions = [] + for desc in group['descriptions']: + # Fjern mønstre som "12 m", "2 t", "/ 12 m /", etc. + cleaned = re.sub(r'[/\s]*\d+\s*[mt]\s*[/\s]*', ' ', desc, flags=re.IGNORECASE).strip() + # Fjern ekstra whitespace + cleaned = re.sub(r'\s+', ' ', cleaned).strip() + # Fjern tomme strenge eller bare punktum/komma/bindestreg + if cleaned and cleaned not in [',', '.', '-', '/', '']: + clean_descriptions.append(cleaned) + + if clean_descriptions: + unique_descriptions = list(set(clean_descriptions)) + if len(unique_descriptions) == 1: + case_title = unique_descriptions[0] + else: + # Hvis forskellige, join dem + case_title = ", ".join(unique_descriptions[:3]) # Max 3 for ikke at blive for lang + if len(unique_descriptions) > 3: + case_title += "..." # Build description med case nummer prefix if case_number: