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_ExportMaterialToVoucherModul 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
stoAccountpå 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
stoAccountsatt - 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
DefaultStockAccountsom fallback - Vurder
LocationOverrideJsonhvis 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) ogDateFrom/DateTopå en historisk periode - Bruk Kjør nå
- Verifiser i kjøringsloggen:
- Antall behandlet / eksportert / hoppet over
VoucherIDiMetadata— slå opp i bilagsloggenVoucherLinesantall 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
ClientConnectionStringfraBaseRepository - Bilagene genereres med
CreatedBy-stempel for audit - Kjøringer er sporbare via
BatchIDiMetadata - 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å
DebugLoggingog 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.