- Garancija se u detaljima prikazuje kao trajanje na srpskom (npr. „1 mesec i 15 dana", „2 meseca", „20 dana"); helper garancijaTekst + srpska deklinacija - Nova kolona garancija_dana (trajanje od završetka); garancija_do ostaje za fazu Završeno - Modal: textbox „Trajanje garancije (dana)" umesto kalendara; Podrazumevano i Bez garancije - Nova ruta/handler AzurirajGarancijaDana; forma izmene čuva trajanje (ne briše) - Podešavanja → Servis: rok garancije prebačen iz meseci u dane (servis_garancija_dana, default 60) - „Garancija do" uklonjena iz forme Izmeni nalog (kod arhiviran u docs/garancija-buduca-logika.md); SacuvajIzmenaNaloga čuva garanciju iz baze da je auto-snimanje ne pregazi - Prikazni tekst „Tehničar" → „Serviser" svuda (identifikatori Tehnicar/tehnicar_id netaknuti)
3.7 KiB
3.7 KiB
Garancija — buduća logika (arhiva koda)
Plan (zašto)
Trenutno se „Garancija do" unosi kao konkretan datum. To nema smisla dok je uređaj tek primljen (status Primljeno) — popravka još nije ni počela, pa ni datum garancije nije poznat.
Buduća logika:
- Garancija se izražava kao broj dana od datuma završetka (podesivo, kao i sada
preko
servis_garancija_meseci/ mogući noviservis_garancija_dana). - Dok je nalog u radu (Primljeno, U popravci…), klijentu se prikazuje samo podrazumevana garancija kao informacija (npr. „garancija: 12 meseci od završetka").
- Pravi datum garancije (
garancija_do) upisuje se tek kad nalog pređe u Završeno →datum_zavrsetka + garantni period.
Zbog toga je „Garancija do" uklonjena iz forme Izmeni nalog (vidi commit), a ovde je arhiviran kod da se kasnije ponovo upotrebi / prilagodi.
Arhivirani kod — „Garancija do" blok iz servis_forma.html (Izmeni nalog)
{{if .Izmena}}
<!-- garancija — isti izgled kao popup „Garancija do" u detaljima naloga;
„Bez garancije" isključuje datum, „Podrazumevano" vraća prijem + meseci -->
<div>
<label class="polje-labela">Garancija do</label>
<div style="display:flex;align-items:center;gap:10px;">
<input type="date" name="garancija_do"
value="{{if .Nalog.GarancijaDo}}{{.Nalog.GarancijaDo.Format "2006-01-02"}}{{else}}{{.GarancijaDefault}}{{end}}"
min="{{.Nalog.DatumPrijema.Format "2006-01-02"}}"
{{if .BezGarancije}}disabled{{end}}
style="flex:1;min-width:0;{{if .BezGarancije}}opacity:.5;{{end}}">
<label class="tip-opcija{{if .BezGarancije}} tip-opcija-akt{{end}}" style="white-space:nowrap;">
<input type="checkbox" name="bez_garancije" value="1"{{if .BezGarancije}} checked{{end}} style="margin:0;width:auto;"
onchange="var d=this.closest('div').querySelector('[name=garancija_do]'); d.disabled=this.checked; d.style.opacity=this.checked?'.5':''; this.closest('label').classList.toggle('tip-opcija-akt',this.checked);">
Bez garancije
</label>
</div>
<button type="button" class="btn-sekundarno" style="margin-top:8px;"
onclick="var f=this.closest('form'); var d=f.querySelector('[name=garancija_do]'); d.disabled=false; d.style.opacity=''; d.value='{{.GarancijaDefault}}'; var c=f.querySelector('[name=bez_garancije]'); c.checked=false; c.closest('label').classList.remove('tip-opcija-akt'); d.dispatchEvent(new Event('change',{bubbles:true}));">Podrazumevano</button>
</div>
{{end}}
Backend koji OSTAJE (i dalje koristi modal „Garancija do" u detaljima)
Nije uklonjeno — ovo su delovi koje treba znati pri ponovnoj upotrebi:
internal/handler/servis.go:defaultGarancija(datumPrijema, podesavanja)— prijem +servis_garancija_meseci. Za buduću logiku zameniti osnovicudatum_zavrsetkaumestodatum_prijema.garancijaPrePrijema(garancija, prijem)— validacija da garancija nije pre prijema.AzurirajGaranciju(rutaPOST /servis/{id}/garancija) — snimagarancija_do, prazno / „bez garancije" → NULL.- U
parseFormuNaloga: blok koji čitagarancija_do+bez_garancije. BezGarancijeflag (čita NULL stanje iz baze) iGarancijaDefault(prijem + meseci) uPodaciDetaljiNaloga/PodaciFormeNaloga.
internal/db/sqlite/servis.go:AzurirajGarancijurepo metoda; kolonagarancija_do.- Podešavanje:
servis_garancija_meseci(Podešavanja → Servis).
TODO kad se vraća
- Dodati prikaz „podrazumevana garancija" (informativno) na nalogu u statusu Primljeno.
- Pri prelasku u Završeno automatski izračunati
garancija_do = datum_zavrsetka + period. - Razmotriti period u danima umesto/pored meseci.