Commit Graph
14 Commits
Author SHA1 Message Date
Dasko 6ce3d39679 feat(magacin): nivelacija — promena cene uz trag (Faza A)
Tabela nivelacije (migr 045) beleži svaku promenu prodajne cene:
artikal, stara→nova cena, razlog, izvor, korisnik, datum. Dva okidača:
posebna akcija „Promeni cenu" (modal, izvor 'rucno') i auto-trag pri
izmeni artikla (izvor 'izmena'). PromeniCenu je transakciono (update
cene + upis zapisa). Pregled /nivelacije sa filterom perioda i razlikom
(+/− i %). Modal otvara svoj nextElementSibling — radi i na mobilnom
uprkos dupliranim id-jevima iz dva rasporeda.
2026-06-14 09:37:49 +02:00
Dasko f295203208 feat(pdv): obračun PDV za period (KIR − KPR)
Interni obračun: izlazni (dugovani) PDV iz KIR i odbitni (prethodni)
PDV iz KPR po stopama, konačna obaveza za uplatu ili povraćaj/prenos.
PdvBezOdbitka se ne računa u odbitni PDV. Stranica /pdv/obracun
(podrazumevano tekući mesec), link u sidebaru. Brojčana podloga za
budući zvanični PPPDV/POPDV obrazac.
2026-06-14 08:34:33 +02:00
Dasko 90801cc71a feat(pdv): KPR — knjiga primljenih računa + PIB/mesto dobavljača (Faza 2a)
KPR (handler, rute pod RequireModul("pdv"), UI sa sumama po stopama,
izbor dobavljača, datum plaćanja, PDV bez odbitka / oslobođena nabavka)
+ stavka u meniju. Dobavljači dobili PIB i mesto (migracija 043) jer KPR
traži PIB dobavljača za POPDV. Time je Faza 2a kompletna (KIR + KPR).
2026-06-14 02:05:33 +02:00
Dasko ca10fa541b feat(pdv): KIR — handler, RequireModul, rute i UI (Faza 2a)
Pregled knjige izdatih računa (filter perioda + sume po stopama), forma
unosa (server računa ukupno) i brisanje. Nove dozvole pdv.*; prvi put
montiran RequireModul("pdv") — KIR je vidljiv u meniju (.Moduli) i
dostupan samo PDV obveznicima, uz RBAC. Oznaka PIB/JMBG po broju cifara.
2026-06-13 23:45:24 +02:00
Dasko df79aec9ef feat(pdv): šifarnik PDV stopa — handler, rute i UI (Faza 1)
Handleri (prikaz, dodaj, izmeni, arhiviraj/vrati) sa validacijom i flash
porukama; rute pod /admin/podesavanja/pdv-stope (dozvole podesavanja.*);
stranica pdv_stope registrovana u kes.go i dodata u meni Podešavanja.
Šifarnik je opšti (bez RequireModul) jer ga koristi i kalkulacija.
2026-06-13 20:45:43 +02:00
Dasko 8371c50c6c fix(cache): HTML stranice no-cache da nova verzija odmah stigne do korisnika
HTML nije imao Cache-Control, pa je browser servirao staru keširanu stranicu
sa starim AssetV tokenom i posle deploya — stari CSS/JS. Dodato no-cache na
renderujTemplate i renderujStandalone: browser revalidira HTML, dobija svež
AssetV token koji povlači svež CSS/JS. Statika ostaje immutable + ?v=verzija.
2026-06-13 10:45:23 +02:00
Dasko 4c1794ffc6 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 9466c7133b 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 eb389dedf9 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 1b2d701b7c Izmena u radu tema 2026-06-06 17:47:52 +02:00
Dasko 75b020b98d Podešavanja: accordion podmeni, podsekcije Opšte/Izgled/Sistem, glassmorphism prijava, kontrast teksta 2026-06-06 02:58:12 +02:00
Dasko c0bb36c1b3 Dodato go:embed - disk-first logika za statičke fajlove i šablone 2026-06-04 20:14:03 +02:00
Dasko a884c06331 Embed implementacija, animacije, sidebar hover 2026-06-04 02:50:48 +02:00
Dasko 1f66655f8e Optimizacije — SQLite WAL, template keš, gzip kompresija, build skript 2026-06-03 21:18:12 +02:00