# DigiPOS — корисничко упутство

**С.О.К. доо Краљево · ЕСИР DigiPOS вер. 2.0 · јул 2026.**

Ово упутство прати **све примере из ЕСИР досијеа** (део 17 / sandbox V-ПФР). За сваки тип рачуна дати су:

1. **слике екрана** (како се ради на каси),
2. **исечак** као у досијеу (термални изглед, 80 mm).

Програм ради у прегледачу на рачунару, таблету или телефону.

**Самостални режим на мобилном телефону:** DigiPOS се **може инсталирати и користити**
као самостална каса на **мобилном телефону** (Android / iOS) — са унетим параметрима
за **В-ПФР**, без локалног Л-ПФР и без ERP-а. На телефону отворите касу у прегледачу
и додајте на почетни екран (PWA). Детаљи: §2 и упутство за инсталацију.

Инсталација / конфигурација: посебна упутства.

---page---

## Садржај

1. Покретање, пријава, улоге (и **„О програму“** — подаци о производу)
2. **Три режима рада касе** (и **самостални на мобилном телефону**)
3. Администрација и пореске стопе (**стопе са ПФР-а**, **увоз/извоз шифарника**)
4. Каса — основни екрани (**измена ставке**, **командна конзола**)
5. **Примери из досијеа (корак по корак + слике)**
6. Ресторан и кухиња
7. Извештаји
8. Преглед слика
8а. **Унос трансакције преко фајла** (сервис за увоз — ЕРП фискализује без касира)
8б. **Достављање рачуна купцу** — папирно и електронски (QR на екрану, мејл)
9. **Забрањене функције — шта ЕСИР никада не ради** (потврда усклађености)

---page---

## 1. Покретање, пријава, улоге

1. Покрените `start.bat` → отворите **http://localhost:3000** (каса) или **/admin**.
2. При пријави апликација **аутоматски проверава везу са L-ПФР / V-ПФР** (10-П2). Ако веза није успостављена, појављује се црвена трака — **клик на обавештење** поново покушава конекцију. Без везе продаја (наплата, аванс, копија, рефундација) се не наставља. Ручно: Админ → **Подешавања** → **Провери LPFR**.

![Подешавања](screenshots/13-admin-podesavanja.png)

![Пријава PIN](screenshots/01-prijava-kasa.png)

| Улога | Наплата | Копија | Реф. | Админ |
|-------|---------|--------|------|-------|
| Конобар | да | да | не | не |
| Касир | да | да | да | не |
| Админ | да | да | да | да |
| Кувар | — | — | — | само Кухиња |

Почетни PIN **1234** — одмах променити.

### 1.1 „О програму“ — подаци о производу

DigiPOS је **софтверски** ЕСИР и нема налепницу на кућишту, па се подаци о производу
читају са екрана. Дугме **„О програму“** стоји испод PIN тастатуре и отвара се
**без пријаве** — исто као што се налепница на хардверској каси види без откључавања.

Приказује:

| Податак | Пример |
|---------|--------|
| Произвођач | S.O.K. doo Kraljevo |
| ПИБ / Матични број | 105320485 / 20354747 |
| Контакт | sok@sokdoo.com · 063 683 093 |
| Производ | DigiPOS |
| **Верзија софтвера** | 2.0.0 |
| **Серијски број (ЕСИР број)** | **1614/2.0** (регистар Пореске управе) |

Верзија софтвера се чита из саме апликације и **не подешава се ручно** — мења се само
уз нову верзију. Исти подаци стоје и у **Админ → Подешавања**, на врху екрана.

> ЕСИР број се уграђује у верзију тек након уписа у регистар ПУ — верзији 2.0
> Пореска управа доделила је број **1614**, па серијски број гласи **1614/2.0**.
> Радна верзија пре одобрења уместо броја пише „није додељен — производ још није одобрен“.

---page---

## 2. Три режима рада касе

DigiPOS ради у **сва три** режима. Касир исти програм; разликује се веза са ERP-ом:

