# DigiPOS — 3 režima rada (PRAVILO)

> **Osnovno pravilo arhitekture.** Svaka funkcija (naročito sinhronizacija, uvoz/izvoz, fiskalizacija, izveštaji) **mora raditi u sva 3 režima**. Uvek proveriti uticaj promene na sva tri.

DigiPOS radi u **tri režima**:

1. **Standalone (nulta instalacija)**
   Radi samostalno, sa **import/export** ulaza i izlaza iz drugih programa po utvrđenim pravilima.
   Baza: ugrađena **SQLite** (`digipos.db`) — bez instalacije baze. Uvoz: DBF (digiesir), transakcija preko fajla (.json/.csv, P17). Izvoz: računi/izveštaji.
   **Bez stalne veze sa ERP-om.** Sa **V-PFR parametrima** (URL, PAK, PFX) može se **instalirati i koristiti kao samostalna kasa na mobilnom telefonu** (Android/iOS, PWA) — bez lokalnog L-PFR-a; veza ka V-PFR preko Wi‑Fi ili mobilnog interneta.

2. **Veza sa ERP-om u cloudu — stalna konekcija**
   Kasа je povezana sa **ERP-om u cloudu** (npr. VPS / digi-knjigovodstvo) i drži **stalnu konekciju**.
   Samo kada **nema veze** (prekid interneta) prelazi na lokalni rad (offline-first), pa se po uspostavljanju veze ponovo sinhronizuje.

3. **Veza sa ERP-om na zahtev**
   Samostalna aplikacija koja **na zahtev** komunicira sa ERP-om (digi-knjigovodstvo.rs / VPS) — **nije stalno online**.
   Sinhronizacija je povremena (kad korisnik / uslov to traži).

## Praktične posledice
- **Baza / drajver:** `config.json` (`db.driver`/`db.host`) bira: SQLite (`digipos.db`) | MySQL (`sokdooco_knjige`, lokalno ili remote) | (cloud) VPS Go+PG. Portabilan SQL — bez `ON DUPLICATE`, `DATE()` radi u oba drajvera.
- **Offline-otpornost:** režim 2 mora da nastavi rad bez interneta; režim 3 ne pretpostavlja stalnu vezu; sync je „računi gore / artikli dole", idempotentan gde treba (`transaction_uid`).
- **Testovi** rade nad izolovanom SQLite (ne diraju živu bazu) — vidi `tests/helpers.js`.

*Kanonski izvor ovog pravila. Referencira se iz ESIR uputstava, `README.md`, `docs/newupgrade.md`, `docs/UPGRADE.md`.*
