# ЕСИР досије за Пореску управу — DigiPOS

**Захтев за одобрење Електронског система за издавање рачуна (ЕСИР)**  
Класификација: **Тип 3 — Напредни**. Врста одобрења: **преносиво**.

DigiPOS је **нови, самостални производ**. Постојећи одобрени софтверски ЕСИР **KasaB**
остаје у употреби — DigiPOS га не замењује ни искључује. У режиму **Самостални** са
**В-ПФР** може се **инсталирати и користити на мобилном телефону** (PWA).

**Основа:** *Техничко упутство за административни и технички преглед функционалности ЕСИР-а или Л-ПФР-а* (СУФ-01), поглавље **7.4.2 ЕСИР Упитник — листа за самопроцену**, део **17 Примери рачуна**.  
Предаја: портал добављача / TAP (развојно окружење), на српском језику.

---

## 0. Чек-листа прилога (шта се предаје уз упитник)

| # | Прилог (СУФ-01 7.4.2 / 2.) | Фајл / статус |
|---|---------------------------|---------------|
| П1 | Опис производа (брошура / сајт) | `docs/BROSURA-DIGIPOS.md` → `DigiPOS-brosura.odt`, `README.md` |
| П2 | Корисничко упутство | `docs/ESIR-KORISNICKO-UPUTSTVO.md` → `DigiPOS-ESIR-korisnicko.odt` / `.pdf` |
| П3 | Упутство за инсталацију | `docs/ESIR-UPUTSTVO-ZA-INSTALACIJU.md` → `DigiPOS-ESIR-instalacija.odt` |
| П4 | Упутство за конфигурацију | `docs/ESIR-UPUTSTVO-ZA-KONFIGURACIJU.md` → `DigiPOS-ESIR-konfiguracija.odt` |
| — | Попуњен упитник (делови 1–16) | овај документ ниже |
| — | **Примери рачуна део 17** (очигледни QR из sandbox-а) | `docs/sertifikacija-sandbox/pdf/*.pdf` + текст у делу 17 |
| — | Примери достављања рачуна (папирно / електронски) | `docs/UPITNIK-DOSTAVA-PRIMERI.md` |
| — | Ручна чек-листа сценарија (интерно) | `c:\Dropbox\FiskalnaKasa\RucnoTestiranjeESIR-a_v5 0.pdf` |

**Генерисање ODT:**  
`npm run docs:esir` · (ODT + PDF кроз LibreOffice)  
**Поновно потписивање примера:** `node scripts/vpfr-sertifikacija.js --pdf`

---

## 1. Детаљи апликанта

| Поље | Вредност |
|------|----------|
| Назив производа | **DigiPOS** |
| Врста одобрења | Преносиво |
| Класификација ЕСИР-а | 3. Напредни |
| Подносилац / добављач | **S.O.K. doo Kraljevo** |
| Адреса | Мирка Луковића 2, 36000 Краљево |
| ПИБ | 105320485 |
| Матични број | 20354747 |
| Контакт особа | Срђан Драгојловић (законски заступник) |
| Телефон | 063 683 093 |
| Имејл | sok@sokdoo.com |
| **ЕСИР број (регистар ПУ)** | **1614/2.0** (број 1614, верзија 2.0) |
| ЈИД (развојни, sandbox) | 3LAMY8QM |

---

## 2. Приложена документација за ЕСИР производ

| П | Ставка | Одговор / референца |
|---|--------|---------------------|
| П1 | Опис производа | Да — брошура + `README.md` |
| П2 | Корисничко упутство за производ | Да — `DigiPOS-ESIR-korisnicko.pdf` / ODT |
| П3 | Упутство за инсталацију | Да — `DigiPOS-ESIR-instalacija.odt` |
| П4 | Упутство за конфигурацију | Да — `DigiPOS-ESIR-konfiguracija.odt` |

---

## 3. Типови ЕСИР-а (како се производ испоручује)

- **П2 Софтвер на рачунару (ПОС)** — веб апликација (PWA), ради у прегледачу; малопродаја и угоститељство.
- **П3 Апликација за паметни уређај** — иста апликација као PWA на телефону/таблету.
  DigiPOS се **користи** као каса на мобилном (Android / iOS, Safari/Chrome → Почетни екран):
  режим Самостални + **В‑ПФР**. Сервер (SQLite + PFX) ради на рачунару у објекту **или хостовано**
  (за фирме са само телефонима — без PC у локалу).
  **Самостална инсталација на iPhone-у није могућа** (iOS); на Android-у је опционо Termux.
  Веза: Wi‑Fi или мобилни интернет.
  Документовано: упутство за инсталацију („Самостални на мобилном“ — Android и iPhone)
  и `esir-setup/mobilni.html`.
