Gå til innhold

Lagertransaksjoner til bokføring

WorkOrderMaterialVoucherExport er en intern Konti Connect-jobb som genererer bokføringsbilag fra lagertransaksjoner og arbeidsordrelinjer. Adapteren har ingen ekstern destinasjon — den kjører en stored procedure som skriver bilag til ePortal sin egen wv_ExtCache_Voucher-tabell. Bilagene plukkes deretter opp av ERP-integrasjonene (PowerOffice Go, Visma NXT, Visma.net, Visma Business klassisk) for videresending.

Type: Intern motor — kjører stored procedure wv_WorkOrderLine_ExportMaterialToVoucher Modul i ePortal: Konfigureres i Konti Connect, oppdaterer Lager og Arbeidsordre Karakteristisk: Ingen ekstern API; debet-konto velges automatisk per rad basert på prosjektnummerets 3. siffer; støtter stedbasert konto-/R9-overstyring


Hvorfor det er en "integrasjon"

Adapteren er registrert i wv_IntegrationType som WorkOrderMaterialVoucherExport slik at den kan kjøres via Konti Connect-scheduleren med samme overvåkning, logging og varsling som de andre integrasjonene. Den utfører ingen ekstern API-kall — alt skjer i kundens egen database via stored procedure.

Implementasjon: WorkOrderMaterialVoucherAdapter.cs


Hva integrasjonen gjør

Steg Hva
1. Plukk kilderader Arbeidsordrelinjer (wv_WorkOrderLine) eller lagertransaksjoner (wv_Stock_Transactions) — filtrert på dato og maks antall
2. Velg konto per rad Debet-konto bestemmes av prosjektnummerets 3. siffer (eller prefiks 808). Kreditkonto = lagerkortets stoAccount (eller DefaultStockAccount som fallback)
3. Steds-overstyring LocationOverrideJson matcher nøkkelord i beskrivelsen og overstyrer konto/R9
4. Aggregér grouped = slå sammen rader med samme arbeidsordre/avdeling/prosjekt/lager/dato. line = én bilagslinje per kilderad
5. Skriv bilag Bilagsrader genereres i wv_ExtCache_Voucher (samme tabell som NXT, PO Go, Visma.net bruker for videreeksport)

Tilgang

Hvem Hva trengs
Hos kunden Lagermodul aktivert med kontoplan og lagerkort konfigurert
Hos Konti Administrator-tilgang til Konti Connect

Forutsetninger

  • Lagermodul aktivert med korrekt stoAccount på lagerkortene
  • Prosjektnummer-konvensjon avklart (3. siffer = kontogruppe) — se _accountHelp
  • Bokføringsserie (VoucherSerie) opprettet i ePortal
  • Hovedkonti for drift, investering, videresalg satt opp i kontoplanen

Konfigurasjon — feltforklaring

Alle felter ligger i ConfigurationJson. Adapteren har ingen auth-felt (intern jobb).

Felt Type Påkrevd Hva det betyr
SourceMode String Ja (default wv_workorderline) Kilde-tabell. wv_workorderline = arbeidsordrelinjer (uttak knyttet til AO). wv_stock_transactions = lagertransaksjoner (uttak OG varemottak)
GroupingMode String Ja (default grouped) grouped = aggreger like rader til én bilagslinje. line = én bilagslinje per kilderad
VoucherDateMode String Ja (default transactiondate) transactiondate = bruk transaksjons-/uttaksdato. executiondate = bruk kjøringsdato (dagens dato)
VoucherSerie Integer Ja (> 0) Bilagsserienummer i ePortal kontoplan
VoucherType Integer Nei (default 0) Bilagstype-kode (avhenger av kontoplan-oppsett)
OperatingAccountNo Integer Ja (> 0) Debet-konto for drift (prosjekt 3. siffer ≠ 2-5,8 og ikke prefiks 808)
InvestmentAccountNo Integer Ja (> 0) Debet-konto for investering (prosjekt 3. siffer 2-5 ELLER prefiks 808). Overstyres av depDebitAccountInvestment på avdelingen hvis satt
ResaleAccountNo Integer Ja (> 0) Debet-konto for videresalg (prosjekt 3. siffer 8)
PurchaseAccountNo Integer Nei (default 0) Debet-konto for rene varemottak uten arbeidsordre. 0 = av. Krever SourceMode = wv_stock_transactions
DefaultStockNo Integer Nei (default 0) Standard lager-nr som brukes hvis kilderad mangler
DefaultStockAccount Integer Nei (default 0) Fallback kredit-konto hvis lagerkortet ikke har stoAccount
DefaultInvestmentR9 Integer Nei (default 0) R9-dimensjon som settes på alle investeringslinjer. 0 = ingen R9. Overstyres av LocationOverrideJson
LocationOverrideJson JSON-array (string) Nei Stedbasert overstyring per nøkkelord i beskrivelsen. Bytter konto når den er lik matchAccount, og setter R9. For investeringslinjer holder det at nøkkelordet treffer (R9 settes selv uten kontotreff). Format: [{"keyword":"...","matchAccount":1234,"targetAccount":5678,"r9":6520}]
ExcludeReceives Integer (0/1) Nei (default 0) 1 = hopp over rene varemottak (TransactionType=1 uten AO). Materialretur til en AO tas alltid med. 0 = ta med alt
DateFrom String (yyyy-MM-dd) Nei Nedre dato-filter på kilderader. Tom = ingen filter
DateTo String (yyyy-MM-dd) Nei Øvre dato-filter på kilderader. Må være ≥ DateFrom
MaxRows Integer Ja (> 0, default 5000) Maks antall kilderader per kjøring. Resten tas med neste kjøring
SortOrder String Nei (default desc) desc = nyeste rader først. asc = eldste først. Påvirker hvilke rader som tas med når MaxRows nås
CreatedBy Integer Nei (default 0) Bruker-ID stempleet på eksportloggen for sporbarhet. 0 = system
DebugLogging Boolean Nei (default false) Detaljert logging (styres av varslingsrammeverket)

