Servis: ispravka logike potraživanih delova (5 bugova)
- BUG 1: pokriveni deo se sada prebacuje u ugrađene delove (servisni_delovi), ne samo skida sa magacina — roba više ne nestaje iz evidencije - BUG 2: DodajDeloNalogu sada atomično (UgradiIliPotrazuj) čita stanje i ugrađuje u istoj transakciji — nema TOCTOU, lager ne ide u minus - BUG 4: direktna izmena količine artikla beleži magacinski trag (korekcija) - BUG 5: greška pri dodavanju dela se propagira korisniku, ne guta se - uklonjen mrtav kod (Dodaj, DodajIliUvecaj) sa pogrešnim komentarom o minusu - migracija 068: cena_komada u potraživanim delovima - test TestPotrazivaniTok pokriva ceo tok
This commit is contained in:
@@ -251,12 +251,24 @@ func (h *Handler) SacuvajIzmenuArtikla(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
// promenu količine sprovodimo kroz KorigujKolicinu da bi se zabeležio magacinski
|
||||
// trag (korekcija); Izmeni menja samo metapodatke, ne dira stanje
|
||||
novaKolicina := artikal.Kolicina
|
||||
artikal.Kolicina = staraKolicina
|
||||
|
||||
artikal.ID = id
|
||||
if err := h.Artikli.Izmeni(r.Context(), &artikal); err != nil {
|
||||
http.Error(w, "Greška pri čuvanju izmene", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
// ako se količina promenila, koriguj stanje uz magacinski trag
|
||||
if novaKolicina != staraKolicina {
|
||||
if e := h.Artikli.KorigujKolicinu(r.Context(), id, novaKolicina, &k.ID, "izmena artikla"); e != nil {
|
||||
slog.Error("korekcija količine pri izmeni artikla nije uspela", "artikal_id", id, "error", e)
|
||||
}
|
||||
}
|
||||
|
||||
// ažuriraj dobavljače artikla prema formi
|
||||
if e := h.Artikli.PostaviDobavljaceArtikla(r.Context(), id, citajDobavljaceForme(r)); e != nil {
|
||||
slog.Error("čuvanje dobavljača artikla nije uspelo", "artikal_id", id, "error", e)
|
||||
@@ -277,7 +289,7 @@ func (h *Handler) SacuvajIzmenuArtikla(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
// ako je stanje poraslo, proveri potraživane servisne delove
|
||||
if artikal.Kolicina > staraKolicina {
|
||||
if novaKolicina > 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)
|
||||
|
||||
Reference in New Issue
Block a user