- **П6 Модул система за планирање ресурса (ЕРП)** — интеграција са дигиталним књиговодством (иста база).

---

## 4. Инсталација ЕСИР-а

DigiPOS подржава **три режима рада** (иста апликација; детаљно: техничко упутство §1.1 / `REZIMI-RADA.md`):

1. **Самостални** — нулта / инсталација на даљину (`https://digi-knjigovodstvo.rs/esir-setup/`),
   локална SQLite (`digipos.db`); без везе са ERP-ом; **инсталација и употреба и као самостална каса
   на мобилном телефону** (PWA + В-ПФР);
2. **ERP у облаку — стална конекција** — стални рад са ERP-ом; при прекиду интернета прво офлајн, затим синхронизација;
3. **ERP на захтев** — локални рад; синхронизација са ERP-ом кад се затражи.

Мапирање на упитник:

- **П1 Директно у пословном простору** — `esir-setup` / `instaliraj.bat` на даљину (режими 1 и 3).
- **П2 Путем интернета (клауд)** — сервер / ERP у облаку, касе преко HTTPS-а (режим 2).
- **П3 Самоинсталација** — да (`DigiPOS-ESIR-Setup.cmd`, без доласка у објекат).

---

## 5. Подржани типови ПФР-а

- **П1 Л-ПФР** — да (`lib/lpfr.js`, Технички водич API v3).
- **П3 В-ПФР дигитални сертификат** — да (PFX + PAC; sandbox потврђен).

---

## 6. Начин повезивања ЕСИР-а са ПФР-ом

- **П1 Wi-Fi**, **П2 мобилна мрежа**, **П3 Ethernet** — HTTP(S) ка L/V-ПФР.

**Веза ка В-ПФР-у иде преко сервера на коме је инсталиран сертификат.** DigiPOS је
клијент-сервер апликација: каса (прегледач / PWA) комуницира HTTPS-ом са DigiPOS
сервером, а **сервер** успоставља mutual-TLS ка В-ПФР-у користећи PFX сертификат са
свог диска и шаље `PAC` заглавље. Сертификат и приватни кључ **никада не напуштају
сервер** — уређај касе их нема ни у ком облику (`lib/lpfr.js`; клијентски код у
`public/` нема приступ сертификату).

Практична последица: **каса на уређају који не дозвољава инсталацију — нпр. iPhone —
ради са В-ПФР-ом без иједног додатка на телефону.** Телефон носи само прегледач;
фискализацију обавља сервер. Сервер ради на рачунару у пословном простору или
хостовано (за обвезнике који немају PC у локалу, већ само телефоне).

---

## 7. Подржани оперативни системи

- Клијент: Windows / Linux / Android / iOS / macOS (прегледач / PWA).  
- Сервер: Windows и Linux (Node.js).

---

## 8. Потребно за ручно тестирање

- Рачунар/таблет са прегледачем; термални штампач + папир.  
- За преглед: V-ПФР sandbox (развојни сертификат) или Л-ПФР; DEMO за обуку особља.

---

## 9. Забрањене функције (потврда усклађености)

**Референца у документу за сва три питања:**
`DigiPOS-ESIR-korisnicko.pdf` (`docs/ESIR-KORISNICKO-UPUTSTVO.md`) —
поглавље **9. „Забрањене функције — шта ЕСИР никада не ради“**.

| П | Забрањена функција | Одговор | Референца |
|---|--------------------|---------|-----------|
| П1 | Не издаје рачун без неопходних података од ПФР-а | Да | корисничко упутство **§9.1** (уз §3) |
| П2 | Не изоставља / не мења обавезне податке примљене од ПФР-а | Да | корисничко упутство **§9.2** |
| П3 | Не изоставља / не мења заглавље издаваоца примљено од ПФР-а | Да | корисничко упутство **§9.3** |

Потврда у коду (за технички преглед): заглавље и износи се исписују искључиво из
одговора ПФР-а (`lib/receipt.js` — исписује `res.tin`, `res.businessName`,
`res.locationName`, `res.address`, `res.district`, `res.totalAmount`, `res.taxItems`,
`res.invoiceCounterExtension`); у шифарнику се прихватају само ознаке које је ПФР
вратио у текућем одговору (`routes/api.js`), а неуспела аутентификација враћа грешку
уместо рачуна.

---

## 10. Оперативне функције ЕСИР-а

