KIR: prikaz sumnjivih duplikata (double-submit) preskočenih pri backfill-u

Na KIR stranici se sad vidi kartica sa B2B prodajama koje je automatski
backfill preskočio jer izgledaju kao dupli submit forme naplate (isti kupac
i iznos u roku od 60s) — sa objašnjenjem i linkom na ručni unos ili storno.
This commit is contained in:
2026-07-02 10:41:53 +02:00
parent 45831467e0
commit e26bda5d34
2 changed files with 73 additions and 11 deletions
+29 -11
View File
@@ -8,6 +8,7 @@ import (
"strings"
"time"
appdb "ntech/internal/db"
"ntech/internal/db/sqlite"
"ntech/internal/middleware"
"ntech/internal/model"
@@ -20,11 +21,12 @@ import (
// PodaciPdvKir su podaci za pregled knjige izdatih računa
type PodaciPdvKir struct {
model.PodaciStranice
Zapisi []model.PdvKir
Sume model.PdvKirSume
Od string // filter perioda (YYYY-MM-DD), prazno = bez granice
Do string
Zastareo map[int64]bool // ID zapisa dnevnog pazara čiji je iznos van sinhronizacije sa trenutnim prometom (npr. posle naknadnog storna)
Zapisi []model.PdvKir
Sume model.PdvKirSume
Od string
Do string
Zastareo map[int64]bool
SumnjiviDuplikati []model.ProdajniNalogSaDetaljem // B2B prodaje preskočene pri backfill-u (double-submit)
}
// PodaciPdvKirForma su podaci za formu unosa zapisa KIR
@@ -105,13 +107,29 @@ func (h *Handler) PdvKir(w http.ResponseWriter, r *http.Request) {
ps := h.popuniPodaciStranice(r, podesavanja)
ps.Stranica = "pdv-kir"
ps.NaslovStranice = "KIR — knjiga izdatih računa"
// detektuj sumnjive duplikate (double-submit) da ih korisnik vidi
var sumnjivi []model.ProdajniNalogSaDetaljem
if _, _, kandidati, err := h.kirKandidatiProdaje(r.Context()); err == nil {
duplikati := sumnjiviDuplikati(kandidati)
if len(duplikati) > 0 {
nalozi, _ := h.ProdajaRepo.Lista(r.Context(), appdb.ProdajaFilter{})
for _, nd := range nalozi {
if duplikati[nd.ID] {
sumnjivi = append(sumnjivi, nd)
}
}
}
}
h.renderujTemplate(w, "pdv_kir", PodaciPdvKir{
PodaciStranice: ps,
Zapisi: zapisi,
Sume: model.SumirajKir(zapisi),
Od: odStr,
Do: doStr,
Zastareo: zastareo,
PodaciStranice: ps,
Zapisi: zapisi,
Sume: model.SumirajKir(zapisi),
Od: odStr,
Do: doStr,
Zastareo: zastareo,
SumnjiviDuplikati: sumnjivi,
})
}