| # | Режим | Шта значи за корисника |
|---|--------|-------------------------|
| **1** | **Самостални** | Каса на једном рачунару **или на мобилном телефону** (PWA), локална база (`digipos.db`). Цене и артикли у **Админ → Артикли** (види §3.1). Увоз/извоз по потреби. **Без** везе са ERP-ом. Са **В-ПФР** ради и преко мобилног интернета. |
| **2** | **ERP у облаку — стална конекција** | Каса је стално повезана са ERP-ом у облаку. Ако нестане интернет, наставља локално; по враћању везе синхронизација. |
| **3** | **ERP на захтев** | Каса ради локално; синхронизација са ERP-ом **кад се затражи** (Админ → Подешавања → Синхронизација) — није стално онлајн. |

### 2.1 Самостални рад на мобилном телефону

DigiPOS **подржава инсталацију и свакодневну употребу** као самостална каса на мобилном:

1. DigiPOS сервер ради у режиму **Самостални** (SQLite) — на рачунару у објекту, мини рачунару или **хостовано у облаку**.
2. У **Админ → Подешавања** унесите **В-ПФР** (адреса API v3, ПАК, путања до PFX) — има предност над Л-ПФР.
3. На **телефону** отворите адресу касе (`http://…:3000` или HTTPS) у Chrome / Safari.
4. Изаберите **Додај на почетни екран** (PWA) — каса ради као апликација.
5. Веза ка В-ПФР: **Wi‑Fi** или **мобилни интернет**. Локални Л-ПФР и ERP **нису** обавезни.

**Само телефон (Android или iPhone, без PC у објекту):** С.О.К. подиже хостовану касу;
на Android-у Chrome → Инсталирај апликацију, на iPhone-у Safari → Додај на Почетни екран.
Види `https://digi-knjigovodstvo.rs/esir-setup/mobilni.html`.

> **Самостална инсталација на iPhone-у није могућа.** iPhone је само клијент (PWA);
> сервер + В‑ПФР морају бити у облаку или на PC. (Напредно Android: сервер у Termux-у.)

Фискални рад (наплата, аванс, обука, копија, рефундација) **исти је** као на рачунару.

**Тип објекта** (засебно од горњег): у Подешавањима `restoran` (столови, кухиња) или `prodavnica` (брза каса). Оба типа раде у сва три режима, укључујући мобилну самосталну касу.

Фискални рад (наплата, аванс, обука, копија, рефундација) **исти је** у свим режимима — захтева везу са L/V-ПФР.

---page---

## 3. Администрација и пореске стопе

![Корисници](screenshots/11-admin-korisnici.png)

![Подешавања](screenshots/13-admin-podesavanja.png)

1. **Корисници** — PIN, улоге.
2. **Подешавања** — тип објекта `restoran` / `prodavnica` (види §2 и три режима рада), власник, објекат, LPFR, штампач. **ESIR број** је трајно уграђен у верзију (не мења се на каси). У режиму 2/3: подешавања везе са **ERP**-ом (стална или на захтев).
3. **Пореске стопе** — при првом успешном повезивању са ПФР-ом преузимају се аутоматски.
   По потреби: **Шифарник пореских стопа** → **Преузми стопе са ПФР-а** → ERP група → ознака → **Сачувај**.
4. **Артикли** — цена, баркод (GTIN), пореска група, ЈМ.

![Артикли](screenshots/27-admin-artikli.png)

### 3.1 Промена цене у самостални режиму

У режиму **1 (Самостални)** цене се воде у самој каси — поље **Малопродајна цена** је изменљиво.

1. Отворите **http://localhost:3000/admin** и пријавите се као админ.
2. Таб **Артикли**.
3. Кликни на ред артикла (или **Dodaj** за нови).
4. У модалу унесите / измените **Малопродајна цена**.
5. **Сачувај**.

![Артикли](screenshots/27-admin-artikli.png)

На каси одмах важи нова цена при следећем додавању у корпу.

**Напомена:** у режимима са ERP-ом (2 и 3) цена на овом екрану је често **само за читање** — води се у књиговодству / нивелацијом по објекту, не ручно на каси.

Без мапирања стопа продаја се **одбија**.

### 3.2 Пореске стопе — преузимање и приказ

**Стопе долазе искључиво од ПФР-а.** DigiPOS их нема уграђене и ниједну не измишља
(правило из §9.1). Преузимају се **аутоматски при првом успешном повезивању** са
Л/В-ПФР-ом, а могу и **на захтев**.

**Приказ на захтев:** Админ → Подешавања → **Шифарник пореских стопа** →
**Преузми стопе са ПФР-а**. Екран прикаже:

