Magacin: dodati šifra i barkod artikla sa auto-generisanjem

- Migracija 055: kolone sifra i barkod u tabeli artikli (UNIQUE indeksi)
- Model, repozitorijum i handleri ažurirani za nova polja
- Pretraga u magacinu pokriva i šifru i barkod
- Forma predlaže sledeću šifru (ART-NNNNN), korisnik može izmeniti
- Ako se ostavi prazno, šifra se auto-dodeljuje po ID-u pri čuvanju
This commit is contained in:
2026-06-19 19:35:24 +02:00
parent 9e4d658d05
commit bdb0f4b1ae
6 changed files with 97 additions and 11 deletions
+19
View File
@@ -37,12 +37,19 @@ func (h *Handler) NoviArtikal(w http.ResponseWriter, r *http.Request) {
return
}
predlogSifre, err := h.Artikli.SledecaSifra(r.Context())
if err != nil {
slog.Error("greška pri generisanju predloga šifre", "err", err)
predlogSifre = "ART-00001"
}
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "magacin"
ps.NaslovStranice = "Novi artikal"
h.renderujFormuArtikla(w, PodaciFormeArtikla{
PodaciStranice: ps,
Kategorije: kategorije,
Artikal: model.Artikal{Sifra: predlogSifre},
Izmena: false,
})
}
@@ -87,6 +94,16 @@ func (h *Handler) SacuvajArtikal(w http.ResponseWriter, r *http.Request) {
return
}
// ako korisnik nije uneo šifru, auto-generišemo po ID-u
if artikal.Sifra == "" {
autoSifra := fmt.Sprintf("ART-%05d", id)
artikal.ID = id
artikal.Sifra = autoSifra
if err := h.Artikli.Izmeni(r.Context(), &artikal); err != nil {
slog.Error("greška pri upisu auto-šifre", "id", id, "err", err)
}
}
// fetch zahtev (iz modala) dobija JSON sa ID-em i nazivom novog artikla
if r.Header.Get("X-Requested-With") == "fetch" {
w.Header().Set("Content-Type", "application/json")
@@ -221,6 +238,8 @@ func parseFormuArtikla(r *http.Request) (model.Artikal, string) {
var artikal model.Artikal
artikal.Naziv = naziv
artikal.Sifra = r.FormValue("sifra")
artikal.Barkod = r.FormValue("barkod")
artikal.Opis = r.FormValue("opis")
artikal.Lokacija = r.FormValue("lokacija")
artikal.Napomena = r.FormValue("napomena")