| П | Функција | Одговор (DigiPOS) |
|---|----------|-------------------|
| П1 | Прихвата команде оператера | Да — каса / поруџбина |
| П2 | ЕСИР и Л/В-ПФР се аутентификују при покретању | Да (`verifyPin` / PAC) |
| П3 | Избацивање изабраних ставки пре издавања | Да — дугме **✕** у корпи |
| П4 | Попуст на изабрану ставку (мења цену **само на том рачуну**) | Да — командна конзола `3/10`; шифарник остаје непромењен |
| П5 | Хардверски производ — налепница (произвођач, серијски број, волтажа…) | **Не примењује се** — DigiPOS је софтверски производ, нема кућиште |
| П6 | Софтверски производ — лако приступачне информације: произвођач, серијски број, верзија софтвера | Да — екран **„О програму“** |
| П7 | Све методе плаћања по Техничком водичу **+ функција онемогућавања Картице/Чека/Инстанта** (Правилник чл. 6 ст. 2) | Да — оба режима, прекидач у Подешавањима |
| П8 | Вишеструко плаћање | Да — sandbox `02-PP-mix` |
| П9 | Бар-код / вага без ометања ПФР-а | Да |
| П10 | Издаје рачун у електронском облику **или** га штампа | Да — **оба**: штампа (ролна/А4) и електронски (QR на екрану, мејл купцу) |
| П11 | ГТИН | Да — sandbox `13-PP-gtin` |
| П12 | Рефундација/копија тражи референтни број | Да — `05-PR`, `06-KP`, `07-KR` |
| П13 | Продаја из аванса тражи референцу | Да — `12-PP-avans` |
| П14 | Комуникација са Л-ПФР — HTTP по Техничком водичу | Да |
| П15 | Комуникација са В-ПФР — HTTPS по Техничком водичу | Да — mutual-TLS + `PAC`; sandbox потврђен (в. део 17) |
| П16 | Журнал рачуна са претрагом | Да — таб Рачуни |
| П17 | Унос трансакције преко фајла (ИД артикла, цена, количина) | Да — сервис надгледа фолдер; фајл у **ПФР формату + `sifra`** |

**Референце у документацији** (`DigiPOS-ESIR-korisnicko.pdf` = корисничко упутство,
`DigiPOS-ESIR-tehnicko.pdf` = техничко):

| П | Референца у документу |
|---|------------------------|
| П1 | корисничко §4 (Каса — основни екрани), §5 |
| П2 | корисничко **§1** (при пријави се проверава веза са Л/В-ПФР) |
| П3 | корисничко **§4.1** (Измена ставке пре издавања рачуна) |
| П4 | корисничко **§4.2** (Командна конзола — `3/10` попуст на изабрану ставку) |
| П5 | — (не примењује се) |
| П6 | корисничко **§1.1** — екран **„О програму“** (доступан **без пријаве**, са екрана за PIN) |
| П7 | корисничко **§4** и Админ → Подешавања (*Онемогући Картицу, Чек и Инстант*) |
| П8 | корисничко **§5.2** (вишеструко плаћање) |
| П9 | корисничко **§4** (баркод / вага); техничко **§4** (тежински баркод) |
| П10 | корисничко **§8б** (достављање), §5.1 (штампа); техничко **§8.3** |
| П11 | корисничко **§5.14** (GTIN + нулта стопа) |
| П12 | корисничко **§5.6–5.8** (рефундација, копија — тражи референтни број) |
| П13 | корисничко **§5.11–5.13** (аванс → коначни рачун по авансу) |
| П14 | техничко **§5** (Комуникација ESIR ↔ ПФР — Л-ПФР, HTTP, API v3) |
| П15 | техничко **§5** (В-ПФР — mutual-TLS + `PAC`); део 17 овог досијеа |
| П16 | корисничко **§7** (Рачуни — листа и претрага) |
| П17 | корисничко **§8а** (сервис за увоз), формат фајла **§8а.1** |

---

## 11. Упит и управљање ценама

Скуп података везаних за једну ставку рачуна: ГТИН, назив, цена, порез, количина.

| П | Ставка | Одговор (DigiPOS) | Референца у документу |
|---|--------|-------------------|------------------------|
| П1 | Нови производ/услуга уноси корисник | Да — Админ → Артикли → **Додај** | корисничко **§3.1** (и **§3.3** за увоз списка) |
| П2 | Количина се бира током издавања рачуна | Да — **−/+** у корпи; конзола `.5`, `5` | корисничко **§4.1**, **§4.2** |
| П3 | Промена цене (обавезно за Тип 3) | Да — попуст на ставку (само тај рачун) и цена у шифарнику | корисничко **§4.2** (тај рачун), **§3.1** (шифарник) |
| П4 | Заокруживање на мин. 2 децимале (≥5 навише) | Да | техничко **§6.1** (Правила заокруживања) |
| П5 | Избор по имену или скенирањем ГТИН-а | Да — поље *Претрага / баркод / шифра* | корисничко **§4**, **§4.2**; пример GTIN: **§5.14** |
| П6 | Увоз **или** извоз листе производа и услуга | Да — **оба**: CSV увоз и извоз; уз то увоз из digiesir касе (DBF) | корисничко **§3.3** |

