EG Retail-import¶
EG Retail er kassesystemet (POS) på de bemannede stasjonene. ConnectMonitor importerer salg, svinn og lagertall derfra inn i Visma Business som bilag.
Konsollen (Program.cs) er bare en tynn utløser — all forretningslogikk ligger
i Visma-business-prosjektet, i klassen
EGAccountingController (jhlVismaAPI.Business.EG, ~887 linjer).
Datakilde: EG sin Azure-database (ikke API)
EG-dataene leses med direkte SQL mot en Azure SQL-database
(AzureSQL_‹selskap›), ikke via REST. Visma-siden skrives via Visma
Business Services (CreateVismaVoucher). To datalag:
SQLRepoAzure (EG/POS) og SQLRepo (Visma).
| Azure-tabell (EG) | Brukes av |
|---|---|
vju_ReportItems (ReportTypeID=1) |
Salg (--egImport / --egDateImport) |
vju_ReportWasteItems (ReportTypeID=4) |
Svinn (--egWasteReport) |
vju_ReportInventoryItems (ReportTypeID=6) |
Telleliste (--egInventoryAdjustment) |
reports, groups |
Metadata + varegruppehierarki |
Flyt (felles mønster)¶
flowchart LR
WM[StrFVar-vannmerke<br/>ConnectMonitor] --> AZ[Les EG Azure-SQL<br/>ReportID > vannmerke + StationID]
AZ --> GRP[Grupper pr dato + varegruppe] --> VAL{Varegruppe finnes i Visma R8?}
VAL -->|nei| NEW[Opprett i R8 + e-postvarsel<br/>«sett konto manuelt»]
VAL -->|ja| BILAG[Bygg bilag - voucher/voucherline]
NEW --> BILAG
BILAG --> SEND[CreateVismaVoucher] --> UPWM[Oppdater vannmerke]
classDef sys fill:#f8d7da,stroke:#b53b46
class AZ,GRP,VAL,NEW,BILAG,SEND,UPWM sys
Felles: les vannmerke → hent EG-rader med ReportID > vannmerke for stasjonen
(StationID) → grupper per dato/varegruppe/hovedgruppe → valider mot Visma R8
(opprett ny varegruppe + varsle hvis ukjent) → bygg bilag → CreateVismaVoucher
→ oppdater vannmerke. Idempotens sikres av ReportID > vannmerke.
Jobbene¶
Salg — --egImport / --egDateImport¶
ProcessReportData("") (alle nye rapporter) eller ProcessReportData(datoer)
(spesifikke datoer). Bygger ett salgsbilag per dato med tre–fire linjetyper per
varegruppe:
| Linje | Konto | Innhold |
|---|---|---|
| Salg | varegruppens inntektskonto (fra R8) |
sum omsetning per varegruppe |
| Varekostnad | 4010 |
beregnet kostpris |
| Lagerverdi | 1410 |
samme kostpris (motpost lager) |
| Motpost | 2998 |
sum salg (legges per datoskifte) |
Kostpris: for ikke-drivstoff (hovedgruppe ≠ 1000) regnes kostpris ut fra
brutto, mva og dekningsgrad; for drivstoff (hovedgruppe = 1000) hentes
historisk snittkost fra Visma. Bilagsserie: EG_VocuherSerie (App.config),
tekst «EG RETAIL IMPORT LINJESTART - CONNECT».
Svinn — --egWasteReport¶
ProcessWasteItems(). Per varegruppe bokføres svinn debet 4610 / kredit
1410 med verdidato satt til siste dag i forrige måned. Bilagsserie
EG_VocuherSerie, tekst «EG RETAIL IMPORT KAST LINJESTART - CONNECT».
Lagerjustering (peiletall) — --egStockAdjustment¶
ProcessStockAdjustment(id) — månedsavslutning per klient-ID (ID-er fra
StrFVar, prefiks StockAdjustment). Sammenligner bokført beholdning mot
peilet/registrert nivå (FreeInf3) og bokfører avviket.
- Stopper hvis peiletall mangler for en varegruppe (e-postvarsel).
- Bilag opprettes suspendert (
Suspended = true) — må godkjennes manuelt i Visma. SerieTankStock_Serie, tekst «VARELAGERJUSTERING - CONNECT». - To linjer per varegruppe med avvik: avvik (antall × kostpris) og
verdijustering, mot kontoene
4010/1410(retning etter fortegn). - Etterpå: oppdater dato-vannmerke + sett
FreeInf3.Dt2(peiletall behandlet).
Telleliste — --egInventoryAdjustment¶
ProcessInventoryItems(). Som lagerjustering, men bruker telleliste fra EG
(vju_ReportInventoryItems) i stedet for peiletall fra Visma. Også suspendert
bilag; tekst «EG RETAIL IMPORT TELLING LINJESTART - CONNECT».
Vannmerker (StrFVar, NmSp='ConnectMonitor')¶
VarNm |
Jobb |
|---|---|
ReportID |
Salg (--egImport/--egDateImport) |
WasteReportID |
Svinn |
StockAdjustment_‹id› |
Lagerjustering (per klient, dato) |
Varelager_EG_justering |
Telleliste |
StationID |
Hvilken EG-stasjon som leses (oppsett, ikke vannmerke) |
Varslinger |
E-postmottakere ved feil/nye varegrupper |
Kontoer og tabeller¶
| Konto | Rolle |
|---|---|
1410 |
Lagerbeholdning |
4010 |
Varekostnad |
4610 |
Svinn |
2998 |
Motpost salg |
varegruppens konto (R8) |
Inntekt per varegruppe |
Visma-tabeller: R8 (varegrupper — konto, mva, dekningsgrad; nye opprettes
automatisk og må få konto satt manuelt), FreeInf3 (peiletall), StrFVar
(vannmerker). App.config: EG_VocuherSerie, TankStock_Serie, VBClient,
connection strings AzureSQL_‹selskap› + VismaSQL.
Teknisk gjeld / ting å vite¶
- Kontoene
1410/4010/4610/2998er kode-konstanter — endres de i Visma, må koden oppdateres. - Lager-/telleliste-bilag opprettes suspendert og må godkjennes manuelt.
--egInventoryAdjustmentsender feil-/rapport-e-post til en hardkodet adresse i stedet forConnect_Notifiers()— bør rettes.- Avdeling (
R1) settes fast i salgsbilaget — verifiser at det er riktig for flere stasjoner. - Ingen SQL-transaksjon rundt «send bilag → oppdater vannmerke»; feil mellom de to stegene kan i prinsippet gi dobbeltimport.