diff --git a/internal/handler/fiskal_pazar.go b/internal/handler/fiskal_pazar.go index 94db409..28e0bc9 100644 --- a/internal/handler/fiskal_pazar.go +++ b/internal/handler/fiskal_pazar.go @@ -9,6 +9,7 @@ import ( "time" "unicode" + "ntech/internal/config" ntechsqlite "ntech/internal/db/sqlite" "ntech/internal/fiskal" "ntech/internal/middleware" @@ -56,6 +57,12 @@ func (h *Handler) FiskalniPazar(w http.ResponseWriter, r *http.Request) { podaci := PodaciFiskalniPazar{PodaciStranice: ps, Danas: time.Now().Format("2006-01-02")} + if !h.modulUkljucen(r.Context(), config.ModulFiskalizacija) { + podaci.Greska = "Fiskalizacija nije uključena u profilu firme — Podešavanja → Opšte → Pravni i poreski status." + h.renderujTemplate(w, "fiskal_pazar", podaci) + return + } + klijent := h.fiskalKlijent() if klijent == nil { podaci.Greska = "Fiskalizacija nije podešena — unesi URL PFR servera u Podešavanja → Fiskalizacija." @@ -82,6 +89,11 @@ func (h *Handler) ZakljuciFiskalniDan(w http.ResponseWriter, r *http.Request) { if _, ok := h.zahtevajDozvolu(w, r, "fiskal.zakljucenje"); !ok { return } + if !h.modulUkljucen(r.Context(), config.ModulFiskalizacija) { + middleware.SetFlash(w, r, h.DB, "greska", "Fiskalizacija nije uključena u profilu firme.") + http.Redirect(w, r, "/fiskal/pazar", http.StatusSeeOther) + return + } klijent := h.fiskalKlijent() if klijent == nil { middleware.SetFlash(w, r, h.DB, "greska", "Fiskalizacija nije podešena.") @@ -110,6 +122,11 @@ func (h *Handler) FiskalniIzvestaj(w http.ResponseWriter, r *http.Request) { http.Error(w, "Greška pri čitanju forme", http.StatusBadRequest) return } + if !h.modulUkljucen(r.Context(), config.ModulFiskalizacija) { + middleware.SetFlash(w, r, h.DB, "greska", "Fiskalizacija nije uključena u profilu firme.") + http.Redirect(w, r, "/fiskal/pazar", http.StatusSeeOther) + return + } klijent := h.fiskalKlijent() if klijent == nil { middleware.SetFlash(w, r, h.DB, "greska", "Fiskalizacija nije podešena.") diff --git a/web/static/js/ntech.js b/web/static/js/ntech.js index dc39160..3349eaa 100644 --- a/web/static/js/ntech.js +++ b/web/static/js/ntech.js @@ -226,6 +226,10 @@ document.addEventListener('alpine:init', () => { this.artikliOpcije = window._ntechArtikli || [] this.klijenti = window._ntechKlijenti || [] this.pdvObveznik = window._ntechPdvObveznik === true + // ako firma ne fiskalizuje, ne otvaramo ni prazan tab u pripremiFiskalniTab() — + // stranica detalja nikad neće imati FiskalniRacun da ga popuni, pa bi ostao + // trajno na about:blank (v. docs/Greške.md) + this.prikaziRacun = window._ntechFiskalizacija === true this.isMobile = window.matchMedia('(max-width: 768px)').matches window.matchMedia('(max-width: 768px)').addEventListener('change', e => { this.isMobile = e.matches diff --git a/web/templates/komponente/sidebar.html b/web/templates/komponente/sidebar.html index 8ca2c60..efd77c1 100644 --- a/web/templates/komponente/sidebar.html +++ b/web/templates/komponente/sidebar.html @@ -100,7 +100,7 @@ {{/* Knjigovodstvo — grupa: KIR/KPR/Obračun (modul „pdv") + Nivelacije (dozvola izmene cena) */}} {{$pdvVid := and (index .Moduli "pdv") (index .Dozvole "pdv.pregled")}} {{$kpoVid := and (index .Moduli "kpo") (index .Dozvole "kpo.pregled")}} - {{$pazarVid := index .Dozvole "fiskal.pazar"}} + {{$pazarVid := and (index .Moduli "fiskalizacija") (index .Dozvole "fiskal.pazar")}} {{$knjVid := or $pdvVid $kpoVid $pazarVid (index .Dozvole "artikal.izmeni")}} {{if $knjVid}} {{$knjAktivan := or (eq .Stranica "nivelacije") (eq .Stranica "kpo") (eq .Stranica "pdv-kir") (eq .Stranica "pdv-kpr") (eq .Stranica "pdv-obracun") (eq .Stranica "fiskal-pazar")}} diff --git a/web/templates/stranice/prodaja_detalji.html b/web/templates/stranice/prodaja_detalji.html index a109122..15e2fe9 100644 --- a/web/templates/stranice/prodaja_detalji.html +++ b/web/templates/stranice/prodaja_detalji.html @@ -252,18 +252,58 @@ Storno vraća sve artikle na stanje u magacinu. Nalog ostaje u evidenciji sa oznakom storniran. -
+ + + {{end}} {{if .FiskalniRacun}} @@ -296,6 +336,18 @@ } })(); + {{else}} + {{end}} {{if .FiskalGreska}} diff --git a/web/templates/stranice/prodaja_forma.html b/web/templates/stranice/prodaja_forma.html index aab5647..cf13464 100644 --- a/web/templates/stranice/prodaja_forma.html +++ b/web/templates/stranice/prodaja_forma.html @@ -21,6 +21,7 @@ var _ntechArtikli = {{.ArtikliJSON}}; var _ntechKlijenti = {{.KlijentiJSON}}; var _ntechPdvObveznik = {{if index .Moduli "pdv"}}true{{else}}false{{end}}; + var _ntechFiskalizacija = {{if index .Moduli "fiskalizacija"}}true{{else}}false{{end}};