Popis: štampa u novom tabu — standalone A4 stranica sa zaglavljem i sumarima
This commit is contained in:
@@ -452,3 +452,149 @@ func (h *Handler) SacuvajPopis(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
http.Redirect(w, r, "/izvestaji/popis?sacuvano=1", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
// PodaciPopisStampa su podaci za štampu popisa (standalone template)
|
||||
type PodaciPopisStampa struct {
|
||||
NazivFirme string
|
||||
KorisnikIme string
|
||||
TipPopisaNaziv string
|
||||
DatumPopisa string
|
||||
Redovi []PopisStampaRed
|
||||
UkupnoKnjiznoKol int
|
||||
UkupnoKnjiznoVredStr string
|
||||
UkupnoStvarnoKol int
|
||||
UkupnoRazlikaKolStr string
|
||||
UkupnoRazlikaVredStr string
|
||||
ManjakKol int
|
||||
ManjakVredStr string
|
||||
VisakKol int
|
||||
VisakVredStr string
|
||||
}
|
||||
|
||||
// PopisStampaRed je jedan red u štampi popisa
|
||||
type PopisStampaRed struct {
|
||||
Naziv string
|
||||
Sifra string
|
||||
KategorijaNaziv string
|
||||
JedinicaMere string
|
||||
NabavnaCenaStr string
|
||||
Kolicina int
|
||||
KnjiznaVrednostStr string
|
||||
StvarnaKolicina int
|
||||
Razlika int
|
||||
RazlikaStr string
|
||||
RazlikaVrednost float64
|
||||
RazlikaVrednostStr string
|
||||
}
|
||||
|
||||
// PopisStampa prikazuje standalone stranicu za štampu popisa
|
||||
func (h *Handler) PopisStampa(w http.ResponseWriter, r *http.Request) {
|
||||
if _, ok := h.zahtevajDozvolu(w, r, "artikal.izmeni"); !ok {
|
||||
return
|
||||
}
|
||||
|
||||
artikli, err := h.Artikli.Lista(r.Context(), appdbPkg.ArtikalFilter{Tip: model.TipProizvod})
|
||||
if err != nil {
|
||||
http.Error(w, "Greška pri učitavanju artikala", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
podesavanja, _ := sqlite.DohvatiSvaPodesavanja(r.Context(), h.DB)
|
||||
tip := "godišnji"
|
||||
|
||||
var redovi []PopisStampaRed
|
||||
var ukKnjKol, ukStvKol, ukRazKol, manjakKol, visakKol int
|
||||
var ukKnjVred, ukRazVred, manjakVred, visakVred float64
|
||||
|
||||
for _, a := range artikli {
|
||||
knjKol := a.Kolicina
|
||||
cena := a.NabavnaCena
|
||||
knjVred := cena * float64(knjKol)
|
||||
stvKol := knjKol
|
||||
razlika := stvKol - knjKol
|
||||
razlikaVred := cena * float64(razlika)
|
||||
|
||||
ukKnjKol += knjKol
|
||||
ukKnjVred += knjVred
|
||||
ukStvKol += stvKol
|
||||
ukRazKol += razlika
|
||||
ukRazVred += razlikaVred
|
||||
|
||||
if razlika < 0 {
|
||||
manjakKol += -razlika
|
||||
manjakVred += -razlikaVred
|
||||
} else if razlika > 0 {
|
||||
visakKol += razlika
|
||||
visakVred += razlikaVred
|
||||
}
|
||||
|
||||
jm := a.JedinicaMere
|
||||
if jm == "" {
|
||||
jm = "kom"
|
||||
}
|
||||
|
||||
razlikaStr := "—"
|
||||
if razlika > 0 {
|
||||
razlikaStr = fmt.Sprintf("+%d", razlika)
|
||||
} else if razlika < 0 {
|
||||
razlikaStr = fmt.Sprintf("%d", razlika)
|
||||
}
|
||||
|
||||
razlikaVredStr := "—"
|
||||
if razlikaVred != 0 {
|
||||
predznak := ""
|
||||
if razlikaVred > 0 {
|
||||
predznak = "+"
|
||||
}
|
||||
razlikaVredStr = predznak + formatirajDinare(razlikaVred, 2)
|
||||
}
|
||||
|
||||
redovi = append(redovi, PopisStampaRed{
|
||||
Naziv: a.Naziv,
|
||||
Sifra: a.Sifra,
|
||||
KategorijaNaziv: a.KategorijaNaziv,
|
||||
JedinicaMere: jm,
|
||||
NabavnaCenaStr: formatirajDinare(cena, 0),
|
||||
Kolicina: knjKol,
|
||||
KnjiznaVrednostStr: formatirajDinare(knjVred, 2),
|
||||
StvarnaKolicina: stvKol,
|
||||
Razlika: razlika,
|
||||
RazlikaStr: razlikaStr,
|
||||
RazlikaVrednost: razlikaVred,
|
||||
RazlikaVrednostStr: razlikaVredStr,
|
||||
})
|
||||
}
|
||||
|
||||
ukRazKolStr := "—"
|
||||
if ukRazKol > 0 {
|
||||
ukRazKolStr = fmt.Sprintf("+%d", ukRazKol)
|
||||
} else if ukRazKol < 0 {
|
||||
ukRazKolStr = fmt.Sprintf("%d", ukRazKol)
|
||||
}
|
||||
|
||||
ukRazVredStr := "—"
|
||||
if ukRazVred != 0 {
|
||||
predznak := ""
|
||||
if ukRazVred > 0 {
|
||||
predznak = "+"
|
||||
}
|
||||
ukRazVredStr = predznak + formatirajDinare(ukRazVred, 2)
|
||||
}
|
||||
|
||||
h.renderujStandalone(w, "popis_stampa", PodaciPopisStampa{
|
||||
NazivFirme: podesavanja["naziv_firme"],
|
||||
KorisnikIme: middleware.KorisnikIzKonteksta(r.Context()).KorisnickoIme,
|
||||
TipPopisaNaziv: tipPopisaNaziv(tip),
|
||||
DatumPopisa: time.Now().Format("02.01.2006."),
|
||||
Redovi: redovi,
|
||||
UkupnoKnjiznoKol: ukKnjKol,
|
||||
UkupnoKnjiznoVredStr: formatirajDinare(ukKnjVred, 2),
|
||||
UkupnoStvarnoKol: ukStvKol,
|
||||
UkupnoRazlikaKolStr: ukRazKolStr,
|
||||
UkupnoRazlikaVredStr: ukRazVredStr,
|
||||
ManjakKol: manjakKol,
|
||||
ManjakVredStr: formatirajDinare(manjakVred, 2),
|
||||
VisakKol: visakKol,
|
||||
VisakVredStr: formatirajDinare(visakVred, 2),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ var saSidebar = []string{
|
||||
|
||||
// standalone su šabloni bez base layouta
|
||||
var standaloneIme = []string{
|
||||
"prijava", "setup", "totp_provera", "prodaja_stampa", "servis_radni_nalog", "servis_otpremnica", "servis_revers", "servis_predracun", "servis_nalepnica", "servis_status_javni", "servis_garantni_list", "fiskal_verifikacija",
|
||||
"prijava", "setup", "totp_provera", "prodaja_stampa", "servis_radni_nalog", "servis_otpremnica", "servis_revers", "servis_predracun", "servis_nalepnica", "servis_status_javni", "servis_garantni_list", "fiskal_verifikacija", "popis_stampa",
|
||||
}
|
||||
|
||||
// sablonskeFunkcije su pomoćne funkcije dostupne u svim šablonima.
|
||||
|
||||
Reference in New Issue
Block a user