Servis: zabrana ručnog postavljanja statusa Čeka delove
Čeka delove je automatski status (kad nedostaje deo). Server odbija ručni ulazak iz bilo kog drugog statusa, a dropdown više ne nudi tu opciju osim ako je nalog već u njoj.
This commit is contained in:
@@ -1272,10 +1272,20 @@ func (h *Handler) PromeniStatus(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
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 —
|
// zabrana izlaska iz „Čeka delove" dok postoje potraživani delovi —
|
||||||
// prvo nabaviti delove, pa obrisati iz potraživanih (ili kroz nabavku)
|
// prvo nabaviti delove, pa obrisati iz potraživanih (ili kroz nabavku)
|
||||||
if nalog, e := h.ServisRepo.DohvatiID(r.Context(), id); e == nil &&
|
if e == nil && trenutni.Status == model.StatusCekaDelove && noviStatus != model.StatusCekaDelove {
|
||||||
nalog.Status == model.StatusCekaDelove && noviStatus != model.StatusCekaDelove {
|
|
||||||
potrazivani, err := h.ServisniPotrazivaniDeloviRepo.DohvatiZaNalog(r.Context(), id)
|
potrazivani, err := h.ServisniPotrazivaniDeloviRepo.DohvatiZaNalog(r.Context(), id)
|
||||||
if err == nil && len(potrazivani) > 0 {
|
if err == nil && len(potrazivani) > 0 {
|
||||||
middleware.SetFlash(w, r, h.DB, "greska",
|
middleware.SetFlash(w, r, h.DB, "greska",
|
||||||
|
|||||||
@@ -48,8 +48,11 @@
|
|||||||
<input type="hidden" name="_csrf" value="{{.CsrfToken}}">
|
<input type="hidden" name="_csrf" value="{{.CsrfToken}}">
|
||||||
<select name="status" style="font-size:13px;padding:4px 8px;border-radius:6px;border:0.5px solid var(--ivica);background:var(--kartica-pozadina);color:var(--tekst-glavni);cursor:pointer;"{{if .ZakljucanStatus}} disabled title="Status zaključan dok ima delova koji nedostaju"{{end}}>
|
<select name="status" style="font-size:13px;padding:4px 8px;border-radius:6px;border:0.5px solid var(--ivica);background:var(--kartica-pozadina);color:var(--tekst-glavni);cursor:pointer;"{{if .ZakljucanStatus}} disabled title="Status zaključan dok ima delova koji nedostaju"{{end}}>
|
||||||
{{range .SviStatusi}}
|
{{range .SviStatusi}}
|
||||||
|
{{/* „Čeka delove" je automatski status — ne nudi se ručno, osim ako je nalog već u njemu */}}
|
||||||
|
{{if or (ne . "Čeka delove") (eq . $.Nalog.Status)}}
|
||||||
<option value="{{.}}"{{if eq . $.Nalog.Status}} selected{{end}}>{{.}}</option>
|
<option value="{{.}}"{{if eq . $.Nalog.Status}} selected{{end}}>{{.}}</option>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
{{end}}
|
||||||
</select>
|
</select>
|
||||||
{{if .ZakljucanStatus}}
|
{{if .ZakljucanStatus}}
|
||||||
<span style="font-size:12px;color:#dc2626;">🔒 Status zaključan — obrišite delove koji nedostaju</span>
|
<span style="font-size:12px;color:#dc2626;">🔒 Status zaključan — obrišite delove koji nedostaju</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user