From 5f017fd7ed135a630d13a4b3bc4419dbefbc4502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Sat, 20 Jun 2026 00:40:29 +0200 Subject: [PATCH] =?UTF-8?q?Servis:=20pregled=20tro=C5=A1kova,=20auto-cena?= =?UTF-8?q?=20delova,=20modalni=20prozor=20za=20potvrdu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Detalji naloga prikazuju cenu usluge, ugrađene delove, ukupno i za naplatu kao zasebne stavke - Otpremnica uključuje stavku ugrađenih delova u obračun - Biranje artikla u formi za delove automatski popunjava cenu po komadu - Zamenjen confirm() sa prilagođenim modalnim prozorom za sve potvrde --- internal/handler/servis.go | 37 +++++++++++++ web/templates/stranice/servis_detalji.html | 45 +++++++++++++--- web/templates/stranice/servis_otpremnica.html | 10 ++-- web/templates/teme/podrazumevana/base.html | 54 ++++++++++++++++++- 4 files changed, 135 insertions(+), 11 deletions(-) diff --git a/internal/handler/servis.go b/internal/handler/servis.go index e7f1adb..56e537b 100644 --- a/internal/handler/servis.go +++ b/internal/handler/servis.go @@ -46,6 +46,9 @@ type PodaciDetaljiNaloga struct { ServisniDelovi []model.ServisniDeoSaArtiklom Artikli []model.ArtikalSaKategorijom Sacuvano bool + UkupnoDelovi float64 + UkupnoSve float64 + PreostaloSve float64 } // Servis renderuje listu servisnih naloga sa opcionom pretragom i filterom statusa @@ -355,6 +358,23 @@ func (h *Handler) DetaljiNaloga(w http.ResponseWriter, r *http.Request) { slog.Error("greška pri učitavanju artikala", "error", err) } + var ukupnoDelovi float64 + for _, d := range delovi { + ukupnoDelovi += d.Ukupno() + } + var ukupnoSve, preostaloSve float64 + if nalog.CenaKonacna != nil { + ukupnoSve = *nalog.CenaKonacna + ukupnoDelovi + avans := 0.0 + if nalog.Avans != nil { + avans = *nalog.Avans + } + preostaloSve = ukupnoSve - avans + if preostaloSve < 0 { + preostaloSve = 0 + } + } + ps := h.popuniPodaciStranice(r, podesavanja) ps.Stranica = "servis" ps.NaslovStranice = "Detalji naloga" @@ -366,6 +386,9 @@ func (h *Handler) DetaljiNaloga(w http.ResponseWriter, r *http.Request) { ServisniDelovi: delovi, Artikli: artikli, Sacuvano: r.URL.Query().Get("sacuvano") == "1", + UkupnoDelovi: ukupnoDelovi, + UkupnoSve: ukupnoSve, + PreostaloSve: preostaloSve, } h.renderujTemplate(w, "servis_detalji", podaci) @@ -638,6 +661,7 @@ type PodaciOtpremnice struct { Nalog model.ServisniNalog ServisniDelovi []model.ServisniDeoSaArtiklom UkupnoDelovi float64 + PreostaloSve float64 Klijent *model.Klijent KlijentNaziv string TehnicarNaziv string @@ -700,11 +724,24 @@ func (h *Handler) StampaOtpremnice(w http.ResponseWriter, r *http.Request) { for _, d := range delovi { ukupnoDelovi += d.Ukupno() } + var preostaloSve float64 + if nalog.CenaKonacna != nil { + ukupnoSve := *nalog.CenaKonacna + ukupnoDelovi + avans := 0.0 + if nalog.Avans != nil { + avans = *nalog.Avans + } + preostaloSve = ukupnoSve - avans + if preostaloSve < 0 { + preostaloSve = 0 + } + } h.renderujStandalone(w, "servis_otpremnica", PodaciOtpremnice{ Nalog: *nalog, ServisniDelovi: delovi, UkupnoDelovi: ukupnoDelovi, + PreostaloSve: preostaloSve, Klijent: klijent, KlijentNaziv: klijentNaziv, TehnicarNaziv: tehnicarNaziv, diff --git a/web/templates/stranice/servis_detalji.html b/web/templates/stranice/servis_detalji.html index 0ee0ad7..6867522 100644 --- a/web/templates/stranice/servis_detalji.html +++ b/web/templates/stranice/servis_detalji.html @@ -161,22 +161,38 @@
-
Konačna cena
-
+
Cena usluge
+
{{if .Nalog.CenaKonacna}}{{.Nalog.CenaKonacnaStr}} din{{else}}—{{end}}
+ {{if gt .UkupnoDelovi 0.0}} +
+
Ugrađeni delovi
+
+ {{printf "%.2f" .UkupnoDelovi}} din +
+
+ {{end}} + {{if .Nalog.CenaKonacna}} +
+
Ukupno
+
+ {{printf "%.2f" .UkupnoSve}} din +
+
+ {{end}}
Avans
{{if .Nalog.Avans}}{{.Nalog.AvansStr}} din{{else}}—{{end}}
- {{if .Nalog.PreostaloZaNaplatu}} + {{if .Nalog.CenaKonacna}}
-
Preostalo za naplatu
+
Za naplatu
- {{.Nalog.PreostaloZaNaplatuStr}} din + {{printf "%.2f" .PreostaloSve}} din
{{end}} @@ -199,7 +215,7 @@
@@ -279,4 +295,21 @@ + + {{end}} diff --git a/web/templates/stranice/servis_otpremnica.html b/web/templates/stranice/servis_otpremnica.html index 18db820..36a939a 100644 --- a/web/templates/stranice/servis_otpremnica.html +++ b/web/templates/stranice/servis_otpremnica.html @@ -199,6 +199,12 @@ Cena usluge {{.Nalog.CenaKonacnaStr}} din + {{if gt .UkupnoDelovi 0.0}} + + Ugrađeni delovi i materijal + {{printf "%.2f" .UkupnoDelovi}} din + + {{end}} {{if .Nalog.Avans}} Avans (plaćeno) @@ -207,12 +213,10 @@ {{end}} - {{if .Nalog.PreostaloZaNaplatu}}
Za naplatu pri preuzimanju:
-
{{.Nalog.PreostaloZaNaplatuStr}} din
+
{{printf "%.2f" .PreostaloSve}} din
- {{end}} {{end}} diff --git a/web/templates/teme/podrazumevana/base.html b/web/templates/teme/podrazumevana/base.html index 6741ba8..753c19e 100644 --- a/web/templates/teme/podrazumevana/base.html +++ b/web/templates/teme/podrazumevana/base.html @@ -226,8 +226,51 @@ {{block "dodatni-js" .}}{{end}} + + +