Fix: Fjern dato-mønstre fra fakturalinjer + vis oprunding i minutter
This commit is contained in:
parent
279c304154
commit
acc89d9f09
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user