Sprečeno dupliranje prodaje/servisa, alat za usklađivanje šifri artikla, ispravke osvežavanja stranica, zaštita od duplikata kategorije/artikla/usluge/troška

- Prodaja i servis: broj naloga se generiše unutar transakcije upisa umesto unapred u handleru, čime se otklanja duplo kreiranje naloga pri dvostrukom slanju forme
- Servis izmena: uklonjen sudar generičkog i sopstvenog auto-snimanja forme (dva paralelna POST-a)
- Magacin: novi alat 'Uskladi šifre sa kategorijama' za masovnu ispravku šifri artikala posle uvođenja šifarnika po kategoriji
- Ispravljeno da forme na 9 stranica (kategorije, admin korisnici/dozvole, profil, podešavanja) posle akcije osveže prikaz umesto da ostanu zastarele do F5
- Kategorija, artikal, usluga i trošak: sprečeno dupliranje naziva/šifre/koda (UNIQUE indeksi + razumljive poruke grešaka)
This commit is contained in:
2026-07-07 03:50:31 +02:00
parent 1ff572dd77
commit bc60288a0d
28 changed files with 682 additions and 110 deletions
+6 -2
View File
@@ -25,7 +25,11 @@
<div class="poruka-greska greska-animacija" style="margin-bottom:16px;">{{.Greska}}</div>
{{end}}
<form id="forma-nalog" method="POST" action="{{if .Izmena}}/servis/izmeni/{{.Nalog.ID}}{{else}}/servis/novi{{end}}"{{if .Izmena}} data-autosave="1"{{end}}>
<!-- data-autosave-custom (NE data-autosave) — ova forma ima SOPSTVENI auto-save skript
ispod (šalje X-Autosave header, prikazuje status "Čuvam.../Sačuvano ✓"). Generički
data-autosave mehanizam iz base.html bi se kačio na isti 'change' event i slao
DRUGI, konfliktni POST bez tog headera — otud namerno drugačije ime atributa. -->
<form id="forma-nalog" method="POST" action="{{if .Izmena}}/servis/izmeni/{{.Nalog.ID}}{{else}}/servis/novi{{end}}"{{if .Izmena}} data-autosave-custom="1"{{end}}>
<!-- broj naloga ide kao hidden — server ga je generisao, vraćamo ga pri POST-u -->
<input type="hidden" name="broj_naloga" value="{{.Nalog.BrojNaloga}}">
@@ -311,7 +315,7 @@
// a za select/date/checkbox na izbor — jedan slušalac pokriva sve tipove.
(function () {
var forma = document.getElementById('forma-nalog');
if (!forma || forma.dataset.autosave !== '1') return;
if (!forma || forma.dataset.autosaveCustom !== '1') return;
var status = document.getElementById('autosave-status');
var slanjeUToku = false;
var ponoviPoZavrsetku = false;