diff --git a/internal/handler/magacin_forma.go b/internal/handler/magacin_forma.go index 32dd6c5..7f40aa7 100644 --- a/internal/handler/magacin_forma.go +++ b/internal/handler/magacin_forma.go @@ -236,9 +236,11 @@ func (h *Handler) SacuvajIzmenuArtikla(w http.ResponseWriter, r *http.Request) { return } - // stara prodajna cena — za nivelacioni trag ako se promeni kroz izmenu + // stara prodajna cena i količina — za nivelacioni trag i hook potraživanih delova var staraCena float64 + var staraKolicina int if stari, e := h.Artikli.DohvatiID(r.Context(), id); e == nil { + staraKolicina = stari.Kolicina staraCena = stari.ProdajnaCena // spreči promenu tipa sa proizvoda na uslugu/trošak ako artikal ima zalihu if stari.PratiLager() && stari.Kolicina > 0 && !artikal.PratiLager() { @@ -274,6 +276,19 @@ func (h *Handler) SacuvajIzmenuArtikla(w http.ResponseWriter, r *http.Request) { } } + // ako je stanje poraslo, proveri potraživane servisne delove + if artikal.Kolicina > staraKolicina { + otkljucani, err := h.ServisniPotrazivaniDeloviRepo.ProveriIPocistiZaArtikal(r.Context(), id) + if err != nil { + slog.Error("provera potraživanih delova nije uspela", "artikal_id", id, "error", err) + } + for _, nalogID := range otkljucani { + if err := h.ServisRepo.AzurirajStatus(r.Context(), nalogID, model.StatusPrimljeno); err != nil { + slog.Error("automatski reset statusa naloga nije uspeo", "nalog_id", nalogID, "error", err) + } + } + } + http.Redirect(w, r, "/magacin?sacuvano=1", http.StatusSeeOther) }