Gå til innhold

Flyt: Plukk → utfør → faktura (arbeidsordre)

Arbeidsordrens livsløp. Den følger samme status­mekanikk som bulkordre-flyten (Ord.Gr12), men med to forskjeller: timeprodukter føres til lønnsgrunnlaget, og det skrives ikke beholdningstransaksjon for rene timelinjer.

Hovedflyt

flowchart TD
    A[Tekniker: PLUKK] --> B[ÅPNE work-order-details]
    B --> C[Registrer produkter,<br/>timer og materiell]
    C --> D{FERDIGMELD}
    D --> E[Connect API:<br/>SetOrderAsCompleted]
    E --> F[SetOrderStatus → Gr12]
    E --> G[HandleWorkOrderTimesheet<br/>timelinjer → lønnsgrunnlag]
    E --> H[vbs.SetWorkOrderAsCompleted<br/>Ord/OrdLn oppdateres]
    F --> I{Godkjenning?}
    I -- ja --> J[Leder godkjenner]
    I -- nei --> K[Klar for fakturering]
    J --> K

    classDef tek fill:#cfe2ff,stroke:#3b6db5
    classDef sys fill:#f8d7da,stroke:#b53b46
    class A,B,C,D tek
    class E,F,G,H,K sys

Ingen beholdningstransaksjon for timer

I OrderController.SetOrderAsCompleted kjøres AddOrderDeliveredTransaction bare når ordretypen ikke er Workorder. For arbeidsordrer kalles i stedet HandleWorkOrderTimesheet + vbs.SetWorkOrderAsCompleted. Materiell med fysisk uttak føres som vanlig; rene timelinjer påvirker ikke FreeInf2.

Tilstander

Som bulk — statusen ligger i Ord.Gr12:

Gr12 Tilstand Settes når
0 Åpen Arbeidsordren ikke ferdigmeldt
2 Levert i bil Ferdigmeldt uten merknader/godkjenningsflyt
3 Til godkjenning Ferdigmeldt med kommentar/tilleggsprodukter
4 Connect-godkjenning Selskapet har godkjenningsflyt for arbeidsordre
1 Klar for fakturering Godkjent

Overgangstabell

Fra Handling Til Utføres av Teknisk effekt
Åpen PLUKK Åpen (tildelt) Tekniker AssignOrderToDriver
Åpen (tildelt) LAGRE Åpen Tekniker DoNotConfirmOrder = true — kun feltoppdatering
Åpen (tildelt) UTSETT Åpen, neste dag Tekniker Leveringsdato +1
Åpen (tildelt) FERDIGMELD Gr12 2/3/4 Tekniker → system SetOrderStatus + timeføring + OrdLn.NoFin
Gr12 2/3/4 Godkjenning Gr12 = 1 Godkjenner (nivå ≤ 1) OrderApproval

Samspill bruker ↔ system

sequenceDiagram
    autonumber
    actor T as Tekniker
    participant App as Connect-app
    participant API as Connect API
    participant V as jhlVismaAPI
    participant DB as Visma
    T->>App: FERDIGMELD + bekreft
    App->>API: POST /User/SetOrderAsCompleted
    API->>V: Order.SetOrderAsCompleted (Workorder)
    V->>V: SetOrderStatus → Gr12
    V->>V: HandleWorkOrderTimesheet (timelinjer)
    V->>DB: UPDATE Ord (Gr12, bekreftet dato)
    V->>DB: UPDATE OrdLn (NoFin = utført antall, pris)
    DB-->>V: OK
    API-->>App: 200 OK

Datalag

Tabell.felt Innhold
Ord.Gr12 Status (se tilstandstabellen)
OrdLn.NoFin (FinishNow) Utført antall per linje
Timeprodukter Føres til lønnsgrunnlaget via HandleWorkOrderTimesheet (lønnsart fra TimesheetCode)
Actor GPS-posisjon ved ferdigmelding (gyldige koordinater)

Godkjenningskøen bruker samme StrFVar-styring som bulk (GodkjenningOrdre/GodkjenningOrdreBulk).

Avvik og reversering

Situasjon Håndtering
Feil utført antall Leder avviser/korrigerer i godkjenningskøen før fakturering
Timene kom ikke på lønn Linjen var ikke et timeprodukt (mangler TimesheetCode)
Ordre «forsvant» etter ferdigmelding Ligger i godkjenningskøen (/workorder-approval)

(Verifisert i jhlVismaAPI OrderController.SetOrderAsCompleted (Workorder-grenen), work-order-details.ts.)

Relaterte sider