Commit Graph
16 Commits
Author SHA1 Message Date
Dasko 04471c8df5 Servis novi nalog: auto-detekcija JMBG/lične karte i kompaktnija forma
Uklonjen izbor 'Vrsta dokumenta' — tip identifikacije se prepoznaje iz dužine
unosa (13 cifara JMBG, 9 broj lične karte) preko odrediTipIdentifikacije i tako
upisuje u bazu. Polja klijenta složena u parove po redu za oba tipa lica.
2026-06-21 19:17:27 +02:00
Dasko cf26c23088 Klijent: validacija JMBG (13 cifara) i kontakt osoba za pravno lice
parseFormuKlijenta i mozdaKreirajKlijenta proveravaju JMBG kad je izabran taj
tip identifikacije. Forma pravnog lica dobija sekciju Kontakt osoba (ime/prezime);
neaktivna sekcija se onemogućava da server ne dobije duplu vrednost. renderujStandalone
parsira šablon sa root imenom i šablonskim funkcijama (kao kreirajKes).
2026-06-21 19:07:38 +02:00
Dasko 7f0abc5ed1 Klijent: izbor JMBG/Br. lične karte i kontakt osoba za pravno lice
- Nova kolona tip_identifikacije ('jmbg'/'licna_karta'), migracija 062; postojeći klijenti podrazumevano 'jmbg'
- model.Klijent: polje TipIdentifikacije + helper OznakaIdentifikacije za prikaz
- sqlite/klijent.go: kolona u svim upitima (Lista, DohvatiID, ListaFilter, Kreiraj, Izmeni)
- parseFormuKlijenta i mozdaKreirajKlijenta čitaju tip_identifikacije (fallback 'jmbg')
- Forme klijenta i servisnog naloga: selektor vrste dokumenta + polje vrednosti
- Servisni nalog: kontakt osoba (ime/prezime) za pravno lice
- Validnost broja (JMBG 13 cifara, broj lične karte) ostavljena za kasnije
2026-06-21 12:28:39 +02:00
Dasko 3ed86309ca Klijenti: smanji prikaz na 50 po stranici 2026-06-20 22:52:43 +02:00
Dasko e3444a9b4b Klijenti: filter po tipu (Svi/Firme/Fizička lica) preko radio dugmadi 2026-06-20 22:49:56 +02:00
Dasko 8341e5632f Paginacija, interaktivna pretraga i optimizacija prikaza
- Dodata server-side paginacija za magacin (127 artikala) i klijente (1040)
  — Limit/Offset u ArtikalFilter i KlijentFilter, 100 po stranici
  — PrebrojiPoFilteru za izračunavanje ukupnog broja stranica
- Interaktivna pretraga (search-as-you-type) sa HTMX:
  — hx-trigger="keyup changed delay:300ms" na polju pretrage
  — HTMX menja samo #magacin-rezultati / #klijenti-rezultati
  — Polje pretrage ostaje u fokusu tokom osvežavanja
- Popravljena pretraga klijenata po imenu i prezimenu:
  — Dodato (ime || ' ' || prezime) LIKE u sva tri upita
  — "Ivana Lazić" sada pronalazi klijenta
- CSS optimizacije za velike liste:
  — content-visibility: auto na redovima tabela i karticama
  — contain-intrinsic-size za stabilan scroll
  — animation-delay produžen do 20. reda / 10. kartice
2026-06-20 16:19:42 +02:00
Dasko b2a5cbeaec feat(pdv): izbor klijenta u KIR formi + mesto/grad u klijentima
KIR forma nudi padajuću listu postojećih klijenata koja popunjava naziv,
PIB/JMBG i mesto kupca (uz ručni unos za kupce van baze). KIR i dalje
čuva kupca kao tekst, ne kao vezu. Klijenti dobili polje mesto (migracija
042), provučeno kroz model, repo, formu i handler.
2026-06-14 01:39:06 +02:00
Dasko 1eab331df9 refactor(log): prelazak sa log na log/slog (strukturisano logovanje)
Uveden podrazumevani slog logger u main.go (podesiLog): JSON u produkciji,
tekst u razvoju, nivo Info. Svih ~70 poziva log.Printf/Println/Fatalf zamenjeno
slog.Error/Warn/Info: greška se prosleđuje kao atribut "error", informativne
vrednosti kao imenovani atributi (port, broj, putanja...), Fatalf -> Error +
os.Exit(1). Upozorenja (inicijalizacija/čišćenje dozvola, migracija kolone) idu
kao slog.Warn.

