From b3739e3210019bfc74d3fbf4d878eb1fedc989ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Mon, 22 Jun 2026 15:47:05 +0200 Subject: [PATCH] =?UTF-8?q?Servis:=20hook=20potra=C5=BEivanih=20delova=20i?= =?UTF-8?q?=20pri=20direktnoj=20izmeni=20koli=C4=8Dine=20artikla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/handler/magacin_forma.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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) }