Javno odobravanje predloga: Prihvati/Odbij sa komentarom

- Dodati handleri za prihvatanje i odbijanje predloga sa mobilnog
- Prihvatanje: predložene stavke prelaze u ugrađene (predlozeno 1→0)
- Odbijanje: brišu se predložene stavke
- Komentar klijenta uz odluku (textarea na mobilnom, prikaz u detaljima)
- Oznaka na kanbanu za naloge sa predlozima (narandžasta tačka + leva ivica)
- Oznaka na kanbanu za poruku klijenta (💬 dugme, tap za prikaz)
- Spojene kartice Radovi/Predložene usluge i Delovi/Predloženi delovi
- Auto-detekcija predlozeno=1 kad status != Primljeno
- Obrisana Otključaj/Zaključaj dugmad
- Ukupno sa predlogom na javnoj status stranici
- CSRF middleware premešten u zaštićenu grupu
- Migracija 078: komentar_klijenta
- Repo metode: ObrisiPredlozene, AzurirajKomentarKlijenta
- Popravljeno: 405 na odbij, duple rute, razmak između kartica
This commit is contained in:
2026-06-24 02:41:06 +02:00
parent af33d5c20d
commit d6b3e7149c
19 changed files with 699 additions and 148 deletions
+5
View File
@@ -54,6 +54,7 @@ type ServisniNalog struct {
Uradjeno string // šta je serviser stvarno uradio tokom popravke
CenaDijagnostike float64 // taksa kad klijent ne prihvati popravku; 0 = ne naplaćuje se
PopravkaOdbijena bool // klijent odbio popravku posle dijagnostike → naplaćuje se samo dijagnostika
KomentarKlijenta string // poruka klijenta uz prihvatanje/odbijanje predloga
JavniToken string
}
@@ -65,6 +66,7 @@ type ServisniDeo struct {
Kolicina int
CenaKomada float64
Datum time.Time
Predlozeno bool // true = serviser predložio posle dijagnostike; čeka odobrenje klijenta
}
// Ukupno vraća ukupnu vrednost dela (kolicina × cena)
@@ -88,6 +90,7 @@ type ServisniPotrazivaniDeo struct {
Kolicina int
CenaKomada float64
Datum time.Time
Predlozeno bool
// za prikaz:
ArtikalNaziv string
}
@@ -102,6 +105,7 @@ type ServisniRad struct {
Kolicina float64
CenaKomada float64
Datum string
Predlozeno bool // true = serviser predložio posle dijagnostike; čeka odobrenje klijenta
}
// Ukupno vraća ukupnu vrednost rada (kolicina × cena)
@@ -113,6 +117,7 @@ func (r ServisniRad) Ukupno() float64 {
type ServisniNalogSaKlijentom struct {
ServisniNalog
KlijentNaziv string
ImaPredlog bool // ima predloženih stavki koje čekaju odobrenje klijenta
}
// KlijentIDVrednost vraća vrednost KlijentID pointera, ili 0 ako je nil