From 6f4aed21842e2047fdb5ec4e7c88e346a752070d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Fri, 26 Jun 2026 01:07:41 +0200 Subject: [PATCH] =?UTF-8?q?Servis:=20automatski=20upis=20u=20KIR=20pri=20p?= =?UTF-8?q?reuzimanju=20(ako=20je=20firma=20PDV=20obveznik)=20Pri=20prelas?= =?UTF-8?q?ku=20u=20Preuzeto,=20radovi=20i=20delovi=20se=20automatski=20kn?= =?UTF-8?q?ji=C5=BEe=20u=20KIR=20(20%=20PDV,=20op=C5=A1ta=20stopa).=20Pres?= =?UTF-8?q?ka=C4=8Du=20se=20predlo=C5=BEene=20stavke=20i=20odbijene=20popr?= =?UTF-8?q?avke.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/handler/servis.go | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/internal/handler/servis.go b/internal/handler/servis.go index 04f4457..7998e78 100644 --- a/internal/handler/servis.go +++ b/internal/handler/servis.go @@ -1988,6 +1988,59 @@ func (h *Handler) PromeniStatus(w http.ResponseWriter, r *http.Request) { h.fiskalizujServis(r.Context(), id, klijent, nacin, iznos) } } + + // automatski upis u KIR ako je firma PDV obveznik + if h.modulUkljucen(r.Context(), "pdv") { + nalog, _ := h.ServisRepo.DohvatiID(r.Context(), id) + if nalog != nil && !nalog.PopravkaOdbijena { + kupacNaziv, kupacPib, kupacMesto := "", "", "" + if nalog.KlijentID != nil { + if k, e := h.KlijentiRepo.DohvatiID(r.Context(), *nalog.KlijentID); e == nil { + kupacNaziv = k.PunoIme() + kupacPib = k.PIB + kupacMesto = k.Mesto + } + } + radovi, _ := h.ServisniRadoviRepo.DohvatiZaNalog(r.Context(), id) + delovi, _ := h.ServisniDeloviRepo.DohvatiZaNalog(r.Context(), id) + + kir := model.PdvKir{ + DatumPrometa: time.Now(), + DatumKnjizenja: time.Now(), + BrojDokumenta: nalog.BrojNaloga, + KupacNaziv: kupacNaziv, + KupacPib: kupacPib, + KupacMesto: kupacMesto, + Izvor: "servis", + IzvorID: &id, + } + for _, r := range radovi { + if r.Predlozeno { + continue + } + osnovica := r.Ukupno() / 1.2 // 20% PDV + pdv := r.Ukupno() - osnovica + kir.OsnovicaOpsta += osnovica + kir.PdvOpsta += pdv + kir.Ukupno += r.Ukupno() + } + for _, d := range delovi { + if d.Predlozeno { + continue + } + osnovica := d.Ukupno() / 1.2 + pdv := d.Ukupno() - osnovica + kir.OsnovicaOpsta += osnovica + kir.PdvOpsta += pdv + kir.Ukupno += d.Ukupno() + } + if kir.Ukupno > 0 { + if _, e := h.PdvKirRepo.Kreiraj(r.Context(), &kir); e != nil { + slog.Error("auto-upis u KIR za servis nije uspeo", "servis_id", id, "error", e) + } + } + } + } } http.Redirect(w, r, "/servis/"+strconv.FormatInt(id, 10)+"?sacuvano=1", http.StatusSeeOther)