- **групу стопа** коју је ПФР вратио и **датум од ког важи**;
- за сваку ЕРП шифру пореза: опис, стопу и падајућу листу **ПФР ознака**.

У падајућој листи стоје **само ознаке које је ПФР вратио у том тренутку**, у облику
**`ознака · стопа% · тип пореза`** — на пример `Ђ · 20% О-ПДВ`. Друге се не нуде и
не могу се уписати. Број ознака није ограничен: колико их ПФР врати, толико их има —
ако Пореска управа сутра дода нову, појавиће се сама, без нове верзије програма.

Повежите сваку ЕРП шифру са ознаком и притисните **Сачувај ознаке**.

> **Без мапирања стопа продаја се одбија** — каса неће издати рачун за артикал чија
> пореска група није повезана са ознаком ПФР-а.

**На исечку** се, у делу пореза, штампа **ознака, назив пореза, стопа и износ пореза**
(нпр. `Ђ  О-ПДВ  20%  130,00`), а испод **укупан износ пореза**. Све те вредности стижу
из одговора ПФР-а и не мењају се (§9.2). Пореска вредност је заокружена на **две
децимале** (техничко упутство §6.1).

### 3.3 Увоз и извоз листе производа и услуга

Шифарник може да се пренесе фајлом — **Админ → Подешавања**, при дну екрана.

**Извоз (`Извези у CSV`)** снима цео шифарник као `artikli.csv`. Отвара се двокликом
у Excel-у или LibreOffice-у. Извози се **цена по којој каса заиста продаје** у текућем
објекту.

**Увоз (`Увези из CSV`)** чита исти такав фајл: **постојећа шифра се ажурира, нова се
додаје**. Ништа се не брише — ЕРП сме да пошаље цео списак, затечени артикли остају.

Колоне (раздвајач `;`, заглавље обавезно; редослед колона није битан):

| Колона | Обавезно | Значење |
|--------|----------|---------|
| `sifra` | **да** | ИД артикла (може и `id`) |
| `naziv` | **да** | назив на исечку |
| `jmere` | не | јединица мере (подр. `kom`) |
| `barcode` | не | ГТИН / баркод |
| `grupa` | не | пореска група (подр. 4) — мапира се на ознаку ПФР-а, в. §3 |
| `mpcena` | не | цена; `150,00` или `150.00` |

```
sifra;naziv;jmere;barcode;grupa;mpcena
101;Кафа;kom;5601234567890;4;150,00
102;"Сок; природни";L;;4;99,90
```

Заглавље може бити и ћирилично (`шифра;назив;цена`) или енглеско (`id;name;price`).
Назив који садржи `;` иде под наводнике — извоз то ради сам.

> **Цене у режимима са ЕРП-ом:** увоз уписује цену у шифарник касе. У режимима 2 и 3
> меродавна цена долази из књиговодства (в. напомену уз §3.1), па је увоз цена
> првенствено намењен **самосталном режиму**. Називи, баркодови и групе се увозе у
> сваком режиму.

Поред CSV-а, постоји и **увоз из digiesir касе (DBF)** — преузима артикле, купце и
подешавања са постојеће касе (Админ → Подешавања → *Увоз из digiesir касе*).

---page---

## 4. Каса — основни екрани

![Каса продавница](screenshots/14-prodavnica-kasa.png)

![Наплата](screenshots/06-naplata.png)

![Рачуни](screenshots/07-racuni.png)

**Продавница:** скенирај / кликни артикал → **НАПЛАТИ** → плаћање (+ опционо купац) → **ИЗДАЈ РАЧУН**.

**Аванс:** дугме **Аванс** → узми аванс, па касније **Затвори робом** (види 5.11–5.13).

### 4.1 Измена ставке пре издавања рачуна

Док рачун **није издат**, свака ставка у корпи може да се измени. Ништа од овога не
дира шифарник — **важи само за тај рачун**:

| Радња | Како |
|-------|------|
| **Избацивање ставке** | дугме **✕** на реду ставке |
| **Промена количине** | дугмад **−** и **+** на реду ставке |
| **Попуст на изабрану ставку** | командна конзола — `3/10` (в. §4.2) |

**Издати рачун се не мења.** Грешка се исправља **рефундацијом** (§5.6), не изменом.

### 4.2 Командна конзола (брз рад са тастатуре)

Команде се куцају у поље **Претрага / баркод / шифра** и притисне се **Enter**.
Намењене су касирима који раде без миша (баркод скенер + тастатура).

