Klijenti: adresa (obavezna za pravna lica) + prikaz svih podataka klijenta u Novoj prodaji

Zakon o PDV (čl. 42, sadržaj računa) zahteva adresu kupca na fakturi za
pravna lica — polje 'Mesto' (grad) samo nije dovoljno. Dodata kolona
adresa u klijenti, novo polje na formi, obavezno kad je tip pravno.

Kartica izabranog klijenta u Novoj prodaji sad prikazuje PIB/JMBG
(zavisno od tipa), adresu, mesto, telefon i email — svako popunjeno
polje u svom redu, samo kad je klijent već izabran.
This commit is contained in:
2026-07-01 16:05:13 +02:00
parent a8da9be706
commit 046fcace8e
8 changed files with 85 additions and 37 deletions
+15
View File
@@ -201,6 +201,21 @@ document.addEventListener('alpine:init', () => {
if (k.telefon) d.push(k.telefon)
return d.join(' · ')
},
// puna lista podataka izabranog klijenta (labela + vrednost), za prikaz kad je klijent već izabran
poljaIzabranogKlijenta(k) {
if (!k) return []
const p = []
if (k.tip === 'pravno') {
if (k.pib) p.push({ labela: 'PIB', vrednost: k.pib })
} else {
if (k.jmbg) p.push({ labela: k.tipIdentifikacije === 'licna_karta' ? 'Br. lične karte' : 'JMBG', vrednost: k.jmbg })
}
if (k.adresa) p.push({ labela: 'Adresa', vrednost: k.adresa })
if (k.mesto) p.push({ labela: 'Mesto', vrednost: k.mesto })
if (k.telefon) p.push({ labela: 'Telefon', vrednost: k.telefon })
if (k.email) p.push({ labela: 'Email', vrednost: k.email })
return p
},
init() {
this.artikliOpcije = window._ntechArtikli || []
this.klijenti = window._ntechKlijenti || []
@@ -145,6 +145,11 @@
<input type="text" name="mesto" value="{{.Klijent.Mesto}}"
placeholder="npr. Niš">
</div>
<div>
<label class="polje-labela">Adresa (ulica i broj)</label>
<input type="text" name="adresa" value="{{.Klijent.Adresa}}"
placeholder="npr. Kneza Miloša 12">
</div>
</div>
</div>
+4 -2
View File
@@ -64,10 +64,12 @@
</div>
<input type="hidden" name="klijent_id" :value="izabraniKlijentId || ''" />
<template x-if="izabraniKlijent">
<div style="display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; background: var(--pozadina); border: 0.5px solid var(--ivica); border-radius: 8px">
<div style="display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 8px 10px; background: var(--pozadina); border: 0.5px solid var(--ivica); border-radius: 8px">
<div>
<div style="font-size: 13px; font-weight: 500; color: var(--tekst-glavni)" x-text="izabraniKlijent.naziv"></div>
<div style="font-size: 11px; color: var(--tekst-sporedni)" x-text="detaljKlijenta(izabraniKlijent)"></div>
<template x-for="p in poljaIzabranogKlijenta(izabraniKlijent)" :key="p.labela">
<div style="font-size: 11px; color: var(--tekst-sporedni)"><span x-text="p.labela"></span>: <span x-text="p.vrednost"></span></div>
</template>
</div>
<button type="button" class="btn-sekundarno" @click="ocistiKlijenta()" style="padding: 3px 10px; font-size: 12px">Promeni</button>
</div>