Flyt: Plukk → levering → fakturagrunnlag¶
Denne siden beskriver hele livsløpet til en bulkordre — fra den dukker opp i appen til fakturagrunnlaget står klart i Visma Business — helt ned til hvilke tabeller og felt som skrives.
Hovedflyt¶
flowchart TD
K1[Ordre opprettes:<br/>app, Visma, EnergiApp eller AutoOrder] --> A
A[Ordre synlig i ordrelisten] --> B{Sjåfør trykker PLUKK}
B --> C[Ordren tildeles sjåføren]
C --> D[Sjåfør åpner ordren<br/>og registrerer levert antall]
D --> E{FERDIGMELD}
E --> F[Volum omregnes til standardliter]
F --> G[Ordre og linjer oppdateres i Visma]
F --> H[Beholdningstransaksjon:<br/>− levert mengde fra bilen]
G --> I{Godkjenningsflyt<br/>aktiv for selskapet?}
I -- Ja --> J[Leder kontrollerer i godkjenningskø]
J --> L[Godkjent: status Klar for fakturering]
I -- Nei --> L
L --> M[Fakturering i Visma Business]
classDef sjafor fill:#cfe2ff,stroke:#3b6db5
classDef leder fill:#fff3cd,stroke:#b59a3b
classDef system fill:#f8d7da,stroke:#b53b46
class B,C,D,E sjafor
class J leder
class F,G,H,L,M system
Blått = sjåfør, gult = leder/godkjenner, rødt = automatikk i systemet.
Tilstander¶
Ordrestatusen lagres i feltet Gr12 på ordren i Visma (Ord-tabellen).
Hvilken kolonne som brukes er konfigurerbar via VismaOrderStatus i API-ets
Web.config — standardoppsettet er Gr12.
stateDiagram-v2
[*] --> Åpen : Ordre opprettet
Åpen --> LevertIBil : FERDIGMELD uten merknader
Åpen --> TilGodkjenning : FERDIGMELD med kommentar /<br/>tilleggsprodukter
Åpen --> ConnectGodkjenning : FERDIGMELD når selskapet<br/>har godkjenningsflyt
TilGodkjenning --> KlarForFaktura : Leder godkjenner
ConnectGodkjenning --> KlarForFaktura : Leder godkjenner
LevertIBil --> KlarForFaktura : Behandles i Visma
KlarForFaktura --> [*] : Fakturert
Ord.Gr12 |
Tilstand | Settes når |
|---|---|---|
0 |
Åpen | Ordren er opprettet, ikke levert |
1 |
Klar for fakturering / godkjent | Ordren er godkjent eller klar for fakturering |
2 |
Levert i bil | Hele ordren levert, ingen merknader, ingen godkjenningsflyt |
3 |
Levert — til godkjenning | Levert med kommentar, internkommentar eller tilleggsprodukter |
4 |
Levert — Connect-godkjenning | Selskapet har godkjenningsflyt aktivert for ordretypen |
9 |
Nullsumordre | Ordresum er 0 (UPDATE Ord SET Gr12 = 9 WHERE OrdSumT = 0) |
Standardverdiene for status ved levering kan overstyres med API-innstillingene
OrderStatusWhenCompleted (standard 2) og OrderStatusWhenCompletedNeedApproval
(standard 3).
Om en ordretype har godkjenningsflyt styres per selskap i Visma-tabellen
StrFVar (NmSp = 'ConnectApp'):
Variabel (StrFVar.VarNm) |
Gjelder | Effekt når Val1 = '1' |
|---|---|---|
GodkjenningOrdre |
Ordinære ordrer | Leverte ordrer går til Connect-godkjenning (Gr12 = 4) |
GodkjenningOrdreBulk |
Bulkordrer (Ord.Gr11 = 4) |
Samme, for bulk |
Samlet overgangstabell¶
| Fra | Handling / vilkår | Til | Utføres av | Teknisk effekt |
|---|---|---|---|---|
| — | Ordre opprettes (app NY ORDRE, Visma, EnergiApp-synk, AutoOrder) | Åpen | Sjåfør / kontor / ConnectMonitor | INSERT i Ord + OrdLn |
| Åpen | PLUKK | Åpen (tildelt) | Sjåfør | POST /User/AssignOrderToDriver → sjåfør-ID lagres på ordren |
| Åpen (tildelt) | FRIGI | Åpen (utildelt) | Sjåfør | POST /User/UnassignOrder → tildeling fjernes |
| Åpen (tildelt) | UTSETT | Åpen, neste dag | Sjåfør | POST /User/MoveOrderToNextDay → leveringsdato +1 dag |
| Åpen (tildelt) | LAGRE (utkast) | Åpen | Sjåfør | SetOrderAsCompleted med DoNotConfirmOrder = true → kun feltoppdatering, ingen statusendring |
| Åpen (tildelt) | FERDIGMELD, hele ordren levert, godkjenningsflyt aktiv | Gr12 = 4 | Sjåfør → system | Se sekvensen under |
| Åpen (tildelt) | FERDIGMELD, med kommentar/tilleggsprodukt | Gr12 = 3 | Sjåfør → system | Se sekvensen under |
| Åpen (tildelt) | FERDIGMELD, uten merknader | Gr12 = 2 | Sjåfør → system | Se sekvensen under |
| Gr12 = 2/3/9 eller 4 | Godkjenning i godkjenningskøen | Gr12 = 1 | Leder/godkjenner | POST /User/OrderApproval |
| Gr12 = 1 | Fakturering | Fakturert | Visma Business | Ordinær Visma-fakturarutine |
Samspill mellom bruker og system¶
sequenceDiagram
autonumber
actor S as Sjåfør
participant App as Connect-app
participant API as Connect API
participant V as jhlVismaAPI
participant DB as Visma Business DB
S->>App: FERDIGMELD + BEKREFT LEVERING
App->>API: POST /User/SetOrderAsCompleted<br/>(OrderNo, linjer, levert antall, temp, GPS)
API->>V: CalculateVol2Std(produkt, antall, temp, bil)
V->>DB: SELECT faktor fra Vol2Std-tabell
DB-->>V: faktor
V-->>API: standardliter
API->>API: Generer leveringskvittering (PDF)<br/>og send e-post til kunde
API->>V: Order.SetOrderAsCompleted(ordre)
V->>V: SetOrderStatus → Gr12 = 2/3/4
V->>DB: UPDATE Actor (GPS-posisjon på leveringssted)
V->>DB: INSERT FreeInf2<br/>(Gr = 20, Val1 = −levert std.liter, R9 = bil)
V->>DB: UPDATE Ord (Gr12, bekreftet lev.dato)<br/>UPDATE OrdLn (FinishNow = levert, lev.dato, pris)
DB-->>V: OK
V-->>API: ResultValue
API-->>App: 200 OK
App-->>S: Ordre ferdigmeldt
Datalag: tabeller og felt¶
Ord (ordrehode)¶
| Felt | Skrives ved | Innhold |
|---|---|---|
Gr12 |
Ferdigmelding / godkjenning | Ordrestatus (se tilstandstabellen) |
Gr11 |
Opprettelse | Intern ordretype (bulk = 4) |
| Bekreftet leveringsdato | Ferdigmelding | Faktisk leveringsdato fra appen |
OrdSumT |
Visma | Ordresum — nullsumordrer settes til Gr12 = 9 |
OrdLn (ordrelinjer)¶
| Felt | Skrives ved | Innhold |
|---|---|---|
FinishNow (levér nå) |
Ferdigmelding | Levert antall i standardliter — utløser Vismas ordinære leverings-/fakturalogikk |
| Bekreftet leveringsdato | Ferdigmelding | Faktisk leveringsdato per linje |
| Pris / rabatt / frakt | Ferdigmelding | Hvis sjåføren har endret pris på linjen |
FreeInf2 (beholdningstransaksjon ved levering)¶
Ved ferdigmelding skrives én rad per levert linje med Gr = 20 (levering fra bil)
og negativt fortegn på mengden. Full kolonnemapping er dokumentert i
Flyt: Lasting → levering → avstemming.
Actor¶
GPS-posisjonen fra leveringen lagres på leveringsaktøren dersom koordinatene er gyldige og avviker nok fra eksisterende posisjon.
Godkjenningskøen (SQL)¶
Køen i appen henter ordrer med denne logikken (forenklet fra koden):
WHERE (ord.Gr12 IN (2,3,9)
AND (SELECT TOP 1 Val1 FROM StrFVar
WHERE NmSp = 'ConnectApp'
AND VarNm = CASE WHEN ord.Gr11 <> 4
THEN 'GodkjenningOrdre'
ELSE 'GodkjenningOrdreBulk' END) = '0')
OR (ord.Gr12 IN (4)
AND (SELECT TOP 1 Val1 FROM StrFVar
WHERE NmSp = 'ConnectApp'
AND VarNm = CASE WHEN ord.Gr11 <> 4
THEN 'GodkjenningOrdre'
ELSE 'GodkjenningOrdreBulk' END) = '1')
Godkjente ordrer vises med ord.Gr12 IN (1).
(Verifisert i jhlVismaAPI OrderController.cs — SetOrderAsCompleted,
SetOrderStatus, godkjenningsspørringen — og
UserController.cs,
Web.config
(VismaOrderStatus, VismaInventoryTable).)
Avvik og reversering¶
| Situasjon | Håndtering | Teknisk kontroll |
|---|---|---|
| Ordre ferdigmeldt med feil antall | Leder avviser/korrigerer i godkjenningskøen før fakturering | Ord.Gr12 fortsatt 2/3/4 — ikke fakturert |
| Ordre ferdigmeldt to ganger (nettverksglipp) | Beholdningstransaksjonen har duplikatvern | IF NOT EXISTS på nøkkelfeltene i FreeInf2 før INSERT |
| Feil produkt levert | Konverter produkt i Beholdning-modulen | Ny FreeInf2-rad flytter mengden mellom produkter |
| GPS manglet ved levering | Posisjon oppdateres ikke; kommentar viser «Sjåfør valgte å ikke sende GPS» | Txt1 i FreeInf2 |
| Nullsumordre dukker opp i kø | Settes automatisk til Gr12 = 9 | UPDATE Ord SET Gr12 = 9 WHERE OrdSumT = 0 |