| Команда | Значење |
|---------|---------|
| `-` | обриши **последњи** ред |
| `-3` | обриши **ред 3** |
| `+101` | додај артикал шифре **101** |
| `5` | додај **5** на количину последњег реда |
| `.5` или `0,5` | постави количину последњег реда на **0,5** |
| **`/10`** | **попуст 10% на последњу ставку** |
| **`3/10`** | **попуст 10% на ставку број 3** |
| **`*10`** | попуст 10% на **цео рачун** (све ставке) |
| `G` `P` `C` `K` | одмах наплати: **готовина / картица / чек / пренос** |
| `A123` | копија данашњег рачуна чији ПФР број се завршава на **123** |

**Попуст на изабрану ставку** (`3/10`, `/10`) уноси касир, важи **само за текући
рачун** и одмах се види у корпи, поред цене реда. Умањена цена се штампа на исечку и
шаље ПФР-у као `unitPrice` те ставке. Малопродајна цена артикла у шифарнику **остаје
непромењена** — следећи рачун поново креће од редовне цене.

> Трајна промена цене артикла је нешто друго и ради се у **Админ → Артикли** (§3.1).

---page---

## 5. Примери из досијеа — како се ради

Испод сваког примера: **(А) екран на каси** → **(Б) исечак из досијеа**.  
Датотеке исечака: `sertifikacija-sandbox/png/` (исто као у досијеу).

---page---

### 5.1 Промет Продаја (ПП) — упитник П11 · `01-PP`

**Циљ:** обичан промет, само готовина.

1. Додајте ставке у корпу.
2. **НАПЛАТИ** → пун износ у **Готовина**, остала плаћања празна.
3. Купац = **без** → **ИЗДАЈ РАЧУН**.

**А — екран наплате (готовина):**

![Наплата готовина](screenshots/20-naplata-gotovina.png)

**Б — исечак:**

![Промет Продаја](sertifikacija-sandbox/png/01-PP.png)

---page---

### 5.2 Вишеструко плаћање — `02-PP-mix`

1. Додајте ставке → **НАПЛАТИ**.
2. Део у **Готовина**, остатак у **Картица** (збир ≥ укупно).
3. **ИЗДАЈ РАЧУН**.

**А — екран (mix):**

![Наплата mix](screenshots/21-naplata-mix.png)

**Б — исечак:**

![Вишеструко плаћање](sertifikacija-sandbox/png/02-PP-mix.png)

---page---

### 5.3 Вирман (пренос) + купац — `03-PP-virman`

1. **НАПЛАТИ** → пун износ у **Пренос на рачун**.
2. Купац: тип **10 PIB** + ПИБ.
3. **ИЗДАЈ РАЧУН**.

**А — екран:**

![Наплата вирман](screenshots/22-naplata-virman.png)

**Б — исечак:**

![Вирман](sertifikacija-sandbox/png/03-PP-virman.png)

---page---

### 5.4 Промет + ПИБ купца — упитник П1 · `04-PP-kupac`

1. **НАПЛАТИ** → плаћање.
2. Купац: **10 PIB** + број ПИБ-а.
3. **ИЗДАЈ РАЧУН** — на исечку ред **ИД купца**.

**А — екран:**

![Наплата ПИБ](screenshots/23-naplata-kupac-pib.png)

**Б — исечак:**

![Промет + PIB](sertifikacija-sandbox/png/04-PP-kupac.png)

---page---

### 5.5 Промет + ЈБКЈС — П1б · `14-PP-jbkjs`

1. **НАПЛАТИ**.
2. Купац: **12 PIB+JBKJS**, у поље `ПИБ:ЈБКЈС` (нпр. `100000003:12345`).
3. **ИЗДАЈ РАЧУН**.

**А — екран:**

![Наплата ЈБКЈС](screenshots/24-naplata-jbkjs.png)

**Б — исечак:**

![ЈБКЈС](sertifikacija-sandbox/png/14-PP-jbkjs.png)

---page---

### 5.6 Промет Рефундација (ПР) — `05-PR`

1. Таб **Рачуни** → датум → промет који сторнирате.
2. **Рефундација** (касир / админ) → потврдите.
3. Штампа ПР са референцом на оригинални ПФР број.

**А — екран:**

