Servis: vizuelni indikator prekoracenja — backorder i crvena boja

Dozvoljen backorder ugradnje delova (lager ide u minus), handler prebacuje nalog u Ceka delove, a JS boji polja crveno kad je kolicina > stanje. CSS klasa .prekoraceno umesto inline stilova.
This commit is contained in:
2026-06-22 02:05:53 +02:00
parent 53793549a2
commit 06b016b0d2
4 changed files with 59 additions and 20 deletions
+17 -3
View File
@@ -260,11 +260,11 @@
</div>
<div>
<label style="font-size:12px;color:var(--tekst-sporedni);display:block;margin-bottom:4px;">U magacinu</label>
<div id="deo-umagacinu" style="font-size:14px;font-weight:500;color:var(--tekst-glavni);text-align:center;padding:8px 0;border:0.5px solid transparent;"></div>
<div id="deo-umagacinu" style="width:100%;box-sizing:border-box;padding:8px 12px;border:0.5px solid var(--ivica);border-radius:8px;font-size:14px;font-weight:500;text-align:center;background:var(--pozadina);color:var(--tekst-glavni);"></div>
</div>
<div>
<label style="font-size:12px;color:var(--tekst-sporedni);display:block;margin-bottom:4px;">Kol.</label>
<input type="number" name="kolicina" id="deo-kol" min="1" value="1" style="width:100%;" required>
<input type="number" name="kolicina" id="deo-kol" min="1" value="1" style="width:100%;box-sizing:border-box;" required>
</div>
<div>
<label style="font-size:12px;color:var(--tekst-sporedni);display:block;margin-bottom:4px;">Cena/kom (din)</label>
@@ -363,8 +363,19 @@
var artikalSel = document.getElementById('deo-artikal');
var cena = document.getElementById('deo-cena');
var umagacinu = document.getElementById('deo-umagacinu');
var kol = document.getElementById('deo-kol');
var stanjeIzabrano = 0;
if (!artikalSel) return;
// boji „U magacinu" i polje količine crveno kada tražimo više nego što ima na
// stanju (dozvoljeno — backorder; nalog će preći u „Čeka delove" pri čuvanju);
// koristi CSS klasu .prekoraceno umesto inline stilova (main.css)
function osveziPrekoracenje() {
var preko = (parseInt(kol && kol.value, 10) || 0) > stanjeIzabrano && artikalSel.value;
if (umagacinu) umagacinu.classList.toggle('prekoraceno', preko);
if (kol) kol.classList.toggle('prekoraceno', preko);
}
if (kategSel) {
var kategs = [];
ARTIKLI.forEach(function (a) {
@@ -394,8 +405,11 @@
var c = parseFloat(opt.getAttribute('data-cena'));
if (cena) cena.value = (!isNaN(c) && c > 0) ? c.toFixed(2) : '0';
var st = parseInt(opt.getAttribute('data-stanje'), 10);
if (umagacinu) umagacinu.textContent = isNaN(st) ? '—' : st;
stanjeIzabrano = isNaN(st) ? 0 : st;
if (umagacinu) umagacinu.textContent = artikalSel.value ? stanjeIzabrano : '—';
osveziPrekoracenje();
});
if (kol) kol.addEventListener('input', osveziPrekoracenje);
})();
</script>
{{end}}