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']
|
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)
|
# Extract case number from vtiger_id (format: 39x42930 -> CC2930)
|
||||||
case_number = ""
|
case_number = ""
|
||||||
if group['case_vtiger_id']:
|
if group['case_vtiger_id']:
|
||||||
@ -165,12 +172,23 @@ 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
|
# Brug tidsregistreringers beskrivelser som titel (filter bort dato-mønstre)
|
||||||
# Tag første beskrivelse, eller alle hvis de er forskellige
|
import re
|
||||||
case_title = "Ingen beskrivelse"
|
case_title = "Ingen beskrivelse"
|
||||||
if group['descriptions']:
|
if group['descriptions']:
|
||||||
# Hvis alle beskrivelser er ens, brug kun én
|
# Fjern "X m" og "X t" mønstre (måneder/timer fra dato format)
|
||||||
unique_descriptions = list(set(group['descriptions']))
|
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:
|
if len(unique_descriptions) == 1:
|
||||||
case_title = unique_descriptions[0]
|
case_title = unique_descriptions[0]
|
||||||
else:
|
else:
|
||||||
@ -185,6 +203,12 @@ class OrderService:
|
|||||||
else:
|
else:
|
||||||
description = case_title
|
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
|
# Calculate line total
|
||||||
line_total = case_hours * hourly_rate
|
line_total = case_hours * hourly_rate
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user