Popis: štampa A4 sa zaglavljem firme i tipom popisa, lokalizovan naziv tipa
This commit is contained in:
@@ -316,11 +316,12 @@ func (h *Handler) StanjeZalihaIzvestaj(w http.ResponseWriter, r *http.Request) {
|
||||
// PodaciPopisa su podaci za stranicu popisa
|
||||
type PodaciPopisa struct {
|
||||
model.PodaciStranice
|
||||
Artikli []model.ArtikalSaKategorijom
|
||||
Sacuvano bool
|
||||
Greska string
|
||||
TipPopisa string // godišnji | vanredni | preuzimanje
|
||||
DatumPopisa string // formatiran datum za prikaz
|
||||
Artikli []model.ArtikalSaKategorijom
|
||||
Sacuvano bool
|
||||
Greska string
|
||||
TipPopisa string // godišnji | vanredni | preuzimanje
|
||||
TipPopisaNaziv string // „Godišnji popis", „Vanredni popis", „Popis pri preuzimanju dužnosti"
|
||||
DatumPopisa string // formatiran datum za prikaz
|
||||
}
|
||||
|
||||
// Popis prikazuje formu za unos stvarnog stanja (inventuru)
|
||||
@@ -339,16 +340,30 @@ func (h *Handler) Popis(w http.ResponseWriter, r *http.Request) {
|
||||
ps := h.popuniPodaciStranice(r, podesavanja)
|
||||
ps.Stranica = "izvestaji"
|
||||
ps.NaslovStranice = "Popis"
|
||||
tp := "godišnji"
|
||||
|
||||
h.renderujTemplate(w, "popis", PodaciPopisa{
|
||||
PodaciStranice: ps,
|
||||
Artikli: artikli,
|
||||
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
|
||||
TipPopisa: "godišnji",
|
||||
TipPopisa: tp,
|
||||
TipPopisaNaziv: tipPopisaNaziv(tp),
|
||||
DatumPopisa: time.Now().Format("02.01.2006."),
|
||||
})
|
||||
}
|
||||
|
||||
// tipPopisaNaziv vraća lokalizovani naziv za tip popisa
|
||||
func tipPopisaNaziv(tp string) string {
|
||||
switch tp {
|
||||
case "vanredni":
|
||||
return "Vanredni popis"
|
||||
case "preuzimanje":
|
||||
return "Popis pri preuzimanju dužnosti"
|
||||
default:
|
||||
return "Godišnji popis"
|
||||
}
|
||||
}
|
||||
|
||||
// SacuvajPopis prima POST formu sa prebrojenim količinama i upisuje korekcije
|
||||
func (h *Handler) SacuvajPopis(w http.ResponseWriter, r *http.Request) {
|
||||
k := middleware.KorisnikIzKonteksta(r.Context())
|
||||
@@ -429,6 +444,7 @@ func (h *Handler) SacuvajPopis(w http.ResponseWriter, r *http.Request) {
|
||||
Artikli: artikli,
|
||||
Greska: fmt.Sprintf("Došlo je do greške pri upisivanju %d artikala.", greskaBroj),
|
||||
TipPopisa: tipPopisa,
|
||||
TipPopisaNaziv: tipPopisaNaziv(tipPopisa),
|
||||
DatumPopisa: time.Now().Format("02.01.2006."),
|
||||
})
|
||||
return
|
||||
|
||||
@@ -93,35 +93,107 @@
|
||||
.popis-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
|
||||
}
|
||||
|
||||
/* ── ŠTAMPA: A4 landscape, bez skrolbara, sve u širinu ───────
|
||||
/* ── ŠTAMPA: A4 landscape, fiksni layout, NE responsive ───────
|
||||
Print poništava mobilne kartice (!important) — i sa telefona
|
||||
se štampa A4 tabela, ne prilagođava se ekranu. */
|
||||
@media print {
|
||||
@page { size: A4 landscape; margin: 12mm 10mm; }
|
||||
@page { size: A4 landscape; margin: 10mm 8mm; }
|
||||
|
||||
/* sakrij sve sem tabele */
|
||||
.sidebar, .topbar, .popis-akcije, .btn-primarno, .btn-sekundarno,
|
||||
.nazad-link, .poruka-uspeh, .poruka-greska, .popis-suma { display: none !important; }
|
||||
/* ── resetuj pozadinu i boje (dark tema + glass efekti) ── */
|
||||
html, body, .raspored, .glavni-sadrzaj, .sadrzaj, main, .kolona,
|
||||
.kartica, .kartica div, .kartica p, .kartica span, .kartica label {
|
||||
background: #fff !important;
|
||||
color: #111 !important;
|
||||
text-shadow: none !important;
|
||||
backdrop-filter: none !important;
|
||||
-webkit-backdrop-filter: none !important;
|
||||
}
|
||||
html { background: #fff !important; }
|
||||
body { min-width: 780px; font-size: 12px; }
|
||||
body::before, body::after { display: none !important; }
|
||||
.raspored { position: static !important; z-index: auto !important; }
|
||||
.glavni-sadrzaj { margin-left: 0 !important; }
|
||||
.sadrzaj { padding: 0 !important; max-width: none !important; }
|
||||
|
||||
/* ništa ne sme da seče/skroluje → nema skrolbara */
|
||||
/* sakrij hrom */
|
||||
.sidebar, .sidebar-overlay, .topbar, #hamburger,
|
||||
.btn-primarno, .btn-sekundarno, .nazad-link,
|
||||
.poruka-uspeh, .poruka-greska, .flash-toast,
|
||||
#potvrda-modal, .dugme-stampa, .popis-suma { display: none !important; }
|
||||
|
||||
/* sakrij info karticu (uputstvo) */
|
||||
.popis-info-kartica { display: none !important; }
|
||||
|
||||
/* sakrij okvire forme koji nisu tabela */
|
||||
.popis-forma-zaglavlje,
|
||||
.popis-forma-sumarno,
|
||||
.popis-forma-dugme { display: none !important; }
|
||||
|
||||
/* ništa ne sme da seče/skroluje */
|
||||
* { overflow: visible !important; }
|
||||
|
||||
/* zaglavlje štampe — naziv firme, datum, tip popisa */
|
||||
.stampa-zaglavlje { display: block !important; }
|
||||
|
||||
/* vrati tabelu iz kartica (mobilni) nazad u pravu tabelu */
|
||||
#popis-tabela { display: table !important; width: 100% !important; table-layout: fixed; border-collapse: collapse; font-size: 9px; }
|
||||
#popis-tabela {
|
||||
display: table !important;
|
||||
width: 100% !important;
|
||||
border-collapse: collapse;
|
||||
font-size: 10px;
|
||||
}
|
||||
#popis-tabela thead { display: table-header-group !important; }
|
||||
#popis-tabela tbody { display: table-row-group !important; }
|
||||
#popis-tabela tr { display: table-row !important; border: none !important; padding: 0 !important; margin: 0 !important; }
|
||||
#popis-tabela th, #popis-tabela td {
|
||||
#popis-tabela tfoot { display: table-footer-group !important; }
|
||||
#popis-tabela tr {
|
||||
display: table-row !important;
|
||||
border: none !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
break-inside: avoid;
|
||||
}
|
||||
#popis-tabela th {
|
||||
display: table-cell !important;
|
||||
border: 0.5px solid #999 !important;
|
||||
padding: 3px 4px !important;
|
||||
border: 0.5px solid #888 !important;
|
||||
padding: 4px 6px !important;
|
||||
font-size: 9px !important;
|
||||
font-weight: 600 !important;
|
||||
text-align: center !important;
|
||||
background: #f0f0f0 !important;
|
||||
color: #111 !important;
|
||||
}
|
||||
#popis-tabela th:first-child { text-align: left !important; }
|
||||
#popis-tabela td {
|
||||
display: table-cell !important;
|
||||
border: 0.5px solid #ccc !important;
|
||||
padding: 3px 6px !important;
|
||||
text-align: right !important;
|
||||
font-size: 9px !important;
|
||||
word-break: break-word;
|
||||
font-size: 10px !important;
|
||||
color: #111 !important;
|
||||
}
|
||||
#popis-tabela td.kart-naslov {
|
||||
text-align: left !important;
|
||||
font-size: 10px !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
#popis-tabela td.kart-naslov { text-align: left !important; font-size: 9px !important; font-weight: 500 !important; }
|
||||
#popis-tabela td::before, #popis-tabela th::before { content: none !important; }
|
||||
.popis-input { border: none !important; background: transparent !important; width: auto !important; padding: 0 !important; font-size: 9px !important; }
|
||||
|
||||
/* inputi — izgledaju kao običan tekst */
|
||||
.popis-input {
|
||||
-moz-appearance: textfield !important;
|
||||
appearance: textfield !important;
|
||||
border: none !important;
|
||||
background: transparent !important;
|
||||
width: auto !important;
|
||||
max-width: 60px !important;
|
||||
padding: 0 !important;
|
||||
font-size: 10px !important;
|
||||
color: #111 !important;
|
||||
text-align: right !important;
|
||||
}
|
||||
|
||||
/* sakrij labele iz zaglavlja forme (Tip, Napomena) */
|
||||
.popis-polje, form .polje-labela { display: none !important; }
|
||||
}
|
||||
</style>
|
||||
{{end}}
|
||||
@@ -129,6 +201,12 @@
|
||||
{{define "sadrzaj"}}
|
||||
<div class="kolona" style="gap:16px;">
|
||||
|
||||
<!-- zaglavlje štampe (skriveno na ekranu, vidljivo pri štampi) -->
|
||||
<div class="stampa-zaglavlje" style="display:none;padding:0;margin-bottom:14px;">
|
||||
<div style="font-size:16px;font-weight:700;margin-bottom:2px;">{{.NazivFirme}}</div>
|
||||
<div style="font-size:11px;color:#555;">Popis magacina — {{.TipPopisaNaziv}} | Datum: {{.DatumPopisa}} | Sačinio: {{.KorisnikIme}}</div>
|
||||
</div>
|
||||
|
||||
{{if .Sacuvano}}
|
||||
<div class="poruka-uspeh poruka-animacija">Popis je uspešno sačuvan. Korekcije su upisane u magacinsku evidenciju.</div>
|
||||
{{end}}
|
||||
@@ -137,7 +215,7 @@
|
||||
{{end}}
|
||||
|
||||
<!-- uputstvo -->
|
||||
<div class="kartica animiraj" style="padding:14px 18px;">
|
||||
<div class="kartica animiraj popis-info-kartica" style="padding:14px 18px;">
|
||||
<div style="display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;">
|
||||
<div style="flex:1;min-width:260px;">
|
||||
<div style="font-size:14px;font-weight:500;color:var(--tekst-glavni);margin-bottom:4px;">Popis magacina</div>
|
||||
@@ -162,7 +240,7 @@
|
||||
<input type="hidden" name="csrf_token" value="{{.CsrfToken}}">
|
||||
|
||||
<div class="kartica animiraj" style="padding:0;overflow:hidden;">
|
||||
<div style="padding:12px 20px;border-bottom:0.5px solid var(--ivica);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;">
|
||||
<div style="padding:12px 20px;border-bottom:0.5px solid var(--ivica);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;" class="popis-forma-zaglavlje">
|
||||
<span style="font-size:15px;font-weight:500;color:var(--tekst-glavni);">Artikli</span>
|
||||
<div style="display:flex;gap:10px;align-items:center;flex-wrap:wrap;">
|
||||
<div class="popis-polje">
|
||||
@@ -247,7 +325,7 @@
|
||||
</div>
|
||||
|
||||
<!-- sumarni pregled manjkova/viškova -->
|
||||
<div style="padding:14px 20px;border-top:0.5px solid var(--ivica);">
|
||||
<div class="popis-forma-sumarno" style="padding:14px 20px;border-top:0.5px solid var(--ivica);">
|
||||
<div class="popis-suma">
|
||||
<div class="popis-suma-stavka">
|
||||
<span class="popis-suma-labela">Manjkovi (kom)</span>
|
||||
@@ -269,7 +347,7 @@
|
||||
</div>
|
||||
|
||||
<!-- dugme na dnu -->
|
||||
<div style="padding:14px 20px;border-top:0.5px solid var(--ivica);display:flex;justify-content:flex-end;">
|
||||
<div class="popis-forma-dugme" style="padding:14px 20px;border-top:0.5px solid var(--ivica);display:flex;justify-content:flex-end;">
|
||||
<button type="submit" class="btn-primarno">Sačuvaj popis</button>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
Reference in New Issue
Block a user