diff --git a/internal/handler/servis.go b/internal/handler/servis.go
index 40a3a8d..f797cde 100644
--- a/internal/handler/servis.go
+++ b/internal/handler/servis.go
@@ -1272,10 +1272,20 @@ func (h *Handler) PromeniStatus(w http.ResponseWriter, r *http.Request) {
return
}
+ trenutni, e := h.ServisRepo.DohvatiID(r.Context(), id)
+
+ // „Čeka delove" je automatski status (postavlja se kad nedostaje deo) —
+ // ne može se izabrati ručno ni iz jednog drugog statusa
+ if noviStatus == model.StatusCekaDelove && e == nil && trenutni.Status != model.StatusCekaDelove {
+ middleware.SetFlash(w, r, h.DB, "greska",
+ "Status „Čeka delove\" se postavlja automatski kada nedostaje deo i ne može se izabrati ručno.")
+ http.Redirect(w, r, "/servis/"+strconv.FormatInt(id, 10), http.StatusSeeOther)
+ return
+ }
+
// zabrana izlaska iz „Čeka delove" dok postoje potraživani delovi —
// prvo nabaviti delove, pa obrisati iz potraživanih (ili kroz nabavku)
- if nalog, e := h.ServisRepo.DohvatiID(r.Context(), id); e == nil &&
- nalog.Status == model.StatusCekaDelove && noviStatus != model.StatusCekaDelove {
+ if e == nil && trenutni.Status == model.StatusCekaDelove && noviStatus != model.StatusCekaDelove {
potrazivani, err := h.ServisniPotrazivaniDeloviRepo.DohvatiZaNalog(r.Context(), id)
if err == nil && len(potrazivani) > 0 {
middleware.SetFlash(w, r, h.DB, "greska",
diff --git a/web/templates/stranice/servis_detalji.html b/web/templates/stranice/servis_detalji.html
index be2ba88..fcce333 100644
--- a/web/templates/stranice/servis_detalji.html
+++ b/web/templates/stranice/servis_detalji.html
@@ -48,8 +48,11 @@
{{if .ZakljucanStatus}}
🔒 Status zaključan — obrišite delove koji nedostaju