diff --git a/cmd/ntech/main.go b/cmd/ntech/main.go index 15dd383..9e880a8 100644 --- a/cmd/ntech/main.go +++ b/cmd/ntech/main.go @@ -338,6 +338,7 @@ func main() { r.With(doz("servis.obrisi")).Post("/servis/obrisi/{id}", h.ObrisiNalog) r.With(ntechmw.RequireDozvola(h.DozvoleRepo.ImaDozvolu, "servis.pregled")).Get("/servis/{id}", h.DetaljiNaloga) r.With(ntechmw.RequireDozvola(h.DozvoleRepo.ImaDozvolu, "servis.pregled")).Get("/servis/{id}/stampa", h.StampaServisa) + r.With(ntechmw.RequireDozvola(h.DozvoleRepo.ImaDozvolu, "servis.pregled")).Get("/servis/{id}/otpremnica", h.StampaOtpremnice) r.With(doz("servis.izmeni")).Post("/servis/{id}/delovi", h.DodajDeloNalogu) r.With(doz("servis.izmeni")).Post("/servis/{id}/delovi/{deo_id}/obrisi", h.ObrisiDeloNaloga) r.Get("/izvestaji", h.Izvestaji) diff --git a/internal/handler/kes.go b/internal/handler/kes.go index fe6cac8..b6db5e2 100644 --- a/internal/handler/kes.go +++ b/internal/handler/kes.go @@ -38,7 +38,7 @@ var saSidebar = []string{ // standalone su šabloni bez base layouta var standaloneIme = []string{ - "prijava", "setup", "totp_provera", "prodaja_stampa", "servis_stampa", + "prijava", "setup", "totp_provera", "prodaja_stampa", "servis_stampa", "servis_otpremnica", } // sablonskeFunkcije su pomoćne funkcije dostupne u svim šablonima. diff --git a/internal/handler/servis.go b/internal/handler/servis.go index d3183ab..e7f1adb 100644 --- a/internal/handler/servis.go +++ b/internal/handler/servis.go @@ -632,3 +632,86 @@ func (h *Handler) StampaServisa(w http.ResponseWriter, r *http.Request) { PIB: podesavanja["pib"], }) } + +// PodaciOtpremnice su podaci za otpremnicu pri preuzimanju uređaja +type PodaciOtpremnice struct { + Nalog model.ServisniNalog + ServisniDelovi []model.ServisniDeoSaArtiklom + UkupnoDelovi float64 + Klijent *model.Klijent + KlijentNaziv string + TehnicarNaziv string + NazivFirme string + Podnazlov string + Adresa string + Telefon string + PIB string +} + +// StampaOtpremnice renderuje otpremnicu pri preuzimanju uređaja od strane klijenta +func (h *Handler) StampaOtpremnice(w http.ResponseWriter, r *http.Request) { + id, err := parseID(chi.URLParam(r, "id")) + if err != nil { + http.Error(w, "Neispravan ID naloga", http.StatusBadRequest) + return + } + + nalog, err := h.ServisRepo.DohvatiID(r.Context(), id) + if err != nil { + http.Error(w, "Nalog nije pronađen", http.StatusNotFound) + return + } + + delovi, err := h.ServisniDeloviRepo.DohvatiZaNalog(r.Context(), id) + if err != nil { + http.Error(w, "Greška pri učitavanju delova", http.StatusInternalServerError) + return + } + + podesavanja, err := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB) + if err != nil { + http.Error(w, "Greška pri učitavanju podešavanja", http.StatusInternalServerError) + return + } + + var klijent *model.Klijent + klijentNaziv := "" + if nalog.KlijentID != nil { + k, err := h.KlijentiRepo.DohvatiID(r.Context(), *nalog.KlijentID) + if err == nil { + klijent = k + if k.NazivFirme != "" { + klijentNaziv = k.NazivFirme + } else { + klijentNaziv = strings.TrimSpace(k.Ime + " " + k.Prezime) + } + } + } + + tehnicarNaziv := "" + if nalog.TehnicarID != nil { + tehnicar, err := h.KorisniciRepo.DohvatiPoID(r.Context(), *nalog.TehnicarID) + if err == nil { + tehnicarNaziv = tehnicar.KorisnickoIme + } + } + + var ukupnoDelovi float64 + for _, d := range delovi { + ukupnoDelovi += d.Ukupno() + } + + h.renderujStandalone(w, "servis_otpremnica", PodaciOtpremnice{ + Nalog: *nalog, + ServisniDelovi: delovi, + UkupnoDelovi: ukupnoDelovi, + Klijent: klijent, + KlijentNaziv: klijentNaziv, + TehnicarNaziv: tehnicarNaziv, + NazivFirme: podesavanja["naziv_firme"], + Podnazlov: podesavanja["podnazlov"], + Adresa: podesavanja["adresa"], + Telefon: podesavanja["telefon"], + PIB: podesavanja["pib"], + }) +} diff --git a/web/templates/stranice/servis_detalji.html b/web/templates/stranice/servis_detalji.html index 96294f3..0ee0ad7 100644 --- a/web/templates/stranice/servis_detalji.html +++ b/web/templates/stranice/servis_detalji.html @@ -47,7 +47,10 @@
- Štampaj nalog + Radni nalog + + + Otpremnica Izmeni nalog diff --git a/web/templates/stranice/servis_otpremnica.html b/web/templates/stranice/servis_otpremnica.html new file mode 100644 index 0000000..18db820 --- /dev/null +++ b/web/templates/stranice/servis_otpremnica.html @@ -0,0 +1,248 @@ + + + + + + Otpremnica — {{.Nalog.BrojNaloga}} + + + +
+ + +
+
+
{{if .NazivFirme}}{{.NazivFirme}}{{else}}— naziv firme —{{end}}
+
+ {{if .Podnazlov}}{{.Podnazlov}}
{{end}} + {{if .Adresa}}{{.Adresa}}
{{end}} + {{if .Telefon}}Tel: {{.Telefon}}
{{end}} + {{if .PIB}}PIB: {{.PIB}}{{end}} +
+
+
+
Otpremnica
+
{{.Nalog.BrojNaloga}}
+
Datum: {{.Nalog.DatumPrijema.Format "02.01.2006."}}
+ {{if .Nalog.DatumZavrsetka}} +
Završeno: {{.Nalog.DatumZavrsetka.Format "02.01.2006."}}
+ {{end}} +
+
+ + +
+
+
Isporučilac
+
{{if .NazivFirme}}{{.NazivFirme}}{{else}}—{{end}}
+
+ {{if .Adresa}}{{.Adresa}}
{{end}} + {{if .Telefon}}{{.Telefon}}{{end}} +
+
+
+
Primalac (klijent)
+ {{if .KlijentNaziv}} +
{{.KlijentNaziv}}
+
+ {{if .Klijent}} + {{if .Klijent.Telefon}}Tel: {{.Klijent.Telefon}}
{{end}} + {{if .Klijent.Email}}{{.Klijent.Email}}
{{end}} + {{if .Klijent.Mesto}}{{.Klijent.Mesto}}{{end}} + {{end}} +
+ {{else}} +
— klijent nije naveden —
+ {{end}} +
+
+ + +
+
Uređaj koji se preuzima
+
+
+
Naziv uređaja
+
{{.Nalog.Uredjaj}}
+
+
+
Serijski broj
+
{{if .Nalog.SerijskiBroj}}{{.Nalog.SerijskiBroj}}{{else}}{{end}}
+
+ {{if .TehnicarNaziv}} +
+
Tehničar
+
{{.TehnicarNaziv}}
+
+ {{end}} +
+ {{if .Nalog.Pribor}} +
+
Pribor i oprema
+
{{.Nalog.Pribor}}
+
+ {{end}} +
+ + +
+
Opis izvršenih radova
+
{{if .Nalog.OpisKvara}}{{.Nalog.OpisKvara}}{{else}}{{end}}
+
+ + + {{if .ServisniDelovi}} +
+
Ugrađeni delovi i materijal
+ + + + + + + + + + + {{range .ServisniDelovi}} + + + + + + + {{end}} + + + + + +
ArtikalKol.Cena/komUkupno
{{.ArtikalNaziv}}{{.Kolicina}}{{printf "%.2f" .CenaKomada}} din{{printf "%.2f" .Ukupno}} din
Ukupno delovi{{printf "%.2f" .UkupnoDelovi}} din
+
+ {{end}} + + + {{if .Nalog.CenaKonacna}} +
+
Obračun
+ + + + + + + {{if .Nalog.Avans}} + + + + + {{end}} + +
Cena usluge{{.Nalog.CenaKonacnaStr}} din
Avans (plaćeno)− {{.Nalog.AvansStr}} din
+ {{if .Nalog.PreostaloZaNaplatu}} +
+
Za naplatu pri preuzimanju:
+
{{.Nalog.PreostaloZaNaplatuStr}} din
+
+ {{end}} +
+ {{end}} + + + {{if .Nalog.GarancijaDo}} +
+
+
Garancija na izvršeni servis važi do:
+
{{.Nalog.GarancijaDo.Format "02.01.2006."}}
+
+
+ {{end}} + + {{if .Nalog.Napomena}} +
Napomena: {{.Nalog.Napomena}}
+ {{end}} + + +
+
+
Predao (tehničar / firma)
+
+
+
Preuzeo (klijent)
+
+
+ +
+ + + + +