# Allokerede Timer - Ny Funktionalitet ⏱️ ## Oversigt Den nye funktionalitet i Tilbudgivern gΓΈr det muligt at registrere bΓ₯de **estimerede timer** og **allokerede timer** for hver arbejdsopgave i et projekt. Dette giver bedre projektstyring og sporbarhed. ## Funktioner ### 🎯 Dobbelt Timer Sporing - **Estimerede Timer**: De oprindelige beregnede timer for hver opgave - **Allokerede Timer**: De faktisk tildelte/planlagte timer til opgaven ### πŸ“Š Visuel Opdeling - Side-om-side input felter for estimerede og allokerede timer - Forskellige farver for at skelne mellem de to typer - Automatisk beregning af totaler for begge kategorier ### πŸ’Ύ Database Struktur Nye kolonner tilfΓΈjet til `project_labor` tabellen: - `allocated_hours_breakdown` (LONGTEXT) - JSON struktur med allokerede timer - `special_conditions` (TEXT) - SΓ¦rlige arbejdsforhold ## Hvordan Det Virker ### Frontend (LaborInput.js) ```javascript // Hver arbejdsopgave har nu bΓ₯de estimerede og allokerede timer const workBreakdown = [ { task: 'Forberedelse og opstilling', hours: 8, // Estimeret allocatedHours: 6, // Allokeret description: 'AfdΓ¦kning, vΓ¦rktΓΈj, sikkerhed' } ]; ``` ### Database Struktur ```json // work_breakdown (eksisterende) [ { "task": "Forberedelse og opstilling", "hours": 8, "rate": 580, "cost": 4640, "notes": "AfdΓ¦kning, vΓ¦rktΓΈj, sikkerhed" } ] // allocated_hours_breakdown (ny) [ { "task": "Forberedelse og opstilling", "allocatedHours": 6, "rate": 580, "cost": 3480, "notes": "AfdΓ¦kning, vΓ¦rktΓΈj, sikkerhed" } ] ``` ### API Endpoints **POST** `/api/customer-projects/:projectId/labor` ```json { "laborEntries": [ { "taskDescription": "Forberedelse og opstilling", "estimatedHours": 8, "allocatedHours": 6, "hourlyRate": 580, "notes": "AfdΓ¦kning, vΓ¦rktΓΈj, sikkerhed" } ], "carpenterCount": 2, "specialConditions": "Adgang kun via stige", "totalAllocatedHours": 24 } ``` ## BrugergrΓ¦nsefladen ### Timer Input Sektion ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Antal tΓΈmrere: [2] β”‚ β”‚ Total arbejdstimer (estimeret): [32] β”‚ β”‚ Total allokerede timer: [28] β”‚ β”‚ Timepris (kr): [580] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Arbejdsfordeling ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Forberedelse og opstilling β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚Estimeretβ”‚ β”‚Allokeretβ”‚ β”‚ β”‚ β”‚ [8] β”‚ β”‚ [6] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ [AfdΓ¦kning, vΓ¦rktΓΈj, sikkerhed_______] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Sammendrag ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Total estimerede timer: 32 timer β”‚ β”‚ Total allokerede timer: 28 timer β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ## Fordele ### 🎯 Bedre PlanlΓ¦gning - Sammenlign estimater med faktisk allokering - Identificer over/under-estimering - Forbedre fremtidige estimater ### πŸ“ˆ Projektstyring - Spor afvigelser mellem plan og virkelighed - Juster ressourcer baseret pΓ₯ allokering - Dokumenter sΓ¦rlige forhold ### πŸ’° Økonomisk Kontrol - Separat kostberegning for estimerede vs allokerede timer - Bedre budgetkontrol - Mere prΓ¦cise tilbud til kunder ## CSS Styling ### Nye Klasser - `.hours-inputs` - Container for timer input felter - `.hour-input-group` - Gruppe for Γ©t timer input - `.hours-input.allocated` - Styling for allokerede timer - `.total-row.allocated` - Styling for allokerede totaler ### Farver - **Estimerede timer**: Standard grΓΈn (`#d4edda`) - **Allokerede timer**: BlΓ₯ (`#d1ecf1`) ## Implementering Status ### βœ… FΓ¦rdige Komponenter - Database struktur udvidet - Frontend LaborInput komponent opdateret - Backend API udvidet til at hΓ₯ndtere begge timer typer - CSS styling tilfΓΈjet - Automatisk beregning af totaler ### πŸ”„ Lagret Data - Estimerede timer gemmes i `work_breakdown` - Allokerede timer gemmes i `allocated_hours_breakdown` - SΓ¦rlige forhold gemmes i `special_conditions` ### 🎨 Visuel Design - Side-om-side layout for timer input - Forskellige farver for estimerede vs allokerede - Klarere labels og beskrivelser - Responsive design der fungerer pΓ₯ alle skΓ¦rmstΓΈrrelser ## Migration af Eksisterende Data Eksisterende projekter vil fungere normalt: - `allocatedHours` felter starter tomme - Eksisterende `work_breakdown` forbliver uΓ¦ndret - Bruger kan udfylde allokerede timer efter behov ## Fremtidige Muligheder ### πŸ“Š Rapportering - Sammenlign estimerede vs allokerede timer pΓ₯ tvΓ¦rs af projekter - Identificer mΓΈnstre i afvigelser - Forbedre estimering accuracy ### ⏰ Tidssporing - Integration med time tracking systemer - Faktisk tid brugt vs allokeret tid - Real-time opdateringer under projektet ### πŸ“ˆ Analytics - Dashboard med timer fordeling - Trends i arbejdsfordeling - Performance metrics for teams --- **Status**: βœ… **Implementeret og klar til brug** Den nye funktionalitet er nu fuldt implementeret og giver dig mulighed for at spore bΓ₯de estimerede og allokerede timer for alle arbejdsopgaver i dine projekter!