feat(pdv): KIR — handler, RequireModul, rute i UI (Faza 2a)

Pregled knjige izdatih računa (filter perioda + sume po stopama), forma
unosa (server računa ukupno) i brisanje. Nove dozvole pdv.*; prvi put
montiran RequireModul("pdv") — KIR je vidljiv u meniju (.Moduli) i
dostupan samo PDV obveznicima, uz RBAC. Oznaka PIB/JMBG po broju cifara.
This commit is contained in:
2026-06-13 23:45:24 +02:00
parent 26c829fef3
commit 53cbc789db
8 changed files with 446 additions and 0 deletions
+21
View File
@@ -225,6 +225,20 @@ func main() {
return ntechmw.RequireDozvolaMut(h.DozvoleRepo.ImaDozvolu, akcija)
}
// modul vraća middleware koji propušta zahtev samo ako je zakonski modul
// uključen za firmu (profil firme). Sloj IZNAD RBAC-a — zahtev mora proći
// i „modul uključen" (ovo) i „korisnik sme" (doz/zahtevajDozvolu).
proveriModul := func(ctx context.Context, m string) bool {
pod, err := sqlite.DohvatiSvaPodesavanja(ctx, h.DB)
if err != nil {
return false
}
return config.ModulUkljucen(pod, m)
}
modul := func(m string) func(http.Handler) http.Handler {
return ntechmw.RequireModul(proveriModul, m)
}
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/dashboard", http.StatusFound)
})
@@ -245,6 +259,13 @@ func main() {
r.Get("/podesavanja/backup", h.BackupBaze)
r.With(doz("backup.pokreni")).Post("/podesavanja/backup/vrati", h.VratiBackup)
// PDV evidencija — KIR (knjiga izdatih računa). Dostupno samo kada je modul
// „pdv" uključen za firmu (RequireModul), uz RBAC dozvolu pdv.*.
r.With(modul("pdv")).Get("/pdv/kir", h.PdvKir)
r.With(modul("pdv")).Get("/pdv/kir/nova", h.NoviPdvKir)
r.With(modul("pdv"), doz("pdv.dodaj")).Post("/pdv/kir/nova", h.SacuvajPdvKir)
r.With(modul("pdv"), doz("pdv.obrisi")).Post("/pdv/kir/obrisi/{id}", h.ObrisiPdvKir)
r.Get("/magacin", h.Magacin)
r.Get("/magacin/novi", h.NoviArtikal)
r.With(doz("artikal.dodaj")).Post("/magacin/novi", h.SacuvajArtikal)