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
+11 -2
View File
@@ -1,6 +1,7 @@
package handler
import (
"errors"
"net/http"
"strconv"
"strings"
@@ -92,7 +93,11 @@ func (h *Handler) SacuvajUslugu(w http.ResponseWriter, r *http.Request) {
return
}
if _, err := h.UslugeRepo.Kreiraj(r.Context(), &usluga); err != nil {
h.renderujFormuUsluge(w, r, usluga, false, "Greška pri čuvanju usluge. Pokušajte ponovo.")
poruka := "Greška pri čuvanju usluge. Pokušajte ponovo."
if errors.Is(err, db.ErrUslugaDuplikatSifre) {
poruka = "Šifra već postoji kod druge usluge."
}
h.renderujFormuUsluge(w, r, usluga, false, poruka)
return
}
http.Redirect(w, r, "/usluge?sacuvano=1", http.StatusSeeOther)
@@ -115,7 +120,11 @@ func (h *Handler) SacuvajIzmenuUsluge(w http.ResponseWriter, r *http.Request) {
return
}
if err := h.UslugeRepo.Izmeni(r.Context(), &usluga); err != nil {
h.renderujFormuUsluge(w, r, usluga, true, "Greška pri čuvanju usluge. Pokušajte ponovo.")
poruka := "Greška pri čuvanju usluge. Pokušajte ponovo."
if errors.Is(err, db.ErrUslugaDuplikatSifre) {
poruka = "Šifra već postoji kod druge usluge."
}
h.renderujFormuUsluge(w, r, usluga, true, poruka)
return
}
http.Redirect(w, r, "/usluge?sacuvano=1", http.StatusSeeOther)