![Рачуни / рефундација](screenshots/07-racuni.png)

**Б — исечак:**

![Промет Рефундација](sertifikacija-sandbox/png/05-PR.png)

---page---

### 5.7 Копија Продаје (КП) — упитник П12 · `06-KP`

1. **Рачуни** → промет (или аванс).
2. **Копија**.
3. На исечку: **ОВО НИЈЕ ФИСКАЛНИ РАЧУН**.

**А — екран:**

![Рачуни / копија](screenshots/07-racuni.png)

**Б — исечак:**

![Копија продаје](sertifikacija-sandbox/png/06-KP.png)

---page---

### 5.8 Копија Рефундације (КР) — `07-KR`

1. **Рачуни** → ранија рефундација.
2. **Копија**.

**А — екран:**

![Рачуни](screenshots/07-racuni.png)

**Б — исечак:**

![Копија рефундације](sertifikacija-sandbox/png/07-KR.png)

---page---

### 5.9 Предрачун Продаја (РП) — упитник П13 · `08-RP`

1. Ресторан: отворите сто → артикли у корпу.
2. **Предрачун** (не наплата).

**А — екран:**

![Поруџбина / предрачун](screenshots/03-porudzbina-sto.png)

**Б — исечак:**

![Предрачун](sertifikacija-sandbox/png/08-RP.png)

---page---

### 5.10 Обука (ОП) — тачка 8 матрице · упитник П14 · `09-OP`

**Обавеза за контролу ПУРС-а:** ЕСИР мора да издаје тип документа **Обука** (`invoiceType` 3). То **није фискални промет** — на исечку стоји **ОВО НИЈЕ ФИСКАЛНИ РАЧУН**; служи за обуку особља и демонстрацију без књижења промета.

#### Корак по корак — Обука Продаја

1. Додајте ставке у корпу (продавница) или на столу (ресторан).
2. **НАПЛАТИ** → унесите плаћање као иначе (готовина / картица / …).
3. Обавезно укључите опцију **Обука — није фискални рачун**.
4. Дугме постаје зелено **ИЗДАЈ ОБУКУ** (уместо „ИЗДАЈ РАЧУН“) → кликните.
5. Штампа се **Обука Продаја (ОП)**.
6. У табу **Рачуни** тип је **Обука**. У ресторану **сто остаје отворен** (обука није наплата).

**А — екран наплате (обука укључена):**

![Наплата обука](screenshots/25-naplata-obuka.png)

**А2 — исто + ИД купца (П7):**

![Обука + ПИБ купца](screenshots/28-naplata-obuka-kupac.png)

**А3 — евиденција на каси:**

![Рачуни — тип Обука](screenshots/29-racuni-obuka.png)

**Б — исечак из досијеа:**

![Обука Продаја](sertifikacija-sandbox/png/09-OP.png)

#### Обука Рефундација (П8)

1. **Рачуни** → изаберите ранију **Обука** (продаја).
2. **Рефундација** → потврдите.
3. Издаје се **Обука / REF** (исти `invoiceType` 3, `transactionType` 1) — и даље **није фискални промет**.

**А — екран (дугме Рефундација уз Обука):**

![Рачуни обука / рефундација](screenshots/29-racuni-obuka.png)

---page---

### 5.11 Аванс Продаја (АП) — упитник П15 · `10-AP`

**Корак 1 — узми аванс** (купци уплате део цене унапред):

1. На каси кликните **Аванс**.
2. Изаберите **пореску ознаку** и **износ**.
3. **Узми аванс** → штампа се **Аванс Продаја (АП)**.

**А — екран (узми аванс):**

![Екран узми аванс](screenshots/15-avans-uzmi.png)

**Б — исечак АП:**

![Аванс продаја](sertifikacija-sandbox/png/10-AP.png)

---page---

### 5.12–5.13 Како се аванс затвара коначним рачуном · `11-AR` + `12-PP-avans`

По спецификацији **9.1**, једно дугме **Затвори робом** шаље ПФР-у **два** документа:

| Редослед | Тип | Штампа купцу | Значење |
|----------|-----|--------------|---------|
| 1 | **Аванс Рефундација (АР)** | **не** (интерно) | затвара / поништава авансни рачун АП |
| 2 | **Промет Продаја (ПП)** | **да** | коначни рачун са правом робом; купац плаћа само **разлику** (укупно − аванс) |

