Vis case titel fra vTiger i fakturalinje beskrivelse

This commit is contained in:
Christian 2026-01-02 15:27:46 +01:00
parent ffbaf6190a
commit 8100432079

View File

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