Gå til innhold

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)

RunDataHostCardSalesDataHost_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)

RunTankStockTransferRunTankTransfer() (+ CreateTankTransVoucher()). Gjør om ufakturerte interne overføringer i FreeInf2 til et lagerbevegelses- bilag i Visma (hovedlager → automat).

Steg for steg:

  1. Utvalg fra FreeInf2 — rader der Gr = 12 (lagergruppe), tankens R10.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).
  2. 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 tankens R10.am2. SQL-varianten velges av VBClient (egne varianter for bl.a. 399 og 360) — viktig å vite ved oppsett av nytt selskap.
  3. Bilag (CreateTankTransVoucher) — bilagsserie TankStock_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