diff --git a/internal/db/repository.go b/internal/db/repository.go index 23ef318..1d06dc0 100644 --- a/internal/db/repository.go +++ b/internal/db/repository.go @@ -71,8 +71,10 @@ type PdvKirRepository interface { // PostojiZaIzvor vraća true ako postoji bar jedan zapis za dati izvor i izvorID PostojiZaIzvor(ctx context.Context, izvor string, izvorID int64) (bool, error) // PostojiPoBrojuDokumenta vraća true ako postoji zapis sa datim brojem dokumenta - // (npr. zaštita od duplog unosa dnevnog pazara "FISK-YYYYMMDD") + // (npr. za prikaz upozorenja da je dnevni pazar "FISK-YYYYMMDD" već upisan) PostojiPoBrojuDokumenta(ctx context.Context, brojDokumenta string) (bool, error) + // ObrisiPoBrojuDokumenta briše zapis(e) sa datim brojem dokumenta (zamena pri ažuriranju) + ObrisiPoBrojuDokumenta(ctx context.Context, brojDokumenta string) error } // PdvKprRepository definiše operacije nad knjigom primljenih računa (KPR) diff --git a/internal/db/sqlite/pdv_evidencija.go b/internal/db/sqlite/pdv_evidencija.go index 1851c61..666c668 100644 --- a/internal/db/sqlite/pdv_evidencija.go +++ b/internal/db/sqlite/pdv_evidencija.go @@ -148,6 +148,15 @@ func (r *PdvKirRepo) PostojiZaIzvor(ctx context.Context, izvor string, izvorID i return n > 0, nil } +// ObrisiPoBrojuDokumenta briše KIR zapis(e) sa datim brojem dokumenta (za zamenu +// zbirnog dnevnog pazara ažuriranim iznosima). +func (r *PdvKirRepo) ObrisiPoBrojuDokumenta(ctx context.Context, brojDokumenta string) error { + if _, err := r.db.ExecContext(ctx, "DELETE FROM pdv_kir WHERE broj_dokumenta = ?", brojDokumenta); err != nil { + return fmt.Errorf("ntech: PdvKirRepo.ObrisiPoBrojuDokumenta: %w", err) + } + return nil +} + // PostojiPoBrojuDokumenta vraća true ako postoji KIR zapis sa datim brojem dokumenta func (r *PdvKirRepo) PostojiPoBrojuDokumenta(ctx context.Context, brojDokumenta string) (bool, error) { var n int diff --git a/internal/handler/pdv_kir.go b/internal/handler/pdv_kir.go index 5c0b91e..3aef6b3 100644 --- a/internal/handler/pdv_kir.go +++ b/internal/handler/pdv_kir.go @@ -327,11 +327,11 @@ func (h *Handler) SacuvajDnevniPazarKir(w http.ResponseWriter, r *http.Request) return } + // ako za ovaj dan već postoji zbirni zapis, zameni ga ažuriranim iznosima + // (npr. naknadni storno ili prodaja posle prethodnog upisa promenili su promet tog dana) brojDokumenta := fmt.Sprintf("FISK-%s", datum.Format("20060102")) - if postoji, _ := h.PdvKirRepo.PostojiPoBrojuDokumenta(r.Context(), brojDokumenta); postoji { - middleware.SetFlash(w, r, h.DB, "greska", fmt.Sprintf("Dnevni pazar za %s je već upisan u KIR.", datum.Format("02.01.2006."))) - http.Redirect(w, r, "/pdv/kir/dnevni-pazar?datum="+datumStr, http.StatusSeeOther) - return + if err := h.PdvKirRepo.ObrisiPoBrojuDokumenta(r.Context(), brojDokumenta); err != nil { + slog.Error("brisanje starog dnevnog pazara nije uspelo", "datum", datum, "error", err) } z := model.PdvKir{ diff --git a/web/templates/stranice/pdv_kir_dnevni_pazar.html b/web/templates/stranice/pdv_kir_dnevni_pazar.html index d4d3d46..2ed9f5c 100644 --- a/web/templates/stranice/pdv_kir_dnevni_pazar.html +++ b/web/templates/stranice/pdv_kir_dnevni_pazar.html @@ -82,13 +82,13 @@
⚠ Već upisano
-
Dnevni pazar za {{.Datum}} je već upisan u KIR. Ponovni upis bi duplirao promet za ovaj dan.
+
Dnevni pazar za {{.Datum}} je već upisan u KIR. Ako je promet tog dana naknadno promenjen (storno ili nova prodaja), ažuriranjem se stari zapis zamenjuje trenutnim iznosima.
{{end}} - {{if and (gt .Promet.BrojNaloga 0) (not .VecUpisano)}} - + {{if gt .Promet.BrojNaloga 0}} +
@@ -99,10 +99,17 @@
Odustani + {{if .VecUpisano}} + + {{else}} + {{end}}