**Корак 2 — роба у корпу:**

1. Додајте у корпу артикле који се **испоручују** (укупна цена ≥ уплаћени аванс).

![Корпа са робом за затварање](screenshots/17-avans-korpa-roba.png)

**Корак 3 — затвори аванс:**

2. Поново **Аванс** → у табели **Отворени аванси** кликните **Затвори робом**.
3. ЕСИР издаје АР (без штампе купцу) па одмах коначни ПП.

![Екран затвори робом](screenshots/16-avans-zatvori.png)

**Б — исечци из досијеа:**

![Аванс рефундација (интерно)](sertifikacija-sandbox/png/11-AR.png)

![Коначни промет по авансу](sertifikacija-sandbox/png/12-PP-avans.png)

---page---

### 5.14 GTIN (баркод) + нулта стопа — `13-PP-gtin`

1. Админ → **Артикли** — унесите **баркод (GTIN)** и пореску групу мапирану на ПФР.
2. На каси скенирајте / додајте артикал → **НАПЛАТИ** → **ИЗДАЈ РАЧУН**.

**А — екрани:**

![Артикли / GTIN](screenshots/27-admin-artikli.png)

![Корпа продавница](screenshots/26-korpa-prodavnica.png)

**Б — исечак:**

![GTIN](sertifikacija-sandbox/png/13-PP-gtin.png)

---page---

## 6. Ресторан и кухиња

![Столови](screenshots/02-stolovi-restoran.png)

![Корпа](screenshots/04-korpa-porudzbina.png)

![Кухиња](screenshots/05-kuhinja.png)

| Дугме | Значење |
|-------|---------|
| **Пошаљи** | у кухињу |
| **Предрачун** | види 5.9 |
| **Наплати** | промет (5.1–5.5) |
| **Аванс** | види 5.11–5.13 |

---page---

## 7. Извештаји

![Извештај каса](screenshots/08-izvestaj-kasa.png)

![Admin извештај](screenshots/10-admin-izvestaj.png)

Таб **Извештај** / Админ → датум → промет, рефундације. На крају смене: **Одјава**.

---page---

## 8. Преглед слика UI

| Слика | Пример / опис |
|-------|----------------|
| 14-prodavnica-kasa | Каса (дугме Аванс) |
| 20-naplata-gotovina | 5.1 ПП готовина |
| 21-naplata-mix | 5.2 вишеструко |
| 22-naplata-virman | 5.3 вирман + купац |
| 23-naplata-kupac-pib | 5.4 ПИБ |
| 24-naplata-jbkjs | 5.5 ЈБКЈС |
| 07-racuni | 5.6–5.8 реф / копија |
| 03-porudzbina-sto | 5.9 предрачун |
| 25-naplata-obuka | 5.10 обука — ИЗДАЈ ОБУКУ |
| 28-naplata-obuka-kupac | 5.10 обука + ПИБ (П7) |
| 29-racuni-obuka | 5.10 листа Рачуни тип Обука + Рефундација |
| 15-avans-uzmi | 5.11 узми аванс |
| 17-avans-korpa-roba | 5.12 роба пре затварања |
| 16-avans-zatvori | 5.12–5.13 **Затвори робом** |
| 26 / 27 | 5.14 корпа / артикли GTIN |
| `sertifikacija-sandbox/png/*` | исечци из досијеа |

---page---

## 8а. Унос трансакције преко фајла (сервис за увоз)

DigiPOS може да **сам** фискализује трансакције које други систем (ЕРП, веб продавница,
мобилна апликација) остави као фајл. Нема дугмета и не тражи пријављеног касира —
сервис надгледа фолдер и ради у позадини.

**Укључивање:** Админ → Подешавања → **Увоз трансакција: фолдер који се надгледа**.
Празно = искључено. Поред тога, **на колико секунди се гледа фолдер** (подразумевано 5).

**Како ради:**

1. ЕРП убаци `.json` фајл у подешени фолдер.
2. Сервис га покупи, изда фискални рачун и одштампа исечак.
3. Фајл се премешта у `obradjeno/`, а поред њега се упише `<име>.odgovor.json`
   са **ПФР бројем рачуна, бројачем, укупним износом и везом за проверу (QR)**.
4. Ако фајл није исправан или ПФР није доступан, фајл иде у `greske/`, а поред њега
   `<име>.greska.txt` са разлогом. **Рачун се у том случају не издаје.**