Auth log (internal/auth/log.go) namerno NIJE diran — ostaje zaseban *log.Logger
u fail2ban formatu. (slog.SetDefault usput preusmerava i standardni log paket.)
2026-06-12 22:33:42 +02:00
Dasko 0ca3b729af Dodata zahtevajDozvolu metoda koja zamenjuje dupliranu proveru dozvola u handlerima.
Uvedena `AssetV` promenljiva za cache-busting statičkih fajlova, koja se postavlja pri svakom pokretanju.
Kreiran pogled `klijent_prikaz` (migracija 038) za jedinstveno prikazivanje imena klijenta, čime se eliminiše ponavljanje COALESCE logike u upitima.
Izvučena `dodeliOpcijeKorisnika` funkcija u korisnici.go radi DRY.
Zamenjeni inline stilovi u HTML šablonima CSS klasama (`.polje-labela`, `.obavezno`, `.pomocni-tekst`, `.tabela`, `.kartica-tabela`, `.prazno-stanje`).
Dodat `width: 100%` na inpute i `resize: vertical` na textarea u main.css.
2026-06-12 00:43:58 +02:00
Dasko cf13d0fe15 Code-review popravke: RequireDozvola middleware, validacija backupa, dedup partiala
Bezbednost / dozvole:
  - Nov RequireDozvola(proveri, akcija) middleware (po uzoru na RequireAdmin):
    na odbijanje redirekt na /dashboard sa flash porukom umesto golog 403
  - 10 "pregled" ruta (prodaja, servis, klijenti, dobavljači, nabavke) prešlo
    na deklarativnu proveru na nivou rute
  - Uklonjene inline pregled-provere iz handlera — provera je sad na jednom
    mestu po ruti, vidljiva u ruteru

  Backup podešavanja:
  - Neispravan unos (van opsega ili ne-broj) više se ne preskače tiho;
    prikazuje se jasna greška i ne prikazuje se lažno "sačuvano"
  - Hvata se greška pri čuvanju u bazu (uklonjen progutani _ =)

  Šabloni:
  - "Premesti" dropdown izvučen u jedan {{define "premestiMeni"}} partial
    (više nije dupliran u tabeli i mobilnoj kartici)
  - Dodat dict helper u FuncMap saSidebar šablona radi prosleđivanja više
    vrednosti partialu; standalone šabloni namerno ostaju bez izmene
2026-06-09 01:26:10 +02:00
Dasko 53432c8c41 Magacin premeštanje, backup podešavanja, čišćenje RBAC sistema
Magacin:
  - Dodato premeštanje artikla u drugu kategoriju (dugme + nativni
    <details> meni, bez JS-a; radi na desktopu i mobilnom)
  - Endpoint POST /magacin/premesti/{id} uz proveru dozvole artikal.premesti

  Backup:
  - Nova podešavanja: interval automatskog backupa i broj kopija (rotacija)
  - Periodični backup uz onaj pri pokretanju; interval se čita iz baze
  - Migracija 037_backup_podesavanja.sql

  Dozvole (RBAC):
  - Dodate kartice koje su nedostajale (dashboard.prihod, prodaja.storno,
    podesavanja.login_pozadina, tema.lokalno) — popravljen i bug gde su se
    gasile pri svakom čuvanju matrice
  - Aktivirana kontrola pregleda za prodaju, servis, klijente i dobavljače
    (provera u handlerima + skrivanje iz sidebara)
  - Uklonjene mrtve/obmanjujuće dozvole iz matrice i sveAkcije (korisnici,
    podsetnici, artikal.pregled, kategorija.izmeni, tema.globalno,
    podesavanja.app_pozadina); sveAkcije 47 -> 34
  - Čišćenje zastarelih redova (siročića) u tabeli dozvola pri startu

  Ostalo:
  - Statički fajlovi: embed celog web/static i ispravan MIME za .js/.css
  - Keš šablona: dodat admin_dozvole (stranica Dozvole se nije otvarala)
  - Sidebar accordion: radi i skupljen i proširen, međusobno isključiv
2026-06-09 00:55:15 +02:00
Dasko a99920d102 Popravka sidebara: kolaps, podmeni i HTMX navigacija 2026-06-08 19:29:17 +02:00
Dasko 2b3636528f Bezbednost: ispravke kontrole pristupa u admin i handler sloju 2026-06-05 22:41:20 +02:00
Dasko 4b7ed36473 Ispravke — bezbednost, CSS teme, handleri, sidebar, servis forma 2026-06-03 23:13:15 +02:00
Dasko 974d76360a Optimizacije — SQLite WAL, template keš, gzip kompresija, build skript 2026-06-03 21:18:12 +02:00
Dasko f05c93edd2 Dodavanje modula klijenata — lista, forma, izmena, brisanje, ispravka migracije 2026-06-01 23:40:52 +02:00