/* ============================================================ KODILA — Šifrant: Valute ============================================================ */ const CURRENCY_STATUS_LABEL = { active: 'Aktivna', inactive: 'Nedejavna' }; function currencyStatusRenderer(p) { const label = CURRENCY_STATUS_LABEL[p.value] || p.value; const cls = (window.STATUS_MAP[label] || 'default'); const c = cls === 'default' ? '' : cls; return `${label}`; } const CURRENCY_COLS = [ { field: 'id', headerName: 'ID', width: 70, cellClass: 'cell-mono', pinned: 'left' }, { field: 'code', headerName: 'Oznaka', width: 110, cellClass: 'cell-mono cell-strong' }, { field: 'name', headerName: 'Ime', flex: 2, minWidth: 200 }, { field: 'symbol', headerName: 'Simbol', width: 100, valueFormatter: p => p.value || '—' }, { field: 'status', headerName: 'Status', width: 130, cellRenderer: currencyStatusRenderer }, ]; const EMPTY_CURRENCY = { id: null, code: '', name: '', symbol: '', status: 'active' }; const CURRENCY_ERROR_MESSAGES = { code: { required: 'Oznaka valute je obvezna.', invalid: 'Oznaka mora biti sestavljena iz 3 črk (ISO 4217, npr. EUR).', taken: 'Ta oznaka valute že obstaja.', }, name: { required: 'Ime valute je obvezno.' }, }; function ValutaForm({ initial, onSave, onClose }) { const isEdit = !!(initial && initial.id); const [f, setF] = useState(initial && initial.id ? { ...EMPTY_CURRENCY, ...initial, symbol: initial.symbol || '' } : { ...EMPTY_CURRENCY }); const [errors, setErrors] = useState({}); const [saving, setSaving] = useState(false); const set = (k, v) => setF(s => ({ ...s, [k]: v })); const save = async () => { setSaving(true); const payload = { code: f.code.trim().toUpperCase(), name: f.name.trim(), symbol: f.symbol.trim() || null, status: f.status, }; const ok = await onSave(f.id, payload, isEdit, setErrors); setSaving(false); if (ok) onClose(); }; const fieldError = (field) => { const codes = errors[field]; if (!codes || !codes.length) return null; const map = CURRENCY_ERROR_MESSAGES[field] || {}; return codes.map(c => map[c] || c).join(' '); }; return (