BUG FIX:
- Hardcoded layout 21 fejler med 'Layout 21 is historic'
- Tilføjet TIMETRACKING_ECONOMIC_LAYOUT setting (default: 19)
- Layout 19 er standard dansk faktura layout
- Kan nu ændres via .env uden kode-ændringer
ERROR: e-conomic API error - layout: Layout '21' is historic
LØSNING: Brug layout 19 eller andet aktivt layout nummer
BUG FIX:
- execute_query returnerer list, men TModuleOrder(**updated) forventede dict
- TypeError: argument after ** must be a mapping, not list
- Changed til updated[0] for at få første row
- Dette er den SIDSTE execute_query/execute_query_single bug i order_service.py
ERROR: TModuleOrder() argument after ** must be a mapping, not list
→ return TModuleOrder(**updated)
→ updated er list, skal være dict
CRITICAL BUG FIX:
- case_contact, time_date, is_travel manglede i tmodule_order_lines tabel
- Forårsagede SQL fejl ved order creation INSERT
- Opdateret migration 031 til at tilføje alle manglende kolonner
- Applied direkte på production DB
ERROR: column 'case_contact' does not exist
→ INSERT INTO tmodule_order_lines ... case_contact, time_date, is_travel
CRITICAL BUG FIX:
- execute_insert() kalder cursor.fetchone() men INSERT havde ingen RETURNING clause
- Forårsagede '500: no results to fetch' ved order oprettelse
- Tilføjet RETURNING id til:
* tmodule_orders INSERT (linje 222)
* tmodule_order_lines INSERT (linje 240)
- Opdateret database.py docstring til at gøre RETURNING requirement klart
ERROR: ProgrammingError - no results to fetch
→ INSERT INTO tmodule_orders ... VALUES (...)
→ Manglede RETURNING id
BUG FIX:
- _get_hourly_rate() tried to query hourly_rate from customers table
- customers table har ikke hourly_rate kolonne
- Forårsagede '500: no results to fetch' fejl ved order oprettelse
- Changed execute_query_single → execute_query for tmodule_customers check
- Removed hub customer rate check (ikke relevant)
- Falls back til default rate fra settings
ERROR: SELECT hourly_rate FROM customers WHERE id = 512
→ column 'hourly_rate' does not exist
CRITICAL BUG FIX:
- Approval endpoint fejlede fordi is_travel kolonne ikke eksisterede i DB
- Koden referenced is_travel men migration var aldrig kørt
- Tilføjet is_travel (BOOLEAN DEFAULT false)
- Tilføjet hourly_rate (DECIMAL(10,2)) til times tabel
- Testet: Approval virker nu korrekt (entry 1225 godkendt)
RODSAG:
- User kunne ikke godkende timer fordi SQL fejlede med 'column does not exist'
- Dette forklarer hvorfor 0 entries nogensinde er blevet approved i systemet