```
фолдер/                    ← овде се убацују фајлови
фолдер/obradjeno/          ← успешни + одговор са ПФР бројем и QR-ом
фолдер/greske/             ← неуспешни + разлог
```

### 8а.1 Формат фајла

Фајл прати **ПФР захтев** (Технички водич, *Create Invoice*) — исти облик који ЕСИР
иначе шаље — уз једну обавезну допуну: **`sifra` артикла на свакој ставци**.

```json
{
  "invoiceType": 0,
  "transactionType": 0,
  "cashier": "Марко",
  "buyerId": "10:112233445",
  "items": [
    { "sifra": 101, "quantity": 2, "unitPrice": 150 }
  ],
  "payment": [ { "amount": 300, "paymentType": 1 } ]
}
```

| Поље | Обавезно | Значење |
|------|----------|---------|
| `items[].sifra` | **да** | ИД артикла из шифарника (може и `id` / `artikal`) |
| `items[].quantity` | **да** | количина (> 0) |
| `items[].unitPrice` | не | цена; ако је нема, важи **малопродајна цена из шифарника** |
| `payment[].amount` + `paymentType` | **да** | 0 друго · 1 готовина · 2 картица · 3 чек · 4 пренос · 5 ваучер · 6 инстант |
| `invoiceType` | не (подр. 0) | **0 промет** · **3 обука** |
| `transactionType` | не (подр. 0) | **0 продаја** |
| `cashier` | не | име на исечку; ако нема — **Сервис** |
| `buyerId` | не | нпр. `10:112233445` (ПИБ) |
| `buyerCostCenterId` | не | опционо поље купца |

**Шифра артикла је обавезна** зато што се преко ње води **евиденција о продатој роби**:
ставке улазе у поруџбину, скида се стање (лагер), а рачун се везује за артикле из
шифарника — исто као да је продато на каси.

> **Назив и пореска ознака се НЕ узимају из фајла** — читају се из шифарника, чак и ако
> их фајл садржи. Разлог је правило из §9.1: пореска ознака сме да дође **само од
> Л/В-ПФР-а** (преко шифарника). Кад би ознака стизала из фајла, ЕРП би је диктирао,
> а то ЕСИР-у није дозвољено.

**Шта се увозом не може издати:** рефундација, копија, предрачун и аванс. Они траже
**референтни број** претходног рачуна, па се раде **на каси** (§5.6–5.13), где касир
бира референцу. Фајл са таквим типом иде у `greske/` са јасним образложењем — уместо да
се тихо изда погрешан документ.

**Заштита од дуплог рачуна:** ако исти фајл заврши у фолдеру два пута (нпр. ЕРП га
врати после рестарта), препознаје се **по садржају** и **не издаје се други рачун** —
враћа се одговор од првог издавања.

Рачуни издати преко фајла улазе у **журнал као и сваки други** (таб Рачуни, §7) —
фајл не заобилази ништа: важе иста правила из §9.

---page---

## 8б. Достављање рачуна купцу — папирно и електронски

Рачун се купцу доставља **у папирној** и **у електронској форми**. Оба облика носе
исти фискални рачун и исти QR за проверу код Пореске управе.

### 8б.1 Папирна форма

Штампа на термалној ролни (57 mm или 57–80 mm) или на **А4** кроз драјвер ОС-а —
види техничко упутство §8.3.

### 8б.2 QR на екрану (купац скенира уместо папира)

Укључује се: Админ → Подешавања → **Прикажи QR купцу на екрану после наплате**.

Одмах по издавању рачуна каса прикаже прозор са **QR кодом**, бројем рачуна и дугмадима:

| Дугме | Шта ради |
|-------|----------|
| **Пошаљи** | отвара **системско дељење** уређаја — Viber, WhatsApp, СМС, е-пошта… (на телефону/таблету) |
| **Копирај линк** | копира везу за проверу рачуна |
| **Затвори** | затвара прозор |

Купац скенира QR телефоном и добија свој рачун на сајту Пореске управе — **без папира**.

> **Пошаљи** користи дељење самог уређаја, па не чувамо купчев број телефона ни адресу,
> и није потребан никакав сервер за поруке. На рачунару где прегледач нема дељење,
> дугме се не приказује — остаје **Копирај линк**.

### 8б.3 Аутоматско слање на мејл купца

