[UX] register: P.IVA validazione locale + messaggio verde se valida (non blocca su lookup fallito)
This commit is contained in:
parent
d603f3563f
commit
67560e1758
@ -437,17 +437,32 @@
|
||||
}
|
||||
|
||||
// --- P.IVA Lookup ---
|
||||
function validaFormatoPiva(v) {
|
||||
// Controllo cifra di controllo P.IVA italiana
|
||||
if (!/^\d{11}$/.test(v)) return false;
|
||||
let s = 0;
|
||||
for (let i = 0; i < 10; i++) {
|
||||
let n = parseInt(v[i]);
|
||||
if (i % 2 === 1) { n *= 2; if (n > 9) n -= 9; }
|
||||
s += n;
|
||||
}
|
||||
return (10 - (s % 10)) % 10 === parseInt(v[10]);
|
||||
}
|
||||
|
||||
function lookupPiva(val) {
|
||||
clearTimeout(pivaLookupTimer);
|
||||
val = val.replace(/\s/g, '');
|
||||
const statusEl = document.getElementById('piva-status');
|
||||
if (val.length !== 11) {
|
||||
if (val.length < 11) { pivaData = null; statusEl.innerHTML = ''; return; }
|
||||
if (val.length === 11 && !validaFormatoPiva(val)) {
|
||||
pivaData = null;
|
||||
statusEl.innerHTML = '';
|
||||
statusEl.className = 'lookup-status err';
|
||||
statusEl.innerHTML = '<i class="fas fa-times-circle"></i> P.IVA non valida (cifra di controllo errata)';
|
||||
return;
|
||||
}
|
||||
statusEl.className = 'lookup-status loading';
|
||||
statusEl.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Ricerca azienda...';
|
||||
// Formato OK — mostra subito conferma, poi prova lookup
|
||||
statusEl.className = 'lookup-status ok';
|
||||
statusEl.innerHTML = '<i class="fas fa-check-circle"></i> P.IVA valida — ricerca dati azienda...';
|
||||
pivaLookupTimer = setTimeout(async () => {
|
||||
try {
|
||||
const res = await fetch(api.baseUrl + '/onboarding/lookup-piva', {
|
||||
@ -462,12 +477,13 @@
|
||||
statusEl.innerHTML = '<i class="fas fa-building"></i> ' + data.data.company_name;
|
||||
} else {
|
||||
pivaData = null;
|
||||
statusEl.className = 'lookup-status';
|
||||
statusEl.innerHTML = '<i class="fas fa-info-circle" style="color:#6b7280;"></i> Azienda non trovata, potrai inserire i dati manualmente';
|
||||
statusEl.className = 'lookup-status ok';
|
||||
statusEl.innerHTML = '<i class="fas fa-check-circle"></i> P.IVA valida — inserisci i dati aziendali nel passo successivo';
|
||||
}
|
||||
} catch {
|
||||
pivaData = null;
|
||||
statusEl.innerHTML = '';
|
||||
statusEl.className = 'lookup-status ok';
|
||||
statusEl.innerHTML = '<i class="fas fa-check-circle"></i> P.IVA valida — inserisci i dati aziendali nel passo successivo';
|
||||
}
|
||||
}, 800);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user