Files
GoNtech/migrations/081_fiskalni_racuni.sql
T
Dasko edcea0ddcf Fiskalizacija: inicijalna implementacija (8 koraka)
1. migracija 081 — tabela fiskalni_racuni + podešavanja pfr_api_key/pfr_kasir
2. model FiskalniRacun (internal/model/fiskal.go)
3. FiskalRepository interfejs (repository.go)
4. SQLite repozitorijum (sqlite/fiskal.go — Kreiraj, DohvatiPoProdaji)
5. Paket internal/fiskal/ — HTTP klijent + mapiranje prodaja→invoiceRequest
6. Handler proširenje — FiskalRepo + fiskalKlijent() dinamički helper
7. Inicijalizacija kroz Novi() / reinicializuj — klijent se čita dinamički iz podešavanja
8. Prodaja integracija — fiskalizacija u SacuvajProdaju + QR prikaz u prodaja_detalji.html
2026-06-25 22:51:59 +02:00

34 lines
2.2 KiB
SQL

-- Fiskalni računi: veza prodaje sa PFR odgovorom (Teron L-PFR).
-- Svaki prodajni nalog može imati najviše jedan fiskalni račun (UNIQUE prodaja_id).
-- QR kod se čuva kao base64 PNG (dolazi gotov iz Fisk servera).
-- sirovi_odgovor čuva ceo JSON odgovor za audit (sadrži journal, taxItems, itd.).
CREATE TABLE IF NOT EXISTS fiskalni_racuni (
id INTEGER PRIMARY KEY AUTOINCREMENT,
prodaja_id INTEGER NOT NULL UNIQUE,
tip_racuna TEXT NOT NULL DEFAULT 'Normal',
tip_transakcije TEXT NOT NULL DEFAULT 'Sale',
pfr_broj TEXT NOT NULL, -- invoiceNumber iz PFR odgovora
pfr_vreme TEXT NOT NULL, -- sdcDateTime
brojac TEXT, -- invoiceCounter (npr. "1/1ПП")
ekstenzija_brojaca TEXT, -- invoiceCounterExtension (npr. "ПП")
url_verifikacija TEXT, -- verificationUrl
qr_kod TEXT, -- verificationQRCode (base64 PNG)
poreske_stavke TEXT, -- JSON niz taxItems[]
ukupno_za_naplatu REAL, -- totalAmount
ukupan_porez REAL, -- totalTax
sirovi_odgovor TEXT, -- ceo JSON odgovor (audit trail)
potpisao TEXT, -- signedBy
zatrazio TEXT, -- requestedBy
poruka TEXT, -- messages
storniran INTEGER NOT NULL DEFAULT 0, -- 1 ako je fiskalni račun storniran
vreme_kreiranja TEXT NOT NULL DEFAULT (datetime('now','localtime')),
FOREIGN KEY (prodaja_id) REFERENCES prodajni_nalozi(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_fiskalni_racuni_prodaja ON fiskalni_racuni(prodaja_id);
CREATE INDEX IF NOT EXISTS idx_fiskalni_racuni_pfr_broj ON fiskalni_racuni(pfr_broj);
-- Podešavanja za fiskalizaciju koja nedostaju u 080
INSERT OR IGNORE INTO podesavanja (kljuc, vrednost) VALUES ('pfr_api_key', '');
INSERT OR IGNORE INTO podesavanja (kljuc, vrednost) VALUES ('pfr_kasir', 'NTech');