Ако купац унет на рачун (**ПИБ**) има **уписан мејл** у шифарнику фирми, рачун му се
шаље **аутоматски, без питања касира**.

Укључује се: Админ → Подешавања → **Пошаљи рачун на мејл купца** + подаци SMTP сервера
(`smtp_host`, `smtp_port`, `smtp_from`, по потреби корисник и лозинка).

Мејл садржи **број рачуна**, **везу за проверу** код Пореске управе и **текст исечка**.

Касир на каси види исход — „мејл послат на …“ или разлог зашто није.

> **Ако мејл не прође, рачун и даље важи.** У тренутку слања рачун је већ фискализован,
> уписан у журнал и одштампан. Порука о неуспелом мејлу **није** порука о неуспелом
> рачуну — купцу се тада рачун даје на папиру или преко QR-а (§8б.2).

---page---

## 9. Забрањене функције — шта ЕСИР никада не ради

Ово поглавље је **потврда усклађености** са забрањеним функцијама из упитника
(СУФ-01, део „Забрањене функције“). Свака тачка важи у сва три режима рада и за
све типове ПФР-а (Л-ПФР, В-ПФР, DEMO).

### 9.1 Без података од ПФР-а нема рачуна

**DigiPOS не издаје ниједну врсту рачуна ако није добио неопходне податке од ПФР-а
са којим је повезан.**

- **Пореске стопе се преузимају искључиво од ПФР-а** (`currentTaxRates` из одговора
  `/status`). DigiPOS их нема уграђене и **ниједну не измишља**: у шифарнику се може
  изабрати само ознака коју је ПФР вратио у текућем одговору, а свака друга се **одбија**.
- **Без мапирања стопа продаја се одбија** (види §3) — каса неће издати рачун.
- Ако ПФР не врати стопе, или ако **аутентификација не прође** (PIN код Л-ПФР-а,
  ПАК код В-ПФР-а), рачун се **не издаје** и касир добија грешку.
- Ако веза са ПФР-ом падне усред наплате, рачун **не настаје** — не постоји „локални“
  рачун који би се накнадно фискализовао.

**Практично за касира:** порука о грешци значи да рачун **није** издат. Понављате
наплату кад се веза врати; ништа се не издаје „у међувремену“.

### 9.2 Обавезни подаци се не изостављају и не мењају

**DigiPOS не изоставља и не мења ниједан обавезни податак фискалног рачуна који је
примио од ПФР-а.**

Исечак се исписује **из одговора ПФР-а**, не из локалне базе. Директно из одговора иду:

| Податак на исечку | Извор |
|-------------------|-------|
| ПФР број рачуна | одговор ПФР-а |
| Бројач рачуна и словна ознака (ПП, ПР, КП, КР, РП, РР, ОП, ОР, АП, АР) | одговор ПФР-а |
| ПФР време | одговор ПФР-а |
| Укупан износ и износ пореза | одговор ПФР-а |
| Пореске ознаке, називи и стопе | одговор ПФР-а |
| QR код / веза за проверу | одговор ПФР-а |

DigiPOS ове вредности **само приказује и штампа** — не заокружује их, не прерачунава
и не допуњава. Свака се може проверити очитавањем QR кода: оно што пише на исечку
мора да се поклопи са оним што приказује сајт Пореске управе.

### 9.3 Заглавље издаваоца се преузима од ПФР-а

**DigiPOS не изоставља и не мења ниједну информацију из заглавља фискалног рачуна
везану за податке издаваоца које је примио од ПФР-а.**

ПИБ, назив предузећа, назив продајног места, адреса и општина штампају се **искључиво
из одговора ПФР-а**. DigiPOS их **не замењује** локално унетим подацима о власнику и
објекту из Подешавања, иако их има у бази — та поља служе само за интерну евиденцију
и извештаје.

**Заглавље се штампа тачно како стигне**, чак и када изгледа неуједначено (нпр. ПФР
врати назив латиницом уз адресу ћирилицом). DigiPOS не „поправља“ писмо, размаке ни
редослед. Ако је податак у заглављу нетачан, исправља се **код Пореске управе** —
не у каси.

---page---

---

*С.О.К. доо Краљево · DigiPOS · корисничко упутство (прати досије део 17)*

`npm run docs:korisnicko` → `DigiPOS-ESIR-korisnicko.odt`
