KPO: knjiga o ostvarenom prometu — lista, ručni unos, backfill, auto-upis iz prodaje i servisa

This commit is contained in:
2026-06-30 21:13:16 +02:00
parent 3166a93e1d
commit 432a559902
13 changed files with 664 additions and 2 deletions
+24
View File
@@ -3,6 +3,7 @@ package handler
import (
"encoding/json"
"errors"
"fmt"
"html/template"
"log/slog"
"net/http"
@@ -293,6 +294,22 @@ func (h *Handler) SacuvajProdaju(w http.ResponseWriter, r *http.Request) {
}
}
// auto-KPO: svaki potvrđeni nalog ide u KPO ako je modul aktivan
if h.modulUkljucen(r.Context(), "kpo") {
kpoZ := model.KpoZapis{
DatumPrometa: nalog.Datum,
BrojDokumenta: nalog.BrojNaloga,
Opis: fmt.Sprintf("Prodaja %s", nalog.BrojNaloga),
Prihod: nalog.Ukupno,
NacinPlacanja: nalog.NacinPlacanja,
Izvor: "prodaja",
IzvorID: &id,
}
if _, e := h.KpoRepo.Kreiraj(r.Context(), &kpoZ); e != nil {
slog.Error("auto-upis u KPO nije uspeo", "prodaja_id", id, "error", e)
}
}
http.Redirect(w, r, "/prodaja/"+strconv.FormatInt(id, 10)+"?sacuvano=1", http.StatusSeeOther)
}
@@ -585,6 +602,13 @@ func (h *Handler) StornoProdaje(w http.ResponseWriter, r *http.Request) {
}
}
// brisanje KPO zapisa na storno
if h.modulUkljucen(r.Context(), "kpo") {
if e := h.KpoRepo.ObrisiPoIzvoru(r.Context(), "prodaja", id); e != nil {
slog.Error("brisanje vezanog KPO zapisa nije uspelo", "prodaja_id", id, "error", e)
}
}
http.Redirect(w, r, "/prodaja/"+strconv.FormatInt(id, 10)+"?sacuvano=1", http.StatusSeeOther)
}