Konto-logikk (oppsummert)

Tilfelle Debet-konto
Prosjekt 3. siffer = 2–5 ELLER starter med 808 InvestmentAccountNo (eller avdelingens depDebitAccountInvestment hvis satt)
Prosjekt 3. siffer = 8 ResaleAccountNo
Alt annet OperatingAccountNo
Rent varemottak uten AO + PurchaseAccountNo > 0 PurchaseAccountNo
Steds-overstyring (LocationOverrideJson) matcher targetAccount (overstyrer alle over)

Kredit-konto = lagerkortets stoAccount, eller DefaultStockAccount hvis mangler.

Eksempel ConfigurationJson:

{
  "SourceMode": "wv_workorderline",
  "GroupingMode": "grouped",
  "VoucherDateMode": "transactiondate",
  "VoucherSerie": 1,
  "VoucherType": 0,
  "DefaultStockNo": 0,
  "DefaultStockAccount": 1460,
  "OperatingAccountNo": 4030,
  "InvestmentAccountNo": 1200,
  "ResaleAccountNo": 4300,
  "PurchaseAccountNo": 0,
  "DefaultInvestmentR9": 0,
  "LocationOverrideJson": "",
  "ExcludeReceives": 0,
  "DateFrom": "",
  "DateTo": "",
  "MaxRows": 5000,
  "SortOrder": "desc",
  "CreatedBy": 0,
  "DebugLogging": false
}

Eksempel LocationOverrideJson:

[
  {"keyword": "treungen", "matchAccount": 1460, "targetAccount": 1450, "r9": 6520},
  {"keyword": "skien", "matchAccount": 1460, "targetAccount": 1455, "r9": 6530}
]

Slik gjør du — oppsett

1. Forbered kontoplan og lagerkort

  • Definer kontonumre for drift, investering, videresalg (eventuelt varemottak)
  • Sjekk at hvert lagerkort har stoAccount satt
  • Avklar prosjektnummer-konvensjonen med kunden (3. siffer-regelen for investering vs. drift)

2. Opprett integrasjon i Konti Connect

  • Innstillinger → Konti Connect → Ny integrasjon
  • Type: Lagertransaksjoner til bokføring (WorkOrderMaterialVoucherExport)
  • Fyll inn obligatoriske felter: VoucherSerie, OperatingAccountNo, InvestmentAccountNo, ResaleAccountNo
  • Sett DefaultStockAccount som fallback
  • Vurder LocationOverrideJson hvis kunden har stedbasert konto-deling
  • Sett scheduler (typisk månedlig eller månedsskifte)
  • Lagre

3. Test første kjøring

  • Sett en testperiode med begrenset MaxRows (f.eks. 50) og DateFrom/DateTo på en historisk periode
  • Bruk Kjør nå
  • Verifiser i kjøringsloggen:
  • Antall behandlet / eksportert / hoppet over
  • VoucherID i Metadata — slå opp i bilagsloggen
  • VoucherLines antall bilagslinjer
  • Sjekk i ERP-integrasjonen som plukker bilag (PO Go / NXT / Visma.net): blir bilaget overført?

Frekvens og volum

  • Stored procedure-timeout: 300 sekunder
  • MaxRows-grensen unngår timeout og lange transaksjoner — kjør hyppigere hvis volumet er stort
  • Typisk: månedlig eller hver natt på rullende vindu
  • Ingen rate limit (intern kjøring)

Sikkerhet

  • Adapteren har ingen credentials — bruker ClientConnectionString fra BaseRepository
  • Bilagene genereres med CreatedBy-stempel for audit
  • Kjøringer er sporbare via BatchID i Metadata
  • Aktørene som plukker bilagene (ERP-integrasjonene) håndterer egen kryptering av sine credentials

Vanlige problemer

SourceMode must be either 'wv_workorderline' or 'wv_stock_transactions'

Stavefeil. Bare disse to verdiene er gyldige.

VoucherSerie is required and must be greater than 0

Sett gyldig bilagsserienummer. Slå opp i ePortal kontoplan hvis usikker.

Investeringsbilag bruker feil konto

Sjekk: - Prosjektnummer-konvensjonen (3. siffer 2–5 eller prefiks 808 → investering) - Avdelingens depDebitAccountInvestment — den overstyrer InvestmentAccountNo hvis satt - Eventuell LocationOverrideJson-treff

Bilag genereres ikke

  • Sjekk MaxRows — for lav?
  • Sjekk DateFrom/DateTo — dekker perioden?
  • Skru på DebugLogging og se SP-meldingen i loggen

Varemottak generer bokføring i drift-kontoen

Hvis du IKKE vil ha varemottak på drift-kontoen: sett PurchaseAccountNo > 0 (for separat konto) eller ExcludeReceives = 1 (for å hoppe over).

Bilag dukker ikke opp i ERP

Adapteren genererer kun bilag lokalt i wv_ExtCache_Voucher. Det er ERP-integrasjonen som plukker derfra og sender videre. Sjekk: - Er den respektive ERP-integrasjonen aktivert? - Står det noe i kjøringsloggen for ERP-integrasjonen? - Har bilaget riktig BatchID til å bli matchet?

VoucherLines = 0 selv om data finnes

Ingen rader passerte alle filtrene. Sjekk dato-filter, MaxRows og at lagerkortene har stoAccount.


Relaterte sider