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
This commit is contained in:
@@ -264,9 +264,10 @@ func (h *Handler) PrometniListMagacina(w http.ResponseWriter, r *http.Request) {
|
||||
// PodaciStanjaZaliha su podaci za izveštaj o stanju zaliha
|
||||
type PodaciStanjaZaliha struct {
|
||||
model.PodaciStranice
|
||||
Zalihe []model.StanjeZalihaRed
|
||||
UkupnaVrednost float64
|
||||
BrojArtikala int
|
||||
Zalihe []model.StanjeZalihaRed
|
||||
UkupnaVrednost float64
|
||||
UkupnaVrednostSaPdv float64
|
||||
BrojArtikala int
|
||||
}
|
||||
|
||||
// StanjeZalihaIzvestaj renderuje izveštaj o trenutnom stanju zaliha
|
||||
@@ -282,8 +283,10 @@ func (h *Handler) StanjeZalihaIzvestaj(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
var ukupnaVrednost float64
|
||||
var ukupnaVrednostSaPdv float64
|
||||
for _, z := range zalihe {
|
||||
ukupnaVrednost += z.VrednostZalihe
|
||||
ukupnaVrednostSaPdv += z.VrednostSaPdv
|
||||
}
|
||||
|
||||
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
|
||||
@@ -292,10 +295,11 @@ func (h *Handler) StanjeZalihaIzvestaj(w http.ResponseWriter, r *http.Request) {
|
||||
ps.NaslovStranice = "Stanje zaliha"
|
||||
|
||||
h.renderujTemplate(w, "stanje_zaliha", PodaciStanjaZaliha{
|
||||
PodaciStranice: ps,
|
||||
Zalihe: zalihe,
|
||||
UkupnaVrednost: ukupnaVrednost,
|
||||
BrojArtikala: len(zalihe),
|
||||
PodaciStranice: ps,
|
||||
Zalihe: zalihe,
|
||||
UkupnaVrednost: ukupnaVrednost,
|
||||
UkupnaVrednostSaPdv: ukupnaVrednostSaPdv,
|
||||
BrojArtikala: len(zalihe),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -1969,8 +1969,23 @@ func (h *Handler) PromeniStatus(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// pri prelasku u Preuzeto — sačuvaj naplatu i fiskalizuj
|
||||
// pri prelasku u Preuzeto — auto-izračunaj cenu_konacnu ako nije uneta, pa sačuvaj naplatu i fiskalizuj
|
||||
if noviStatus == model.StatusPreuzeto {
|
||||
nalog, _ := h.ServisRepo.DohvatiID(r.Context(), id)
|
||||
if nalog != nil && nalog.CenaKonacna == nil {
|
||||
// auto-izračunaj: dijagnostika + radovi + delovi
|
||||
radovi, _ := h.ServisniRadoviRepo.DohvatiZaNalog(r.Context(), id)
|
||||
delovi, _ := h.ServisniDeloviRepo.DohvatiZaNalog(r.Context(), id)
|
||||
ukupno := nalog.CenaDijagnostike
|
||||
for _, rad := range radovi {
|
||||
ukupno += rad.Ukupno()
|
||||
}
|
||||
for _, d := range delovi {
|
||||
ukupno += d.Ukupno()
|
||||
}
|
||||
h.ServisRepo.AzurirajCenuKonacnu(r.Context(), id, ukupno)
|
||||
nalog.CenaKonacna = &ukupno
|
||||
}
|
||||
nacin := strings.TrimSpace(r.FormValue("nacin_placanja"))
|
||||
if nacin == "" {
|
||||
nacin = "Gotovina"
|
||||
|
||||
Reference in New Issue
Block a user