Dasko
7cba88f357
izbacivanje Koncept.md iz praćenja, .gitignore proširen (hermes/, lokalne beleške)
2026-06-30 18:32:59 +02:00
Dasko
b0a5ae490c
podesavanja: CodeQL suppression za go/request-forgery (SSRF već zaštićen)
2026-06-30 18:06:45 +02:00
Dasko
4a41d72023
Merge develop → main: zalihe usklađenost (manjak/višak, storno nabavke, prosečna cena), popis štampa
2026-06-30 17:09:53 +02:00
Dasko
3d891d7023
Merge feature/zalihe-uskladjenost → develop
2026-06-30 17:09:51 +02:00
Dasko
2b7006e910
Zalihe: storno nabavke umesto brisanja + ponderisana prosečna nabavna cena
2026-06-30 17:08:55 +02:00
Dasko
225d766d14
Zalihe: razlikovanje manjka i viška pri popisu (manjak_popis/visak_popis tip promene)
2026-06-30 17:08:50 +02:00
Dasko
43005048d8
Popis: štampa u novom tabu — standalone A4 stranica sa zaglavljem i sumarima
2026-06-30 16:47:50 +02:00
Dasko
67955cff3b
Popis: nabavna cena na 2 decimale, dugovani PDV na manjak (samo PDV modul)
2026-06-30 16:33:12 +02:00
Dasko
78cca0e695
Popis: štampa A4 sa zaglavljem firme i tipom popisa, lokalizovan naziv tipa
2026-06-30 16:15:30 +02:00
Dasko
19cad79abe
Popis: štampa A4 landscape (bez skrolbara, sve u širinu), dugme Štampaj
2026-06-30 15:52:32 +02:00
Dasko
decc1e4735
Popis: mobilne kartice prikazuju sve kolone kao desktop
2026-06-30 15:45:01 +02:00
Dasko
119754916d
Popis: mobilni prikaz — tabela se pretvara u kartice, Tip i Napomena jednake širine
2026-06-30 15:42:56 +02:00
Dasko
2774c40545
Popis: zakonske kolone (nabavna cena, vrednost, manjak/višak), tip popisa, datum i sačinilac
2026-06-30 15:36:22 +02:00
Dasko
21e79055e9
Podešavanja: ispravka preuzimanja backup-a (hx-boost), CodeQL request-forgery (SSRF)
2026-06-30 14:27:20 +02:00
Dasko
19d88901c3
Servis detalji: PDV pravilo na cenama radova/delova, bruto u formama, ispravka otpremnice
2026-06-29 22:35:31 +02:00
Dasko
4ea411996f
Mobilni: forma-grid-2/3 klase umesto inline grid-template-columns na formama
2026-06-29 21:48:03 +02:00
Dasko
0df0ea2876
UI: razmaci između kartica, dinari/dinariCeli za int64, PPPDV tabela formatirana
2026-06-28 16:29:09 +02:00
Dasko
f1acee98e8
Bugfix: PDV obračun u prodaji, magacinski trag nabavke, fiskalizacija servisa, admin/podesavanja greške
2026-06-28 16:02:26 +02:00
Dasko
99ae077082
Dashboard/izveštaji: ispravka obračuna prihoda + KIR servisa, testovi
...
- Prihod meseca: izbačeni stornirani nalozi, servis preko naplaceno+avans
- Servis KIR: neto cena + PDV po stvarnoj stopi (PdvKir.DodajNeto), bez hardkodovanih 20%
- TopKlijenti: samo preuzeti nalozi sa naplatom/avansom
- Izveštaji: mesečni ključevi sidreni na 1. u mesecu (bez preliva dana)
- BUG-04: konačna cena servisa bez dvostrukog računanja delova
- Dashboard: uklonjena kartica „Prihod ovog meseca"
- Default port 3000
- Dodati testovi: prihod/storno/delovi/nivelacija/KIR/mesečni ključevi
2026-06-27 09:41:07 +02:00
Dasko
ff59c3edcf
PDV pravilo na štampanim dokumentima + fiksni layout + QR popravka
...
- PDV uslovi (Moduli.pdv) na: predračun, otpremnica, garantni list, prodaja_stampa
- Modal za preuzimanje: jedna cena (sa/bez PDV), ne duplo
- Javna status stranica: PDV uslovi za cene, predlog, checkbox-ove
- Svi print templejti: viewport=device-width+min-width, bez responsive
- JavniToken generisan za postojeće naloge bez tokena (QR popravka)
- UkupnoSaPdv() metode na ServisniRad i ServisniDeoSaArtiklom
- UkupnoBezPdv() na StavkaProdaje
2026-06-27 02:06:18 +02:00
Dasko
8c6fc7e717
Dropdown: CSS u main.css, dupli handler fix, Prihod=prodaja+servis, mobilni layout
...
- main.css: cust-sel CSS prebačen iz dodatni-css (dostupan svim stranama)
- servis_detalji: _custClickDodat guard protiv duplog event listenera
- servis_detalji: _ntechPopuniArtikle na window (data-refresh fix)
- izvestaj: PrihodTekuciMesec = prodaja + servis (Preuzeto)
- main.css: mobilni dropdown preko cele širine (grid 1 kolona)
2026-06-27 01:00:41 +02:00
Dasko
7e11a349c1
PDV modul: uslovno prikazivanje + auto cena_konacna + stanje zaliha sa PDV-om
...
- PDV pravilo (Moduli.pdv) primenjeno na: magacin, usluge, prodaja_detalji, usluge_forma
- magacin: toggle cena bez/sa PDV u zaglavlju kolone, jedna kolona
- stanje_zaliha: Cena sa PDV i Vred. sa PDV kolone, tamne kartice za zaglavlje
- PromeniStatus: auto-izračunavanje cena_konacna (dijagnostika+radovi+delovi) pri Preuzeto
- migrations/088: popravlja postojeće Preuzeto naloge bez cene
- dashboard: prihod cifra sakrivena, hover 1s → prikaz
- izvestaji: aktivni servisi bez Preuzeto, COALESCE u SQL, 0→—
- izvestaji.html: vraćeno — umesto 0 din
2026-06-27 00:26:46 +02:00
Dasko
e8d06fa8f1
Cena sa PDV-om u magacinu + uslovno prikazivanje po modulu
...
- migrations/087: nova kolona cena_sa_pdv + popunjavanje postojećih
- model.Artikal: polje CenaSaPdv, ispravljene CenaBezPdv/PdvIznos (neto)
- sqlite/artikal.go: SELECT/Scan/INSERT/UPDATE za cena_sa_pdv (6 mesta)
- magacin_forma.go: pdv_stopa iz forme, kalkulacija cena_sa_pdv, default PDV 20%
- magacin.html: dinari format (25.999,00), kolona Sa PDV-om, uslovno po Moduli.pdv
- magacin_forma.html: PDV dropdown + Cena sa PDV polje, uslovno po Moduli.pdv,
optimizovan layout (Naziv/Jed. mere/Kategorija u 1 redu)
- main.go: demo mod bez keširanja šablona (hot-reload)
- model_test.go: ažurirani testovi za novo ponašanje CenaBezPdv/PdvIznos
2026-06-26 23:47:52 +02:00
Dasko
e6215a43fe
Kartica emulator (BE) + fiskalna verifikacija + ime/prezime korisnika
...
- internal/be: emulator kartice (TCP listener za L-PFR mock)
- /v/: javna stranica za verifikaciju fiskalnog računa (QR kod)
- /servis/{id}/fiskalni-racun: štampa fiskalnog računa
- Podešavanja fiskalizacije: BE status/reset, proširen UI
- Korisnik: polja ime i prezime (model, DB, handler, admin profil)
- Fisk server: ažuriran receipt.py i server.py
- Koncept.md, Magacin.md: dokumentacija
2026-06-26 23:17:52 +02:00
Dasko
9197404db0
BUGFIX: Primljeno default=0 + ispravljen ParseFloat za hiljade (43.600→43600)
2026-06-26 02:40:18 +02:00
Dasko
9f14936639
Servis: modal Preuzimanje — polje Primljeno + automatski kusur
2026-06-26 02:21:12 +02:00
Dasko
842a07ba12
Fiskalni račun: uklonjene ReplaceAll krpe — Fisk server sad šalje prave podatke
2026-06-26 02:16:27 +02:00
Dasko
d65edaca86
Fiskalni račun: QR kod kao slika + zamena mock podataka firme stvarnim
2026-06-26 02:13:26 +02:00
Dasko
445a04510e
BUGFIX: FiskalniRacun kartica izmeštena izvan Ukupno kartice
2026-06-26 02:10:43 +02:00
Dasko
6b507651ce
BUGFIX: DohvatiPoServisu — prodaja_id skeniran u NullInt64 (NULL za servisne račune)
2026-06-26 02:06:19 +02:00
Dasko
bb151eca7e
Debug: dodat slog.Error za DohvatiPoServisu
2026-06-26 02:05:15 +02:00
Dasko
a810921adc
BUGFIX: listing radova/delova samo za Završeno/Preuzeto — vraćena statusna provera
2026-06-26 01:55:53 +02:00
Dasko
f5962dc476
Servis: naslovi 20% providno sivi + ikonice 🔧 💾
2026-06-26 01:51:27 +02:00
Dasko
dd45d08cc4
BUGFIX: dropdown CSS prebačen u main.css — radi i kad HTMX učita detalje sa kanbana
2026-06-26 01:48:21 +02:00
Dasko
e3de2b98d0
BUGFIX: dropdown — left:-9999px umesto display:none (neuništivo)
2026-06-26 01:46:18 +02:00
Dasko
784b561c3a
BUGFIX: dropdown vraćen na original — čist CSS, bez JS manipulacije display-a
2026-06-26 01:45:07 +02:00
Dasko
02c4c3d3bb
BUGFIX: dropdown — removeProperty umesto setProperty('none') da ne ostaje inline blok
2026-06-26 01:41:40 +02:00
Dasko
1777221f52
Tema: kartice spuštene na pozadinu, pozadina još tamnija — manje belog
2026-06-26 01:37:34 +02:00
Dasko
0b53ae29c7
Tema: svetla još toplija i mekša — pozadina #e8ebe6
2026-06-26 01:37:03 +02:00
Dasko
08228d1655
BUGFIX: dropdown — !important na CSS + setProperty('important') u JS (neuništivo)
2026-06-26 01:36:51 +02:00
Dasko
701d54d4e1
BUGFIX: dropdown — inline display:none + JS menja inline stil (ne samo klasu)
2026-06-26 01:35:21 +02:00
Dasko
645ab161fd
Tema: svetla — topliji tonovi (paper), manje drečavo belo
2026-06-26 01:27:05 +02:00
Dasko
f55fbc2b11
Servis: providni glass overlay rgba(128,128,128,0.12) — radi u obe teme
2026-06-26 01:25:02 +02:00
Dasko
c15d590889
Servis: naslovi — color-mix prati karticu + 10% tamnije
2026-06-26 01:24:00 +02:00
Dasko
036201453d
Servis: naslovi koriste --pozadina-hover (prati karticu)
2026-06-26 01:23:38 +02:00
Dasko
655e40e1d5
Servis: naslovi prate boju kartice + 10% tamnije (automatski uz temu)
2026-06-26 01:22:46 +02:00
Dasko
1a363c4078
Servis: 80% crna pozadina naslova
2026-06-26 01:21:05 +02:00
Dasko
c64db40d03
Servis: naslovi 90% crna pozadina + beli tekst
2026-06-26 01:20:52 +02:00
Dasko
84d55b73db
Servis: tamnija pozadina naslova (0.12)
2026-06-26 01:19:58 +02:00
Dasko
1e4fb9ce09
Servis: naslovi — providna tamna pozadina rgba(0,0,0,0.07)
2026-06-26 01:19:31 +02:00
Dasko
865373924e
Servis: naslovi — zatamnjena pozadina (frosted staklo efekat)
2026-06-26 01:18:16 +02:00
Dasko
f037e4a9b0
Servis: naslovi — deblja linija (1.5px) za bolju istaknutost
2026-06-26 01:16:36 +02:00
Dasko
99f476f5a7
Servis: pojednostavljeni naslovi — uklonjeni badge-ovi i emoji, čist tekst sa linijom
2026-06-26 01:15:56 +02:00
Dasko
b8123a569c
BUGFIX: migracija 085 — ispravlja izvor 'prodaja'→'servis' za SN- naloge i briše duplikate
2026-06-26 01:11:27 +02:00
Dasko
309d94d383
Migracija 084: retroaktivni upis u KIR za postojeće Preuzeto servisne naloge
2026-06-26 01:09:38 +02:00
Dasko
8cdc1b7fd0
Servis: automatski upis u KIR pri preuzimanju (ako je firma PDV obveznik)
...
Pri prelasku u Preuzeto, radovi i delovi se automatski knjiže u KIR (20% PDV, opšta stopa). Preskaču se predložene stavke i odbijene popravke.
2026-06-26 01:07:41 +02:00
Dasko
6d28661692
Servis: prikaz fiskalnog računa u detaljima naloga (PFR broj + QR kod)
...
Dodat FiskalRepository.DohvatiPoServisu (repo + interfejs)
PodaciDetaljiNaloga.FiskalniRacun — učitava se pri otvaranju detalja
Kartica u servis_detalji.html — PFR broj, vreme, brojač, QR, link ka PURS-u
2026-06-26 01:04:34 +02:00
Dasko
b5ea06c677
BUGFIX: fiskalni_racuni — dodata podrška za servisne naloge (servis_id kolona)
...
Migracija 083: rekreira fiskalni_racuni tabelu sa servis_id (nullable) i bez FK constraint-a
Model: dodat ServisID int64 polje
Repo: INSERT/SELECT sada koristi i servis_id
Handler: fiskalizujServis koristi ServisID umesto negativnog ProdajaID
2026-06-26 01:00:22 +02:00
Dasko
6efc007c01
Servis: Otpremnica i Garantni list vidljivi i za Preuzeto (ne samo Završeno)
2026-06-26 00:58:50 +02:00
Dasko
726a2ad87f
Servis: fiskalizacija pri preuzimanju — način plaćanja + iznos + PFR račun
...
Migracija 082: nacin_placanja i naplaceno na servisni_nalog
Model, repo, handler — pun lanac za čuvanje naplate
fiskalizujServis helper — šalje radove+delove ka PFR serveru
Modal za Preuzeto dobio izbor načina plaćanja (Gotovina/Kartica/Virman)
2026-06-26 00:54:13 +02:00
Dasko
e4fc8a9107
Dockerfile: dodat za Docker deployment
2026-06-26 00:43:45 +02:00
Dasko
f35892218f
Čišćenje: izbačeni Fisk/data/counters/ fajlovi iz gita, dodati u .gitignore
2026-06-26 00:38:47 +02:00
Dasko
b1193ea189
Merge grane feature/fiskalizacija-migracija: fiskalizacija + servis unapređenja + pravni status
2026-06-26 00:36:39 +02:00
Dasko
d49bfa4120
Javni status: dodat datum završetka i cena dijagnostike u karticu odbijene popravke
2026-06-26 00:34:56 +02:00
Dasko
0c726df574
BUGFIX: javni status — kad klijent odbije popravku, ne prikazuju se radovi/delovi; crvena poruka umesto njih
2026-06-26 00:33:36 +02:00
Dasko
960c585bf7
Servis: ✕ Klijent je odbio popravku — istaknut kao naslov ispod SN broja, sa objašnjenjem
2026-06-26 00:24:01 +02:00
Dasko
baa96531ca
Otpremnica: kad je popravka odbijena — opis radova prikazuje da je urađena samo dijagnostika
2026-06-26 00:21:26 +02:00
Dasko
5026aa7760
BUGFIX: otpremnica — kad klijent odbije popravku, prikazuje se samo dijagnostika (ne delovi i radovi)
2026-06-26 00:20:09 +02:00
Dasko
22dd854163
Servis: crveni badge ✕ Klijent odbio popravku pored statusa
2026-06-26 00:17:21 +02:00
Dasko
1a5c0ade81
Servis: uklonjeni prazni redovi — ako nema radova/delova, ne prikazuje se ništa (samo UKUPNO)
2026-06-26 00:15:13 +02:00
Dasko
9c3b6efff8
Servis: badge stilizacija naslova — Obavljeni radovi (plavo) i Ugrađeni delovi (zeleno) sa ikonicama 🔧 💾
2026-06-26 00:13:07 +02:00
Dasko
9cdcc3c64f
Servis: reorganizovana Ukupno kartica — listing radova i delova sa subtotalima, finalni total boldiran
2026-06-26 00:10:14 +02:00
Dasko
8b12d46af5
Servis: listing radova i delova iznad Ukupno, ne ispod
2026-06-26 00:06:24 +02:00
Dasko
fcdcbc2dd7
Servis: ispravka — .Delovi→.ServisniDelovi, .Radovi→.ServisniRadovi (pogrešna imena promenljivih)
2026-06-26 00:04:45 +02:00
Dasko
d379441fdd
Servis: listing ugrađenih delova i obavljenih radova u Ukupno kartici kad je status Završeno/Preuzeto
2026-06-25 23:30:08 +02:00
Dasko
73e02a8ad8
Podešavanja: uputstvo za režime Pun i Samo evidencija
2026-06-25 23:26:09 +02:00
Dasko
837e39892f
Podešavanja: JS logika zaključavanja — PDV se gasi uz Fiskalizaciju u režimu „Samo evidencija"
...
Proširena postojeća JS logika: sada i PDV i Fiskalizacija idu na „Ne" i zasive se kad je režim „samo evidencija". Refaktorisano u lockGrupa/unlockGrupa helper-e.
2026-06-25 23:23:13 +02:00
Dasko
cc1397a20a
Profil firme: preduzetnik_knjige pokriven u modulima + informativna tabela
...
ModulKpo sada obuhvata i preduzetnik_knjige (proste knjige)
Dodata tabela sa pregledom svih kombinacija pravnog oblika, PDV-a, fiskalizacije, KPO i dvojnog
Napomene: PDV prag 8M, paušalni limit 6M, fiskalizacija obavezna za sve
2026-06-25 23:13:14 +02:00
Dasko
939dd7ff98
Servis: kanban kolone proporcionalno raširene po širini ekrana
...
Pre: flex: 0 0 250px (fiksna širina, prazan prostor desno)
Posle: flex: 1 1 0 + min-width: 220px (ravnomerno popunjavaju širinu)
2026-06-25 23:02:28 +02:00
Dasko
6a982fabc1
Bezbednost: SSRF — proširena whitelist na privatne mreže (192.168.x, 10.x, 172.16-31.x)
...
Pre: samo 127.0.0.1 i localhost — nije radilo sa Fisk serverom na drugoj mašini u LAN-u
Posle: jePrivatnaAdresa() dozvoljava sve privatne IPv4 opsege + localhost
Hostname se koristi direktno (iz validiranog URL-a), port kao integer
2026-06-25 22:59:17 +02:00
Dasko
c854b53b47
Fiskalizacija: inicijalna implementacija (8 koraka)
...
1. migracija 081 — tabela fiskalni_racuni + podešavanja pfr_api_key/pfr_kasir
2. model FiskalniRacun (internal/model/fiskal.go)
3. FiskalRepository interfejs (repository.go)
4. SQLite repozitorijum (sqlite/fiskal.go — Kreiraj, DohvatiPoProdaji)
5. Paket internal/fiskal/ — HTTP klijent + mapiranje prodaja→invoiceRequest
6. Handler proširenje — FiskalRepo + fiskalKlijent() dinamički helper
7. Inicijalizacija kroz Novi() / reinicializuj — klijent se čita dinamički iz podešavanja
8. Prodaja integracija — fiskalizacija u SacuvajProdaju + QR prikaz u prodaja_detalji.html
2026-06-25 22:51:59 +02:00
Dasko
b8ec2fc0e5
Bezbednost: SSRF — port iz URL-a se izvlači kao integer da preseče CodeQL taint
...
Pre: parsedURL.Host je i dalje nosio korisnički unos u mrežni poziv
Posle: port → strconv.Atoi → validiran int → fmt.Sprintf("%d") — čist URL bez taint-a
2026-06-25 21:42:58 +02:00
Dasko
539b1688e9
Bezbednost: SSRF ispravka za CodeQL — URL se rekonstruiše iz validiranih delova
...
Pre: pfrURL + "/api/status" (CodeQL alarm: taint od korisnika do mreže)
Posle: url.URL{Scheme:"http", Host:parsedURL.Host, Path:"/api/status"} — korisnički unos samo u Host nakon validacije
2026-06-25 21:36:49 +02:00
Dasko
7bb9d04fcb
Bezbednost: SSRF i XSS ispravka u TestFiskalizacije
2026-06-25 02:58:10 +02:00
Dasko
d9eeec4c6a
Servis: custom dropdown za usluge i artikle (naziv+cena), live preračun na javnoj stranici
2026-06-25 02:45:30 +02:00
Dasko
47ae5e9347
Servis: cene u dropdownu usluga i artikala
2026-06-25 02:11:44 +02:00
Dasko
29c9b1869d
Servis: zamena svih tipografskih navodnika u odbij-popravku formi
2026-06-25 02:09:29 +02:00
Dasko
17aa1c5878
Servis: ispravka tipografskih navodnika u data-potvrda (lomili HTML parser)
2026-06-25 02:07:32 +02:00
Dasko
be82e85323
Servis: odbij-popravku data-full-reload, AJAX ne sme da ostane na stranici posle promene statusa
2026-06-25 01:53:46 +02:00
Dasko
f54a3e62ed
Servis: ispravka predlozeno-blok (sadrzaj bio u pogresnoj if grani)
2026-06-25 01:47:32 +02:00
Dasko
020ecb756c
Servis: predlozeno-blok se pojavljuje odmah pri dodavanju prve predlozene stavke
2026-06-25 01:44:34 +02:00
Dasko
15c44dd2d3
Servis: garantni list, radovi na otpremnici, selektivno prihvatanje predloga po stavkama
2026-06-25 01:39:56 +02:00
Dasko
57c092ed8f
Servis: garantni list pri preuzimanju, ispravka datuma garancije na otpremnici
2026-06-25 00:37:56 +02:00
Dasko
ce53e43d5e
Podešavanja: QR URL primer kao domen umesto lokalne IP adrese
2026-06-24 23:37:18 +02:00
Dasko
97c467d472
Fisk compose: external mreža ntech-net, bez izloženog porta
2026-06-24 23:32:18 +02:00
Dasko
457688fc86
Uklonjen fisk-test.sh, .gitignore cleanup
2026-06-24 23:27:48 +02:00
Dasko
386b9779aa
Podešavanja: uklonjen konkretan IP iz placeholder teksta QR URL polja
2026-06-24 23:26:49 +02:00
Dasko
213e4fa27d
Fiskalizacija: test veze koristi URL iz forme, ne iz baze
2026-06-24 23:26:12 +02:00
Dasko
ae99dee1f2
Fiskalizacija: podešavanja L-PFR veze, test konekcije (HTMX)
2026-06-24 23:18:26 +02:00
Dasko
f38e3856ba
README: samostalni docker-compose za Fisk mock server
2026-06-24 23:06:07 +02:00