0c23b0d721
Dodate klase .btn-opasno (puno crveno) i .btn-upozorenje (narandžasto/storno); .btn-primarno-malo dobio cursor:pointer (nedostajao). Inline dugmad zamenjena klasama u: admin_profil (lozinka/2FA/regeneriši/podesi/deaktiviraj), prodaja/ servis/nabavka_detalji (obriši/storno), servis (traži), magacin (premesti), admin_login_istorija (nazad). Override-i tipa class=btn-primarno style=background uklonjeni u korist .btn-opasno/.btn-upozorenje. Ostala samo kontekstualna inline svojstva (width/align-self/veličina po instanci). Bez promene izgleda — samo izdvajanje ponovljenog stila. Šabloni parsiraju.
271 lines
9.9 KiB
HTML
271 lines
9.9 KiB
HTML
{{template "base" .}} {{define "naslov"}}Detalji prodaje — NTech{{end}} {{define
|
|
"dodatni-css"}}
|
|
<style>
|
|
.detalji-kartica:nth-child(1) { animation-delay: 0.04s; }
|
|
.detalji-kartica:nth-child(2) { animation-delay: 0.12s; }
|
|
.detalji-kartica:nth-child(3) { animation-delay: 0.2s; }
|
|
.poruka-animacija { animation: slideDown 0.3s ease forwards; }
|
|
</style>
|
|
{{end}} {{define "sadrzaj"}}
|
|
<div style="display: flex; flex-direction: column; gap: 16px">
|
|
{{if .Sacuvano}}
|
|
<div class="poruka-uspeh poruka-animacija">Prodaja je uspešno sačuvana.</div>
|
|
{{end}}
|
|
|
|
<!-- nazad dugme -->
|
|
<a href="/prodaja" class="nazad-link">
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
width="16"
|
|
height="16"
|
|
viewBox="0 0 24 24"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="2"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
aria-hidden="true">
|
|
<polyline points="15 18 9 12 15 6" />
|
|
</svg>
|
|
Nazad na prodaju
|
|
</a>
|
|
|
|
<!-- zaglavlje naloga -->
|
|
<div class="kartica detalji-kartica animiraj">
|
|
<div
|
|
style="
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 10px;
|
|
margin-bottom: 16px;
|
|
padding-bottom: 14px;
|
|
border-bottom: 0.5px solid var(--ivica);
|
|
">
|
|
<div style="display:flex;align-items:center;gap:12px;flex-wrap:wrap;">
|
|
<span style="font-size:20px;font-weight:600;color:var(--tekst-glavni);font-family:monospace;">
|
|
{{.Nalog.BrojNaloga}}
|
|
</span>
|
|
{{if .Nalog.Stornirano}}
|
|
<span style="display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:500;background:rgba(220,38,38,0.12);color:#dc2626;">
|
|
Stornirano
|
|
</span>
|
|
{{end}}
|
|
</div>
|
|
<a
|
|
href="/prodaja/{{.Nalog.ID}}/stampa"
|
|
target="_blank"
|
|
class="btn-sekundarno"
|
|
style="gap: 6px">
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
width="14"
|
|
height="14"
|
|
viewBox="0 0 24 24"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="2"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
aria-hidden="true">
|
|
<polyline points="6 9 6 2 18 2 18 9" />
|
|
<path
|
|
d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2" />
|
|
<rect x="6" y="14" width="12" height="8" />
|
|
</svg>
|
|
Štampaj
|
|
</a>
|
|
</div>
|
|
<div
|
|
style="
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
gap: 16px;
|
|
">
|
|
<div>
|
|
<div
|
|
style="
|
|
font-size: 12px;
|
|
color: var(--tekst-sporedni);
|
|
margin-bottom: 4px;
|
|
">
|
|
Datum prodaje
|
|
</div>
|
|
<div style="font-size: 14px; color: var(--tekst-glavni)">
|
|
{{.Nalog.Datum.Format "02.01.2006. u 15:04"}}
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div
|
|
style="
|
|
font-size: 12px;
|
|
color: var(--tekst-sporedni);
|
|
margin-bottom: 4px;
|
|
">
|
|
Klijent
|
|
</div>
|
|
<div
|
|
style="font-size: 14px; font-weight: 500; color: var(--tekst-glavni)">
|
|
{{if .KlijentNaziv}}{{.KlijentNaziv}}{{else}}—{{end}}
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div style="font-size:12px;color:var(--tekst-sporedni);margin-bottom:4px;">Način plaćanja</div>
|
|
<div style="font-size:14px;font-weight:500;color:var(--tekst-glavni);">
|
|
{{if eq .Nalog.NacinPlacanja "gotovina"}}Gotovina
|
|
{{else if eq .Nalog.NacinPlacanja "kartica"}}Platna kartica
|
|
{{else if eq .Nalog.NacinPlacanja "prenos"}}Bankarski prenos
|
|
{{else}}—{{end}}
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div style="font-size:12px;color:var(--tekst-sporedni);margin-bottom:4px;">Ukupno</div>
|
|
<div style="font-size:20px;font-weight:600;color:var(--sb-akcent);">
|
|
{{printf "%.2f" .Nalog.Ukupno}} din
|
|
</div>
|
|
</div>
|
|
{{if .Nalog.RazlogStorniranja}}
|
|
<div style="grid-column:1/-1;">
|
|
<div style="font-size:12px;color:var(--tekst-sporedni);margin-bottom:4px;">Razlog storniranja</div>
|
|
<div style="font-size:13px;color:#dc2626;">{{.Nalog.RazlogStorniranja}}</div>
|
|
</div>
|
|
{{end}}
|
|
{{if .Nalog.Napomena}}
|
|
<div style="grid-column: 1/-1">
|
|
<div
|
|
style="
|
|
font-size: 12px;
|
|
color: var(--tekst-sporedni);
|
|
margin-bottom: 4px;
|
|
">
|
|
Napomena
|
|
</div>
|
|
<div style="font-size: 13px; color: var(--tekst-sporedni)">
|
|
{{.Nalog.Napomena}}
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
<!-- stavke -->
|
|
<div
|
|
class="kartica detalji-kartica animiraj"
|
|
style="padding: 0; overflow: hidden">
|
|
<div style="padding: 16px 20px; border-bottom: 0.5px solid var(--ivica)">
|
|
<span
|
|
style="font-size: 15px; font-weight: 500; color: var(--tekst-glavni)">Stavke</span>
|
|
</div>
|
|
<div style="overflow-x: auto">
|
|
<table style="width: 100%; border-collapse: collapse">
|
|
<thead>
|
|
<tr style="border-bottom: 0.5px solid var(--ivica)">
|
|
<th
|
|
style="
|
|
padding: 10px 20px;
|
|
text-align: left;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
color: var(--tekst-sporedni);
|
|
">
|
|
Artikal
|
|
</th>
|
|
<th
|
|
style="
|
|
padding: 10px 20px;
|
|
text-align: center;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
color: var(--tekst-sporedni);
|
|
width: 90px;
|
|
">
|
|
Količina
|
|
</th>
|
|
<th
|
|
style="
|
|
padding: 10px 20px;
|
|
text-align: right;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
color: var(--tekst-sporedni);
|
|
width: 140px;
|
|
">
|
|
Cena/kom
|
|
</th>
|
|
<th style="padding:10px 20px;text-align:center;font-size:12px;font-weight:500;color:var(--tekst-sporedni);width:80px;">
|
|
PDV %
|
|
</th>
|
|
<th style="padding:10px 20px;text-align:right;font-size:12px;font-weight:500;color:var(--tekst-sporedni);width:120px;">
|
|
Ukupno
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{range .Stavke}}
|
|
<tr style="border-bottom: 0.5px solid var(--ivica)">
|
|
<td style="padding:10px 20px;font-size:14px;color:var(--tekst-glavni);">{{.ArtikalNaziv}}</td>
|
|
<td style="padding:10px 20px;text-align:center;font-size:14px;color:var(--tekst-glavni);">{{.Kolicina}}</td>
|
|
<td style="padding:10px 20px;text-align:right;font-size:14px;color:var(--tekst-sporedni);">{{printf "%.2f" .CenaPoKomadu}} din</td>
|
|
<td style="padding:10px 20px;text-align:center;font-size:13px;color:var(--tekst-sporedni);">
|
|
{{if .PdvStopa}}{{printf "%.0f" .PdvStopa}}%{{else}}—{{end}}
|
|
</td>
|
|
<td style="padding:10px 20px;text-align:right;font-size:14px;font-weight:500;color:var(--tekst-glavni);">{{printf "%.2f" .Ukupno}} din</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
<tfoot>
|
|
<tr style="border-top: 0.5px solid var(--ivica)">
|
|
<td colspan="4" style="padding:12px 20px;text-align:right;font-size:13px;font-weight:500;color:var(--tekst-sporedni);">Ukupno:</td>
|
|
<td style="padding:12px 20px;text-align:right;font-size:16px;font-weight:600;color:var(--sb-akcent);">{{printf "%.2f" .Nalog.Ukupno}} din</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- storno i brisanje -->
|
|
<div class="kartica detalji-kartica animiraj" style="border-color:#dc262633;">
|
|
<div style="display:flex;flex-direction:column;gap:16px;">
|
|
|
|
{{if and (index $.Dozvole "prodaja.storno") (not .Nalog.Stornirano) }}
|
|
<div style="display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;">
|
|
<div style="flex:1;min-width:200px;">
|
|
<div style="font-size:14px;font-weight:500;color:#f97316;margin-bottom:4px;">Storniranje naloga</div>
|
|
<div style="font-size:13px;color:var(--tekst-sporedni);">
|
|
Storno vraća sve artikle na stanje u magacinu. Nalog ostaje u evidenciji sa oznakom storniran.
|
|
</div>
|
|
</div>
|
|
<form method="POST" action="/prodaja/storno/{{.Nalog.ID}}" style="display:flex;flex-direction:column;gap:8px;align-items:flex-end;">
|
|
<input type="hidden" name="csrf_token" value="{{.CsrfToken}}">
|
|
<input type="text" name="razlog" placeholder="Razlog storniranja (opciono)" style="width:240px;">
|
|
<button type="submit" class="btn-upozorenje"
|
|
data-potvrda="Stornirati nalog {{.Nalog.BrojNaloga}}?">
|
|
Storniraj nalog
|
|
</button>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if index $.Dozvole "prodaja.obrisi"}}
|
|
<div style="display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;padding-top:14px;border-top:0.5px solid var(--ivica);">
|
|
<div style="flex:1;min-width:200px;">
|
|
<div style="font-size:14px;font-weight:500;color:#dc2626;margin-bottom:4px;">Brisanje naloga</div>
|
|
<div style="font-size:13px;color:var(--tekst-sporedni);">
|
|
Brisanje je trajno.{{if not .Nalog.Stornirano}} Količine artikala biće vraćene na stanje u magacinu.{{end}}
|
|
</div>
|
|
</div>
|
|
<form method="POST" action="/prodaja/obrisi/{{.Nalog.ID}}">
|
|
<input type="hidden" name="csrf_token" value="{{.CsrfToken}}">
|
|
<button type="submit" class="btn-opasno"
|
|
data-potvrda="Da li ste sigurni da želite da obrišete nalog {{.Nalog.BrojNaloga}}?">
|
|
Obriši nalog
|
|
</button>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{end}} |