diff --git a/internal/handler/podesavanja.go b/internal/handler/podesavanja.go index d978020..72ffba5 100644 --- a/internal/handler/podesavanja.go +++ b/internal/handler/podesavanja.go @@ -51,6 +51,7 @@ type PodaciPodesavanja struct { KalkulacijaMarza string ServisGarancijaMeseci string PredracunRokDana string + PredvidjenRokDana string LoginPozadina string LoginPozadinaOpacity string LoginPozadinaBlurPozadine string @@ -393,6 +394,19 @@ func (h *Handler) SacuvajPodesavanja(w http.ResponseWriter, r *http.Request) { } } + if v := strings.TrimSpace(r.FormValue("predvidjen_rok_dana")); v != "" { + n, err := strconv.Atoi(v) + if err != nil || n < 1 || n > 365 { + middleware.SetFlash(w, r, h.DB, "greska", "Predviđen rok popravke mora biti broj između 1 i 365 dana.") + http.Redirect(w, r, sledeci, http.StatusSeeOther) + return + } + if err := ntechsqlite.SacuvajPodesavanje(r.Context(), h.DB, "predvidjen_rok_dana", strconv.Itoa(n)); err != nil { + http.Error(w, "Greška pri čuvanju podešavanja", http.StatusInternalServerError) + return + } + } + http.Redirect(w, r, sledeci+"?sacuvano=1", http.StatusSeeOther) } @@ -767,6 +781,7 @@ func (h *Handler) napuniPodaciPodesavanja(r *http.Request, naslov string) (Podac KalkulacijaMarza: vrednostIliDefault(podesavanja, "kalkulacija_marza", "20"), ServisGarancijaMeseci: vrednostIliDefault(podesavanja, "servis_garancija_meseci", "2"), PredracunRokDana: vrednostIliDefault(podesavanja, "predracun_rok_dana", "7"), + PredvidjenRokDana: vrednostIliDefault(podesavanja, "predvidjen_rok_dana", "15"), }, nil } diff --git a/internal/handler/servis.go b/internal/handler/servis.go index a867cd6..f1bc06b 100644 --- a/internal/handler/servis.go +++ b/internal/handler/servis.go @@ -451,6 +451,10 @@ func (h *Handler) DetaljiNaloga(w http.ResponseWriter, r *http.Request) { return } + // predviđen datum popravke je izvedena vrednost (samo prikaz): + // datum prijema + broj dana iz podešavanja (predvidjen_rok_dana) + nalog.PredvidjenDatum = defaultPredvidjenDatum(nalog.DatumPrijema, podesavanja) + klijentNaziv := "" if nalog.KlijentID != nil { klijent, err := h.KlijentiRepo.DohvatiID(r.Context(), *nalog.KlijentID) @@ -908,6 +912,17 @@ func defaultGarancija(datumPrijema time.Time, podesavanja map[string]string) *ti return &t } +// defaultPredvidjenDatum računa predviđen rok popravke kao datum prijema + broj +// dana iz podešavanja (predvidjen_rok_dana, podrazumevano 15) +func defaultPredvidjenDatum(datumPrijema time.Time, podesavanja map[string]string) *time.Time { + dana, err := strconv.Atoi(vrednostIliDefault(podesavanja, "predvidjen_rok_dana", "15")) + if err != nil || dana <= 0 { + return nil + } + t := datumPrijema.AddDate(0, 0, dana) + return &t +} + // parseOpcionuCenu pretvara string u *float64 — prazno polje ili neispravna vrednost vraća nil func parseOpcionuCenu(s string) *float64 { s = strings.TrimSpace(s) diff --git a/internal/model/servis.go b/internal/model/servis.go index 1b6217b..0a86851 100644 --- a/internal/model/servis.go +++ b/internal/model/servis.go @@ -41,6 +41,7 @@ type ServisniNalog struct { Napomena string GarancijaDo *time.Time DatumPrijema time.Time + PredvidjenDatum *time.Time DatumZavrsetka *time.Time Ostecenja string PinUredjaja string diff --git a/web/templates/stranice/podesavanja_servis.html b/web/templates/stranice/podesavanja_servis.html index cd37188..ebb4926 100644 --- a/web/templates/stranice/podesavanja_servis.html +++ b/web/templates/stranice/podesavanja_servis.html @@ -45,6 +45,18 @@ +