---

## 12. Пореске стопе

| П | Ставка | Одговор (DigiPOS) | Референца у документу |
|---|--------|-------------------|------------------------|
| П1 | Преузима стопе од ПФР-а (`currentTaxRates`) | Да — аутоматски при првом повезивању; на захтев Админ → **Шифарник пореских стопа** | корисничко **§3.2** |
| П2 | Штампа пореску ознаку + тип пореза + вредност | Да — на исечку `ознака · име · стопа% · порез`, па **Укупан износ пореза** | корисничко **§3.2**; техничко **§7.2** |
| П3 | Број актуелних ознака, уз проширење у будућности | Да — ознаке нису уграђене: колико их ПФР врати, толико их има (нова се појави без нове верзије) | корисничко **§3.2** |
| П4 | Приказује пореске стопе на захтев | Да — **Преузми стопе са ПФР-а**: група, датум важења, ознака · стопа · тип пореза | корисничко **§3.2** |
| П5 | Заокруживање пореске вредности на мин. 2 децимале (≥5 навише) | Да | техничко **§6.1** |
| П6 | Никада не користи стопе осим оних од Л/В-ПФР | Да — у шифарнику се нуде **само** ознаке из текућег одговора ПФР-а; свака друга се одбија | корисничко **§9.1**, **§3.2** |

**Потврда у коду (за технички преглед):** ознаке за мапирање долазе из
`GET /api/lpfr/tax-rates` (чита `currentTaxRates` са ПФР-а); упис у шифарник **одбија**
сваку ознаку које нема у текућем одговору (`routes/api.js`); пореске ставке на исечку се
исписују из `res.taxItems` одговора ПФР-а (`lib/receipt.js`) — ништа се локално не рачуна.

---

## 13. Подржане величине за штампање рачуна

| Величина | Одговор (DigiPOS) | Референца у документу |
|----------|-------------------|------------------------|
| Папирна ролна **до 57 mm** | Да — ESC/POS термални, `kolona` ≈ 32 | техничко **§8.3** (и §8.1) |
| Папирна ролна **57–80 mm** | Да — ESC/POS термални, `kolona` 40–48 | техничко **§8.3** (и §8.1) |
| **А4 формат** | Да — штампа кроз драјвер ОС-а (`stampa_driver=1`, `driver_papir=A4`) | техничко **§8.3** (и §8.2) |

Садржај рачуна је у све три величине исти — мења се само ширина исписа.

---

## 14. Подржани типови штампача (сви штампају QR)

| Тип | Одговор (DigiPOS) | Референца у документу |
|-----|-------------------|------------------------|
| **Екстерни штампач** који се повезује са ЕСИР-ом | Да — ESC/POS термални, или било који штампач кроз драјвер ОС-а | техничко **§8** |
| Штампач **уграђен у ЕСИР** | **Не примењује се** — DigiPOS је софтверски производ, нема кућиште (в. део 10, П5) | — |

QR се штампа у **оба** начина: ESC/POS га генерише сам штампач из `verificationUrl`,
а код штампе кроз драјвер иде слика `verificationQRCode` из одговора ПФР-а
(техничко §8.1 и §8.2). Очитљивост QR-а — в. PDF исечке у делу 17.

---

## 15. Типови достављања фискалних рачуна

| Тип | Одговор (DigiPOS) | Референца у документу |
|-----|-------------------|------------------------|
| **Папирна форма** | Да — термална ролна или А4 | корисничко **§8б.1**; техничко **§8.3** |
| **Електронска форма** (мејл, СМС, апликације за дописивање, други облик) | Да — **QR на екрану** (купац скенира уместо папира) + **дељење линка** (Viber/WhatsApp/СМС/мејл преко уређаја); уз то **аутоматски мејл** купцу који има уписану адресу у шифарнику | корисничко **§8б.2**, **§8б.3** |

Обе форме носе исти фискални рачун и исти QR за проверу код Пореске управе.
Ако мејл не прође, рачун **и даље важи** — већ је фискализован и уписан у журнал
(корисничко §8б.3).

Примери за ову тачку упитника (папирни исечак, дељење линка, мејл — сви са ЕСИР
бројем **1614/2.0**): `docs/UPITNIK-DOSTAVA-PRIMERI.md`.

