NEXA Forecourt Controller — DOMS PSS5000 integracija
Modul za povezivanje DOMS PSS5000 forecourt sistema sa NEXA POS i ERP platformom. Omogućava praćenje stanja pumpi, autorizaciju točenja, preuzimanje transakcija goriva i njihovu dalju obradu kroz POS, skladište, fiskalizaciju i izvještavanje.
Problem
NEXA POS sistem morao je pouzdano komunicirati sa fizičkom forecourt infrastrukturom benzinske stanice i DOMS PSS5000 kontrolerom. Ključni izazov bio je dobiti stvarno stanje pumpnih mjesta, autorizirati točenje, preuzeti završene transakcije i povezati ih sa ostatkom NEXA ERP sistema. Dodatni problem predstavljala je integracija modernog .NET 8 okruženja sa legacy COM komponentama i specifičnim DOMS objektnim modelom.
Solution
Razvijen je poseban NEXA Forecourt Gateway servis u .NET 8 okruženju koji preko typed COM interopa komunicira sa DOMS PSSPos.Forecourt komponentama. Gateway izolira DOMS komunikaciju od POS aplikacije i prema NEXA POS-u izlaže standardizirani API. Sistem kontinuirano prati stanja pumpnih mjesta, podržava autorizaciju, registrira završene transakcije goriva i priprema ih za naplatu, fiskalizaciju, skladište i centralni ERP.
Result
Uspostavljena je stabilna komunikacija sa DOMS PSS5000 sistemom i uspješno očitavanje pumpnih mjesta i njihovih stvarnih statusa, uključujući aktivno točenje. NEXA sada ima osnovu za kompletan lifecycle forecourt transakcije: od podizanja pištolja i autorizacije do preuzimanja prodaje goriva i povezivanja sa POS-om, skladištem, smjenama, Fleet i Loyalty modulima. Modul je trenutno u aktivnom razvoju i testiranju na stvarnom DOMS okruženju.
Key features
- Praćenje statusa pumpnih mjesta u realnom vremenu
- DOMS PSS5000 FcLogon i upravljanje sesijom
- Autorizacija pumpnog mjesta iz NEXA POS-a
- Detekcija stanja Idle, Authorized i Fuelling
- Preuzimanje završene transakcije goriva
- Identifikacija pumpe, pištolja i vrste goriva
- Preuzimanje količine, cijene i ukupne vrijednosti
- REST komunikacija Forecourt Gateway ↔ NEXA POS
- Reconnect nakon prekida komunikacije
- Recovery nezavršenih i nenaplaćenih transakcija
- Integracija sa skladištem i smanjenjem zaliha
- Promet i izvještavanje po pumpi i pištolju
- Integracija sa Fleet korisnicima i karticama
- Integracija sa Loyalty modulom
- Centralna sinkronizacija sa NEXA ERP sistemom
- Detaljan communication i diagnostic log
Technical decisions
Forecourt komunikacija izdvojena je iz POS aplikacije u zaseban Gateway servis kako POS ne bi direktno zavisio od DOMS COM komponenti. Time je omogućena bolja stabilnost, reconnect logika i buduća podrška za druge forecourt kontrolere.
Za DOMS integraciju korišten je typed COM interop prema PSSPos.Forecourt komponentama, jer se generički pristup COM objektima pokazao nedovoljno pouzdanim za složenije forecourt operacije.
Gateway radi u .NET 8 okruženju, dok NEXA ERP backend koristi Java 21 i Spring Boot. Komunikacija između tih slojeva standardizirana je kroz REST API.
Arhitektura je namjerno podijeljena na:
DOMS PSS5000 → Forecourt Gateway → NEXA POS → NEXA ERP
Na taj način eventualni restart POS aplikacije ne prekida direktno nadzor forecourta, a poslovna logika ERP-a ostaje odvojena od proizvođača fizičke opreme.
Results achieved
- Uspješan FcLogon prema DOMS PSS5000 sistemu
- Autorizirana forecourt sesija sa POS ID 10
- Uspješno očitavanje 10 konfiguriranih fueling pointova
- Pouzdana detekcija aktivnog FPMS_FUELLING statusa
- Implementiran typed COM pristup PSSPos.Forecourt objektima
- Razdvojena DOMS komunikacija od POS korisničke aplikacije
- Implementiran lokalni Forecourt Gateway API
- Uspostavljena osnova za POS → NEXA ERP sinkronizaciju
- Definiran model za skladišno razduženje goriva
- Definiran model izvještavanja po pumpi i pištolju
- Pripremljena integracija sa Fleet i Loyalty modulima
- Modul u aktivnom laboratorijskom i integracijskom testiranju
Forecourt kao veza između fizičke pumpe i ERP sistema
Kod klasičnog ERP sistema najveći dio poslovne logike odvija se između aplikacije, API-ja i baze podataka.
Kod benzinske stanice jedan dio sistema postoji izvan tog digitalnog okruženja.
Fizičke pumpe, pištolji, dispenseri i forecourt kontroler imaju vlastita stanja, događaje i pravila rada. POS ne može jednostavno pretpostaviti šta se trenutno događa na pumpnom mjestu.
Upravo zato je razvijen NEXA Forecourt Controller.
Njegova uloga je da poveže DOMS PSS5000 sa ostatkom NEXA ekosistema i pretvori fizičke događaje sa forecourta u podatke koje POS i ERP mogu razumjeti.
Arhitektura rješenja
Osnovna arhitektura sastoji se od četiri sloja:
DOMS PSS5000 → NEXA Forecourt Gateway → NEXA POS → NEXA ERP
DOMS PSS5000 predstavlja industrijski sloj koji komunicira sa pumpama i dispenserima.
Forecourt Gateway je zaseban .NET 8 servis koji komunicira sa DOMS sistemom i prevodi njegove statuse i operacije u standardizirani NEXA API.
NEXA POS koristi te podatke za rad operatera na benzinskoj stanici, dok NEXA ERP dalje obrađuje promet, zalihe, smjene, Fleet korisnike i izvještavanje.
Takva arhitektura omogućava da specifičnosti DOMS sistema ostanu izolirane od ostatka platforme.
Prvi izazov — komunikacija sa DOMS PSS5000
Jedan od prvih ciljeva bio je uspostaviti pouzdanu sesiju prema DOMS sistemu.
Nakon pravilne inicijalizacije PSSPos.Forecourt objekta i izvršenog FcLogon poziva, sistem je dobio status:
AUTHORIZED
To je omogućilo čitanje svih konfiguriranih fueling pointova.
Tokom testiranja očitano je deset pumpnih mjesta. Većina je bila u stanju Idle, dok je pumpa broj 5 pravilno detektirana u stanju:
FPMS_FUELLING
Iako se radi o relativno jednostavnom rezultatu, taj trenutak je bio ključan jer je pokazao da NEXA dobija stvarno stanje fizičkog forecourta.
Legacy COM i moderni .NET
DOMS PSS5000 nije sistem koji koristi klasični REST ili JSON API.
Integracija se oslanja na COM komponente i vlastiti objektni model.
Prvi pokušaji sa generičkim COM pristupom pokazali su ograničenja, posebno kada je trebalo pouzdano pristupati statusima pumpnih mjesta i složenijim Forecourt operacijama.
Rješenje je bilo korištenje typed COM interopa prema:
PSSPos.Forecourt
Time je komunikacija postala stabilnija i predvidljivija.
To je ujedno jedan od zanimljivijih tehničkih aspekata projekta — spajanje modernog .NET 8 servisa sa starijom industrijskom COM infrastrukturom.
Status pumpe nije samo UI informacija
Kod forecourt sistema svaka promjena stanja predstavlja poslovni događaj.
Idle znači da je pumpa slobodna.
Podignut pištolj može značiti zahtjev za autorizaciju.
Authorized znači da je pumpa dobila dozvolu za točenje.
Fuelling znači da je isporuka goriva u toku.
Nakon završetka pojavljuje se transakcija koju POS mora preuzeti.
Zbog toga Forecourt Gateway mora održavati vlastiti model trenutnog stanja svake pumpe.
Posebno je važno razlikovati stanje koje se trenutno nalazi u COM objektu od stvarnog stanja na fizičkom forecourtu, jer cache može dovesti do kratkotrajnog neslaganja.
Kod benzinske stanice takva razlika nije nevažna — POS mora znati tačno šta se događa prije nego što izvrši sljedeću operaciju.
Od podizanja pištolja do računa
Ciljani lifecycle jedne transakcije izgleda ovako:
Idle → Nozzle lifted → Authorization → Fuelling → Transaction completed → POS → Payment
Kada kupac podigne pištolj, NEXA detektira zahtjev za točenje.
Operater autorizira odgovarajuće pumpno mjesto.
DOMS zatim omogućava isporuku goriva.
Tokom točenja Forecourt Controller prati status pumpe, a nakon završetka preuzima podatke potrebne za POS:
- pumpno mjesto
- pištolj
- vrstu goriva
- količinu
- jediničnu cijenu
- ukupan iznos.
Transakcija se zatim prenosi u NEXA POS i nastavlja kroz standardni proces naplate i fiskalizacije.
Zašto je Gateway odvojen od POS aplikacije
Jedna od važnijih arhitektonskih odluka bila je da Forecourt Gateway radi kao zaseban servis.
Razlog je jednostavan: POS aplikacija može biti zatvorena ili restartovana, ali fizička transakcija goriva i dalje postoji.
Ako je gorivo već natočeno, ta transakcija ne smije nestati zato što se Windows aplikacija ponovo pokrenula.
Zato arhitektura prati jednostavno pravilo:
POS se može restartovati. Gateway se može restartovati. Transakcija goriva ne smije nestati.
To zahtijeva reconnect logiku, ponovno čitanje stanja pumpnih mjesta i recovery postojećih transakcija nakon prekida komunikacije.
Integracija sa NEXA ERP-om
Vrijednost Forecourt Controllera ne završava na tome da POS vidi stanje pumpe.
Nakon završene prodaje podaci ulaze u ostatak NEXA sistema.
Prodaja goriva povezuje se sa:
Fiskalizacijom
Račun prolazi kroz standardni NEXA fiskalni proces.
Skladištem
Prodana količina smanjuje stanje odgovarajućeg goriva.
Smjenama
Promet se veže za operatera i njegovu radnu smjenu.
Izvještajima
Moguće je pratiti promet po pumpi, pištolju, vrsti goriva i smjeni.
Fleet modulom
Poslovni korisnici mogu koristiti kartice, limite, dozvoljene vrste goriva i ugovorene uslove.
Loyalty modulom
Kupovina goriva može učestvovati u programu bodovanja i popusta.
Time jedna fizička isporuka goriva postaje kompletna ERP transakcija.
Razvoj u stvarnom okruženju
Forecourt integraciju nije moguće u potpunosti razvijati samo kroz simulaciju.
Određeni problemi postaju vidljivi tek kada stvarna pumpa promijeni stanje, kada se podigne pištolj ili kada dođe do prekida komunikacije sa PSS kontrolerom.
Zbog toga se razvoj odvija kroz više nivoa:
Development → laboratorijski PSS → POS integracija → testni forecourt → produkcijska stanica
Svaki nivo otkriva novu grupu problema.
Upravo kombinacija softvera, mrežne komunikacije i industrijske opreme čini ovaj modul jednim od tehnički zahtjevnijih dijelova NEXA platforme.
Dalji razvoj
Sljedeće faze uključuju kompletiranje autorizacije i transaction lifecycle-a, automatizirano skladišno razduženje, napredni recovery mehanizam, promet po pumpi i pištolju, Fleet i Loyalty integraciju te centralni nadzor više benzinskih stanica.
Cilj nije samo napraviti komunikacijski driver za DOMS.
Cilj je napraviti univerzalni forecourt sloj unutar NEXA platforme koji će u budućnosti omogućiti integraciju različitih sistema benzinskih stanica bez promjene osnovne POS i ERP arhitekture.
Zaključak
NEXA Forecourt Controller predstavlja vezu između industrijske infrastrukture benzinske stanice i modernog poslovnog informacijskog sistema.
Od jednog FcLogon poziva i prvog pročitanog FPMS_FUELLING statusa, projekt se razvija prema kompletnom sistemu koji prati transakciju od fizičkog točenja goriva do POS naplate, skladišta i centralnog ERP izvještaja.
Upravo ta integracija fizičkih uređaja, industrijskog protokola i poslovne logike najbolje pokazuje smjer u kojem se razvija NEXA platforma.