Fix: Fjern dato-mønstre fra fakturalinjer + vis oprunding i minutter

This commit is contained in:
Christian 2026-01-02 15:12:05 +01:00
parent 279c304154
commit acc89d9f09

View File

@ -157,6 +157,13 @@ class OrderService:
for entry in group['entries']
)
# Check if any entries were rounded
original_hours = sum(
Decimal(str(entry['original_hours']))
for entry in group['entries']
)
was_rounded = (case_hours != original_hours)
# Extract case number from vtiger_id (format: 39x42930 -> CC2930)
case_number = ""
if group['case_vtiger_id']:
@ -165,12 +172,23 @@ class OrderService:
# Take last 4 digits
case_number = f"CC{vtiger_parts[1][-4:]}"
# Brug tidsregistreringers beskrivelser som titel
# Tag første beskrivelse, eller alle hvis de er forskellige
# Brug tidsregistreringers beskrivelser som titel (filter bort dato-mønstre)
import re
case_title = "Ingen beskrivelse"
if group['descriptions']:
# Hvis alle beskrivelser er ens, brug kun én
unique_descriptions = list(set(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:
@ -185,6 +203,12 @@ class OrderService:
else:
description = case_title
# Tilføj oprundingsinfo hvis relevant (vis i minutter for klarhed)
if was_rounded:
orig_minutes = int(original_hours * 60)
approved_minutes = int(case_hours * 60)
description += f" (oprundet {orig_minutes} min → {approved_minutes} min)"
# Calculate line total
line_total = case_hours * hourly_rate