---

## 16. Текстуални приказ фискалног рачуна

Да — распоред и сви обавезни елементи описани су у техничком упутству **§7.2**
(Текстуални садржај фискалног исечка), а показани на потписаним примерима у **делу 17**.

| Елемент | Где се види |
|---------|-------------|
| Заглавље издаваоца (ПИБ, назив, место, адреса, општина) — **из одговора ПФР-а** | техничко §7.2; корисничко **§9.3** |
| ИД купца (кад је унет) | део 17, П1 / П1б |
| Пореске ознаке, стопе и износ пореза | техничко §7.2; корисничко **§3.2** |
| „ОВО НИЈЕ ФИСКАЛНИ РАЧУН“ (предрачун, обука) | део 17, П13 / П14 |
| ПФР број, бројач, ПФР време | техничко §7.2 |
| **Очитљив QR** и крај рачуна | PDF исечци у делу 17 |

---

## 17. Примери рачуна (Тип 3 — Напредни) — мапа на упитник

**Извор за предају:** V-ПФР sandbox (`vsdc.sandbox.suf.purs.gov.rs`), JID `3LAMY8QM`, groupId **8**, датум тока **2026-07-17**.  
PDF са QR: `docs/sertifikacija-sandbox/pdf/`. Текст + JSON: `docs/sertifikacija-sandbox/izlaz/`. Преглед: `docs/sertifikacija-sandbox/PREGLED.md`.

СУФ-01 захтева да примери са ИД купца искажу и **опционо поље купца** где се користи; QR мора бити **очитав**.  
Купац у свим „+ИД купца“ примерима: **КУПАЦ ДОО**, `buyerId` = `10:112233445`.

| Упитник 17 | Захтев (Тип 3) | DigiPOS sandbox прилог | PFR број |
|------------|----------------|------------------------|----------|
| П1 | Промет Продаја + ИД купца | `pdf/04-PP-kupac.pdf` | `…-91` |
| П1б | Промет Продаја + ЈБКЈС (тип 12) | `pdf/14-PP-jbkjs.pdf` | `…-92` |
| П2 | Промет Рефундација + ИД купца | `pdf/15-PR-kupac.pdf` | `…-102` |
| П3 | Копија Продаја + ИД купца | `pdf/16-KP-kupac.pdf` | `…-103` |
| П4 | Копија Рефундација + ИД купца | `pdf/17-KR-kupac.pdf` | `…-104` |
| П5 | Предрачун Продаја + ИД купца | `pdf/18-RP-kupac.pdf` | `…-105` |
| П6 | Предрачун Рефундација + ИД купца | `pdf/19-RR-kupac.pdf` | `…-106` |
| П7 | Обука Продаја + ИД купца | `pdf/20-OP-kupac.pdf` | `…-107` |
| П8 | Обука Рефундација + ИД купца | `pdf/21-OR-kupac.pdf` | `…-108` |
| П9 | Аванс Продаја + ИД купца | `pdf/22-AP-kupac.pdf` | `…-109` |
| П10 | Аванс Рефундација + ИД купца | `pdf/23-AR-kupac.pdf` | `…-110` |
| П11 | Промет Продаја | `pdf/01-PP.pdf` (+ mix `02`, вирман `03`, GTIN `13`, по авансу `12`) | `…-88` |
| П12 | Копија Продаја | `pdf/06-KP.pdf` | `…-94` |
| П13 | Предрачун Продаја | `pdf/08-RP.pdf` | `…-96` |
| П14 | Обука Продаја | `pdf/09-OP.pdf` | `…-97` |
| П15 | Аванс Продаја | `pdf/10-AP.pdf` | `…-98` |

**Покривено (потписано на V-ПФР + PDF + очитав QR):** свих 15 ставки упитника 17.
Сваки тип документа постоји и без и **са** идентификацијом купца; уз то: Промет+ЈБКЈС (тип 12),
вишеструко плаћање, вирман, GTIN, нулта стопа и ланац аванса (АП → АР → коначни ПП).

**Бројачи потврђени од стране ПФР-а:** ПП, ПР, КП, КР, РП, **РР**, ОП, **ОР**, АП, АР —
свих 10 комбинација врате од V-ПФР-а, укључујући Предрачун-Рефундацију (`РР`) и
Обука-Рефундацију (`ОР`) које ранијe нису биле у сету.

### Примери као термални исечци

Страна документа: **A4**. Сваки пример на **посебној страни**.  
Ширина приказа = **80 mm** термална трака (мало више од ⅓ ширине A4) — иста размера као на штампачу.

<!--PRIMERI-->
