Lager-modulen¶
Modul for varelager — produkter, beholdning per lager, varetelling, strekkode-skanning og import av leverandørkataloger. Hovedinngangen er Lageroversikt (/stock/overview), med egne sider for varer, produktregister, salgsmatrise og import.
| Egenskap | Verdi |
|---|---|
| Mobil-vennlig | Ja — kamera-skanning og uttak/mottak fungerer i mobilnettleser |
| Krever lisens | Ja — aktiveres per tenant av Konti |
| Relaterte moduler | Arbeidsordre (kobling fra uttak til AO) |
Tilgang¶
| Hvem | Hva trengs |
|---|---|
| Rolle | Bruker som er tilordnet en UserLevel med tilgang til modul-IDene Stock (28) eller Sales Matrix (29) via wv_Userright. Vakta ActivateService + ModuleGuard håndhever dette på alle ruter. |
| Modul | Stock (moduleId 28) — eller Sales Matrix (moduleId 29) for salgsmatrise-fanen. Begge må være aktivert for tenant i wv_DomainModule. Referanse: stock-routing.module.ts:12-16. |
Sider i modulen¶
Modulen består av disse rutene (alle under /stock/):
| Rute | Side | Hva |
|---|---|---|
/stock/overview |
Lageroversikt | Saldo, bestillingsliste, transaksjoner — startpunkt |
/stock/goods |
Varer | Registrer inn/ut/telling/overføring med strekkode-skanning |
/stock/products |
Produkter | Produktregister med søk, filter og sletting |
/stock/import |
Import | EFO/NELFO produkt- og rabattavtale-import + CSV |
/stock/sales-matrix |
Salgsmatrise | Regler for salgspris per kunde, prosjekt, leverandør |
Referanse: stock.menu.ts:8-46.
Lageroversikt (/stock/overview)¶
Se prosesskartet for Lager for sammenhengen mellom varemottak, uttak, lagertransaksjoner, saldo og varetelling.
Side med tre faner. Toppen viser et lagervalg (nedtrekksmeny med alle definerte lagre), totalverdi for valgt lager (eller alle) og knapper for handlinger.
Handlinger i topp-baren¶
| Knapp | Type | Hva skjer |
|---|---|---|
| Varetelling (nedtrekksmeny) | Vises kun på skrivebord og nettbrett i landskap | Tre valg: Last ned mal, Importer varetelling, Bokfør varetelling |
| Nedskriv varelager | Knapp | Åpner Nedskrivnings-dialog |
| Behandling (nedtrekksmeny) | Vises kun på skrivebord og nettbrett i landskap | Pr nå ett valg: Rekalkuler eksterne uttak — går tilbake i tid og lager lagerbevegelser for arbeidsordrelinjer som kom inn fra integrasjonen uten å bli bokført på lageret |
| KAI: Analyser lager | Knapp (grønn) | Kjører KAI-analyse av minimumsnivåer for valgt lager |
| Oppdater | Knapp | Laster data for aktiv fane på nytt |
Referanse: stock-overview.component.html:14-61.
Fane 1 — Lagersaldo¶
Tabell med kolonnene: Lager, Varenr, Beskrivelse, Minimumsbeholdning (redigerbar, 0–999999,99), Min. bestillingsmengde (redigerbar, 0–999999,99), Saldo, Enhet, Salgspris, Gj.snittlig innkjøpspris og Totalverdi. Saldo og totalverdi summeres i totalrad.
- Minimum og bestillingsmengde redigeres direkte i cellen. Når lagringen går bra, bekreftes den med meldingen «Minimumsbeholdning oppdatert» — eller «Minimumsbestilling oppdatert» for kolonnen Min. bestillingsmengde.
- KAI-varsler (lav saldo, dødt lager, høy verdi, uvanlig aktivitet) vises som et lite varselikon i kolonnen helt til venstre dersom varen har et aktivt varsel.
- Tabellen hentes side for side. Du velger selv om siden skal vise 25, 50, 100 eller 200 rader.
- Eksport til Excel via eksportknappen i tabellen — filnavn
Lagersaldo_<dato>.xlsx.
Referanse: stock-overview.component.ts:153-294 (kolonner) og stock-overview.component.ts:1178-1215 (varselikoner).
Fane 2 — Bestillingsliste¶
Liste over varer der saldo er under minimumsnivået. Viser leverandør, leverandørreferanse, EAN, saldo, minimum, foreslått bestillingsmengde og estimert kostnad.
- Eksport til Excel via eksportknappen i tabellen — filnavn
Bestillingsliste_<dato>.xlsx. - Hvis ingen varer er under minimum, vises informasjonsmeldingen «Alle produkter har nok på lager. Ingen bestilling nødvendig.»
Referanse: stock-overview.component.ts:299-395.
Fane 3 — Lagertransaksjoner¶
Historikk over alle bevegelser. Filter: transaksjonstype (Inngående / Utgående / Varetelling / Overføring) + dato-fra og dato-til.
- Standard dato-vindu: fra 30 dager tilbake. Til-datoen settes til i morgen, slik at hele dagen i dag kommer med.
- Validering: er fra-dato etter til-dato, vises meldingen «Ugyldig datoperiode: Fra-dato må være før til-dato». Er vinduet over 365 dager, vises advarselen «Advarsel: Datoperiode er over ett år. Dette kan ta tid å laste».
- Kolonner inkluderer: dato, type, varenr, beskrivelse, lager, antall, forventet/faktisk/differanse (for telling), arbeidsordre-nr, kommentar, opprettet av.
- Eksport til Excel — filnavn
Lagertransaksjoner_<dato>.xlsx.
Referanse: stock-overview.component.ts:544-707.
Nedskriv varelager¶
Åpnes med Nedskriv varelager-knappen i toppen. Dialog med felt:
| Felt | Standard | Validering |
|---|---|---|
| Bilagsdato | I dag | Påkrevd |
| Bilagsserie | 1 |
Påkrevd, min 1 |
| Varenr | (tomt = alle) | Valgfritt — filtrerer hvilke varer som nedskrives |
| Lager | (tomt = alle) | Valgfritt — filtrerer per lager |
| Opprett bilag | Avkrysset | Hvis avkrysset opprettes regnskapsbilag for nedskrivningen |
Etter bekreftelse vises meldingen «Nedskrivning utført: X produkter, Y kr». Ble det opprettet bilag, føyes «Bilag nr N opprettet» til.
Referanse: writedown-dialog.component.ts:24-32 og stock-overview.component.ts:822-869.
Varetelling¶
Tre måter å gjøre telling på, alle tilgjengelig fra nedtrekksmenyen Varetelling:
Last ned mal¶
Last ned Excel-mal for varetelling. Filnavn: Varetelling_Mal_<dato>.xlsx. Forventede kolonner: A=ProductNo, B=Description, C=Category, D=CountedQty, E=UnitCost, F=MinStock, G=MinOrderQty, H=CountDate, I=Comment.
Referanse: stock-overview.component.ts:1523-1549.
Importer varetelling (fra Excel)¶
Krever at et lager er valgt i nedtrekksmenyen øverst — uten dette vises feilmeldingen «Velg lagersted først».
- Velg
.xlsx-fil - Radene kontrolleres, og du får tilbake antall nye produkter, eksisterende produkter, advarsler og duplikater
- En bred forhåndsvisning åpnes
- Du bekrefter, og tellingen utføres samlet
- Meldingen «Import utført: X produkter opprettet, Y balanser oppdatert» vises. Feiler noen rader, listes de opp med radnummer
- Importen får en transaksjons-ID som lagres for økten, slik at den i prinsippet kan angres. Det finnes ingen angre-knapp i grensesnittet i dag — se Gjennomføre lagertelling
Referanse: stock-overview.component.ts:1251-1592.
Bokfør varetelling¶
Åpner en dialog som finner varetellinger med avvik i valgt periode og oppretter regnskapsbilag for differansene. Bilagsdato og -serie angis i dialogen. Tellingene behandles én om gangen og oppsummeres til slutt.
Referanse: stock-overview.component.ts:874-958.
KAI: Analyser minimumsnivå¶
Analyserer forbruksmønster og foreslår nytt minimumsnivå. Analysen kjøres alltid med de samme innstillingene — de kan ikke justeres fra grensesnittet:
- Analyse-periode: 6 måneder
- Ekskluderer outliers
- Inkluderer sesongvariasjon
- Filtreres etter valgt lager (eller alle hvis ingen valgt)
- Forbruket beregnes netto per måned: Uttak/retur-bevegelser (type 2) telles med fortegn, så en retur reduserer månedens forbruk i stedet for å øke det; interne uttak (type 5) teller med sin absoluttverdi. Måneder der returer overstiger forbruket (netto null eller negativt i snitt) gir ingen minimumsanbefaling
Dialogen viser en tabell med: varenr, beskrivelse, nåværende saldo, nåværende minimum, foreslått minimum, snitt månedlig forbruk, hvor jevnt forbruket er (Stable / Moderate / High) og begrunnelse. Du velger hvilke forslag som skal lagres, og Bruk valgte (n) lagrer dem på én gang.
Mulige meldinger fra analysen: - «Ingen produkter funnet. Legg til produkter i lageret først.» — ingen varer å analysere - «X produkter ble analysert, men ingen har tilstrekkelig historikk (minimum 3 måneder). Prøv igjen senere når det er mer data.» - «Alle produkter har allerede optimale minimumsantall. Ingen endringer anbefalt.» - «Oppdaterte X produkter med nye minimumsantall» — bekreftelsen etter at du har lagret forslag
Referanse: stock-overview.component.ts:1037-1157.
Behandling: Rekalkuler eksterne uttak¶
En jobb som går gjennom arbeidsordrelinjer som kom inn fra integrasjonen uten at det ble laget en lagertransaksjon, og oppretter transaksjonen i etterkant.
- Alle AO-bevegelser bokføres som Uttak/retur (type 2) med arbeidsordrelinjens antall med fortegn: positivt antall (forbruk) reduserer lagersaldoen, negativt antall (retur) øker den — samme konvensjon som den løpende AO-synkroniseringen. Varemottak (type 1) er forbeholdt ekte varemottak, og AO-bevegelser endrer aldri snittkost
- Linjer der systemet ikke kan avgjøre hvilket lager varen skal tas fra, hoppes over og varsles for seg
- Etter kjøring vises meldingen «Rekalkulering ferdig: X av Y linjer ble synket til lager.» Ble noen linjer hoppet over, kommer i tillegg advarselen «X linjer ble hoppet over fordi lagerinformasjon mangler. Sett StockNo manuelt for å synke disse.» — en administrator må da sette lager på linjene før neste kjøring
Referanse: stock-overview.component.ts:757-801 og StockRepository.cs:2153.
Kjente feilbokføringer før rettelsen (august 2026): frem til STOCK-1 fikk positive forbrukslinjer typen Varemottak, slik at saldoen økte i stedet for å reduseres. Feilbokførte rader (kjennetegn: leverandørreferanse
ExtAPI:og kommentar «Retro-sync from processing action») rettes med reparasjonsskriptetdocs/database_scripts/STOCK-1_repair_retro_sync_transaction_types.sql: det skriver radene om til type 2 med linjens fortegnede antall, og korrigerer saldoen tilsvarende — men kun for varer som aldri har hatt varetelling på lageret. Rader som allerede er eksportert til regnskap korrigeres også, og merkes varig i kommentaren med[REPAIRED-AFTER-EXPORT …]slik at bilagene kan spores opp og kontrolleres/korrigeres manuelt i regnskapssystemet (IsExportedrøres aldri). Varer med varetelling-historikk får bare riktig type og rapporteres for manuell avstemming (om tellingen absorberte feilen kan ikke bevises fra transaksjonsloggen — kontroller mot fysisk telling). Merk at en varetelling ikke endrer snittkost; snittkost besluttes i stedet per vare (verifisert verdi, eller et eksplisitt behold-valg) i en beslutningstabell som skriptet validerer og appliserer i samme transaksjon som saldokorreksjonen — har kostbasis endret seg mellom dry-run og apply (f.eks. et mellomliggende varemottak), stopper skriptet uten endringer og dry-run må kjøres på nytt. Dry-run er standard. Driftsmerknad: apply-kjøringen (ikke dry-run) tar en eksklusiv tabelllås (TABLOCKX) på lagertransaksjonstabellen for hele kjøringens varighet, slik at regnskapseksport ikke kan lese en rad mens skriptet retter den — dette sperrer all tilgang til tabellen (også lesing), så apply må kjøres i et kontrollert vindu uten samtidig regnskapseksport. Denne låsen virker kun når databasen kjører med tradisjonell låsebasert READ COMMITTED: erREAD_COMMITTED_SNAPSHOT(RCSI) slått på for tenanten, leser regnskapseksporten en versjonert øyeblikksbilde uten å vente på noen lås i det hele tatt, og skriptet nekter derfor å kjøre apply (feiler lukket, ingen skriving) inntil RCSI er slått av for kjøringsvinduet — sperren er ubetinget, så det holder ikke å stoppe regnskapseksporten mens RCSI fortsatt er på.
Varer-siden (/stock/goods) — registrer bevegelse med skanning¶
Brukes til å registrere inn-/utgang, telling og overføring. Brukeren velger transaksjonstype og lager, søker etter vare eller skanner strekkode.
| Felt / valg | Detaljer |
|---|---|
| Transaksjonstype | Varemottak, Uttak/retur, Varetelling, Overføring og Internt uttak. Påkrevd ved lagring. Internt uttak er skjult i grensesnittet. |
| Lager | Påkrevd. Nettleseren husker lageret du valgte sist. |
| Til-lager | Vises kun ved overføring, og er da påkrevd. |
| Arbeidsordre | Kobler bevegelsen til en arbeidsordre. Påkrevd ved uttak/retur. |
| Strekkode-skanning | Mobilkamera i nettleseren. Støtter CODE_128, EAN_13, EAN_8, UPC_A, UPC_E, CODE_39, ITF og QR-kode. Nettleseren husker hvilket kamera du brukte sist. |
| Søk | Minst 2 tegn. Søket starter først når du har holdt opp å skrive i et lite øyeblikk. |
Referanse: stock-goods.component.ts:48-78 og stock-goods.component.ts:88-94.
Produkt-import (/stock/import)¶
Importerer varekataloger og rabattavtaler. Skjema-felt:
| Felt | Standard | Validering |
|---|---|---|
| Filformat | EFONELFO (EFO/NELFO produktfil) |
Påkrevd. Andre valg: EFONELFO_DISCOUNT (rabattavtale), CSV |
| Leverandør | (velges) | Påkrevd |
| Konfigurasjon (mapping) | Valgfritt | Brukes for CSV |
| Oppdater eksisterende | Avkrysset | Hvis avkrysset oppdateres eksisterende varer; ellers hoppes de over |
| Opprett priser | Avkrysset | Oppretter prislinjer fra import |
| Gyldig fra / til | I dag / tomt | Setter prisens gyldighet |
Importen kjører som bakgrunnsjobb. Et banner i toppen viser jobber som ligger i kø eller pågår. Du kan navigere bort og komme tilbake — jobben fortsetter, og banneret lar deg gjenoppta visningen.
Referanse: stock-import.component.ts:60-92 og stock-import.component.ts:127-159.
Konfigurasjon av leverandører og standarder gjøres i Lager-administrasjon.
Salgsmatrise (/stock/sales-matrix)¶
Definerer regler for salgspris. To prismodi:
| Modus | Hva |
|---|---|
| Fast pris | Salgsprisen settes til et fast beløp |
| Påslag på kostpris | Salgsprisen regnes ut som kostpris pluss en påslagsprosent |
Regler kan settes opp per vare, prosjekt, leverandør eller kunde. Siden har en forhåndsvisning som viser hvilken regel som slår inn for en gitt kombinasjon av produkt, kunde og prosjekt.
Referanse: stock-sales-matrix.component.ts:46-80.
Slik gjør du: lagertelling via Excel-import¶
- Åpne Lager → Oversikt
- Velg lager i nedtrekksmenyen øverst (uten dette får du feilmelding)
- Klikk Varetelling → Last ned mal
- Fyll ut mal-filen lokalt (telte antall, evt. kostpris, minimum, bestillingsmengde, dato, kommentar)
- Klikk Varetelling → Importer varetelling og velg fil
- Gå gjennom forhåndsvisningen: nye produkter, eksisterende produkter, advarsler og duplikater
- Klikk Bekreft for å kjøre hele tellingen
- Avslutt med Varetelling → Bokfør varetelling for å bokføre differansene mot regnskap
Vanlige problemer¶
| Problem | Årsak / fiks |
|---|---|
| «Velg lagersted først» ved import av varetelling | Lager er ikke valgt i nedtrekksmenyen øverst. Velg lager før import. |
| «Ugyldig datoperiode: Fra-dato må være før til-dato» på transaksjonsfanen | Fra-dato er etter til-dato. Bytt rekkefølge. |
| «Advarsel: Datoperiode er over ett år. Dette kan ta tid å laste» | Du har valgt mer enn 365 dager. Spørringen kan bli treg. |
| «Minimumsbeholdning må være 0 eller høyere» ved redigering i tabellen | Du skrev inn et negativt tall. Er tallet over 999999,99, får du i stedet «Minimumsbeholdning kan ikke overstige 999999.99». |
| Rekalkuler eksterne uttak — «X linjer ble hoppet over fordi lagerinformasjon mangler» | Arbeidsordrelinjene fra integrasjonen mangler lager, typisk fordi varen finnes på flere lagre. En administrator må sette lager på linjene før neste kjøring. |
| Importjobben fortsetter ikke etter at du har lastet siden på nytt | Banneret skal vise jobber som er i kø eller pågår. Vises det ikke, sjekk om jobben har feilet i loggen for bakgrunnsjobber. |
| KAI: «ingen har tilstrekkelig historikk» | Lageret har for kort historikk til analyse. Vent til varene har minst 3 måneder med transaksjoner. |
Se også feilsøking for Lager-modulen.
Arbeidsprosesser¶
| Prosess | For hvem |
|---|---|
| Vareoppslag | Ansatt |
| Lagertelling | Ansatt + Leder |
| Registrere uttak | Ansatt |
| Strekkode-mottak | Ansatt |
| Lagerstatus-rapport | Administrator |
Relaterte innstillinger¶
Konfigurasjon ligger under Innstillinger → Arbeidsordre og lager:
- Lager-administrasjon — lager-spesifikk konfigurasjon, leverandører, import-mapping
- Arbeidsordre-innstillinger — inkluderer varekategorier
Relaterte sider¶
- Arbeidsordre — uttak fra lager på arbeidsordre
- KAI-modulen — analysemotor som driver minimum-forslagene




