Automatstasjoner (CO DataHost)¶
Jobbene rundt de ubemannede automatstasjonene: fakturaimport fra CO DataHost og bokføring av vareuttak til automatene.
Flyt¶
flowchart LR
subgraph faktura["Fakturaimport (-d)"]
DH[CO DataHost API] --> INV[Hent fakturaer<br/>InvoiceNo > vannmerke]
INV --> VB[Bilag serie 8 → Visma]
end
subgraph uttak["Vareuttak til automat (-b)"]
FI[FreeInf2: Gr=12, Val5=0] --> KP[Kostpris fra PRDCMAT]
KP --> VB2[Bilag serie 950 → Visma]
VB2 --> MK[Merk Val5=1]
end
classDef sys fill:#f8d7da,stroke:#b53b46
class DH,INV,VB,FI,KP,VB2,MK sys
sequenceDiagram
autonumber
participant CM as ConnectMonitor
participant DH as CO DataHost
participant DB as Visma
CM->>DB: Les StrFVar DataHost/SistInnlest
CM->>DH: GET invoices?filter=InvoiceNo gt ‹sist›
DH-->>CM: Fakturaer
CM->>DB: CreateVismaVoucher (serie 8)
CM->>DB: UPDATE StrFVar (høyeste fakturanr)
Note over CM,DB: -b: les FreeInf2 (Val5=0) → bilag 950 → sett Val5=1
DataHost-fakturaer (-d)¶
Flyt: CO DataHost REST-API → Visma-bilag.
| Egenskap | Verdi |
|---|---|
| Metode | RunDataHost() (~590–789) |
| Endepunkt | {DataHost_API}{DataHost_ID}/invoices?detaillevel=1&filter=InvoiceNo gt ‹sist›&orderby=InvoiceNo&take=1000 |
| Bilagsserie | DataHost_Serie = 8, tekst «DATAHOST FAKTURAER» |
| Vannmerke | StrFVar DataHost/SistInnlest (Val1 = høyeste fakturanr, Val2 = forrige) |
Hodelinje per faktura:
| Tilfelle | Type | Kontering |
|---|---|---|
| Beløp < 0 (kreditnota) | 12 | Debet bank, kredit factoring |
| Beløp > 0, vanlig | 11 | Debet factoring (187810) |
| Beløp > 0, kunde inneholder «Bankkort» | 1 | Debet bankterminal (Visma_BankTerminalAccount = 1926) |
Produktlinjer: grupperes per (produkt, avdeling, stasjon). Beløp =
enhetspris × antall × (1 + mva%). Mapping:
| DataHost-felt | Visma-oppslag |
|---|---|
Product.PartNo |
Prod.Inf4 (eksternt produktnr) → produkt |
SourceSiteNo |
R10.Inf (DataHost-ID på tanken) → avdeling R1 |
| Mangler avdeling | DataHost_DepOtherStations = 800 |
| Finanskonto | Produktets ProdGr |
Vannmerket oppdateres selv om bilaget feiler
I motsetning til FacToLink-jobbene oppdaterer denne jobben
SistInnlest også når CreateVismaVoucher feiler. Feiler bilaget, må
Val1 settes tilbake (forrige verdi ligger i Val2) før rekjøring —
ellers hoppes fakturaene over.
DataHost kortsalg (-c)¶
RunDataHostCardSales → DataHost_CardSales(datahostID). Importerer kortsalgs-
transaksjoner per DataHost-ID. Kjøres per ekstern system-ID på samme måte som
fakturaimporten (-d).
Tanknivå/peiletall — flyttet¶
-s/-t betyr noe annet i dag
Tidligere dokumentasjon beskrev -s som «DataHost tanknivå (lesing)» og
-t som «DataHost lagerleveranse». Det stemmer ikke med dagens
Options.cs: -s er nå intern lager-til-lager-kostoverføring (se
Kostoverføringer) og -t er en intern test med
utkommentert kall. De gamle DataHost-jobbene RunDataHostStock /
RunDataHostAddStock er kommentert ut i Program.cs.
Henting av tanknivå/peiletall gjøres i dag av --StockGetEOM — se
Tankmåling og peiling.
Vareuttak til automater (-b)¶
RunTankStockTransfer → RunTankTransfer() (+ CreateTankTransVoucher()).
Gjør om ufakturerte interne overføringer i FreeInf2 til et lagerbevegelses-
bilag i Visma (hovedlager → automat).
Steg for steg:
- Utvalg fra
FreeInf2— rader derGr = 12(lagergruppe), tankensR10.Gr10 = 1(automat),Val5 = 0(ubehandlet) og kostpris finnes (CstPr > 0). Hentet pr. rad:PK, dato (Dt1),ProdNo, antall (Val2), tank (R10), avdeling (R10.R1), varegruppe, tanknavn og selskaps-ID (R1.R3). - Kostpris — slås opp i
prdcmat(innkjøps-/kostpris, pristype 1) med en datotoleranse (eksakt dato, periode som omslutter datoen, eller innen 7 dager bakover). Påslaget avhenger av selskap: for enkelte klienter et fast+ 0,12, for andre transporttillegg fra tankensR10.am2. SQL-varianten velges avVBClient(egne varianter for bl.a. 399 og 360) — viktig å vite ved oppsett av nytt selskap. - Bilag (
CreateTankTransVoucher) — bilagsserieTankStock_Serie(950), tekst «VAREUTTAK TIL AUTOMATER», verdidato = første transaksjonsdato. Hver transaksjon gir to linjer:
| Linje | Konto | Avdeling | Beskrivelse |
|---|---|---|---|
| Uttak | TankStock_Debit (4356) |
tankens avdeling (R10.R1) |
«Uttak - ‹tanknavn› ‹måned› - ‹år›» |
| Motpost | TankStock_Credit (4357) |
TankStock_CounterDep (300) |
samme |
Beløp = |antall| × kostpris; referanse = FreeInf2.PK. Bilaget bokføres via
vbs.CreateVismaVoucher().
4. Idempotens/etterbehandling — behandlede rader merkes
UPDATE FreeInf2 SET Val5 = 1, så de hoppes over neste kjøring. Vannmerke
ConnectMonitor/OverføringAutomat (Val1 = sist kjørt) settes. Ingen
e-postvarsling — kun logg (jhlConnectLog.txt).
Konfignøkler (App.config)¶
| Nøkkel | Betydning |
|---|---|
DataHost_API, Datahost_ID, DataHost_User/Pwd |
API-endepunkt og pålogging |
DataHost_Serie, DataHost_Account (1578), DataHost_DepOtherStations |
Bilagsføringen |
Visma_FactoringAccount, Visma_BankTerminalAccount |
Motkontoer |
TankStock_Serie/Debit/Credit/CounterDep |
Vareuttaksbilag |
Feilsøking¶
| Symptom | Sjekk |
|---|---|
| Fakturaer mangler | StrFVar DataHost/SistInnlest vs. faktisk høyeste fakturanr i DataHost |
| Faktura hoppet over etter feil | Sett Val1 tilbake til Val2-verdien og rekjør -d |
| Produktlinje uten konto | Produkt mangler Inf4-mapping eller ProdGr |
| Vareuttak hoper seg opp | Kjør -b; tell FreeInf2 med Gr=12 AND Val5=0 |
Relaterte sider¶
- ConnectMonitor: Oversikt
- Flyt: Lasting → levering → avstemming — hvor
FreeInf2-radene oppstår