{"id":224,"date":"2026-01-25T12:53:35","date_gmt":"2026-01-25T11:53:35","guid":{"rendered":"https:\/\/www.comunedicaivano.it\/servizidigitali\/?page_id=224"},"modified":"2026-01-27T00:35:20","modified_gmt":"2026-01-26T23:35:20","slug":"ricognizione-erp-alloggi-popolari","status":"publish","type":"page","link":"https:\/\/www.comunedicaivano.it\/servizidigitali\/ricognizione-erp-alloggi-popolari\/","title":{"rendered":"Ricognizione ERP &#8211; Alloggi popolari"},"content":{"rendered":"\n<section class=\"container my-5\" id=\"erp-form\">\n  <p class=\"text-muted\">I campi con * sono obbligatori.<\/p>\n\n  <!-- MODAL POPUP -->\n  <div class=\"modal fade\" id=\"erpErrModal\" tabindex=\"-1\" aria-hidden=\"true\">\n    <div class=\"modal-dialog\">\n      <div class=\"modal-content\">\n        <div class=\"modal-header\">\n          <h5 class=\"modal-title\">Attenzione<\/h5>\n          <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Chiudi\"><\/button>\n        <\/div>\n        <div class=\"modal-body\" id=\"erpErrMsg\">Errore.<\/div>\n        <div class=\"modal-footer\">\n          <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Chiudi<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n\n  <form class=\"row g-3 needs-validation\" novalidate\n        action=\"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-admin\/admin-post.php\"\n        method=\"post\">\n\n    <input type=\"hidden\" name=\"action\" value=\"caivano_ricognizione_erp_submit\">\n\n    <!-- NONCE (via AJAX) -->\n    <input type=\"hidden\" name=\"caivano_ricognizione_erp_nonce\" id=\"erp_nonce\" value=\"\">\n\n    <!-- Honeypot -->\n    <div style=\"position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden;\">\n      <label>Company <input type=\"text\" name=\"erp_company\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n    <\/div>\n\n    <!-- Timestamp anti-bot -->\n    <input type=\"hidden\" name=\"erp_ts\" id=\"erp_ts\" value=\"\">\n\n    <div class=\"col-12\"><h4 class=\"mt-3\">Dati intestatario<\/h4><\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"nome_intestatario\">Nome intestatario *<\/label>\n      <input type=\"text\" class=\"form-control\" id=\"nome_intestatario\" name=\"nome_intestatario\" required>\n      <div class=\"invalid-feedback\">Campo obbligatorio.<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"cognome_intestatario\">Cognome intestatario *<\/label>\n      <input type=\"text\" class=\"form-control\" id=\"cognome_intestatario\" name=\"cognome_intestatario\" required>\n      <div class=\"invalid-feedback\">Campo obbligatorio.<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"cf_intestatario\">Codice Fiscale intestatario *<\/label>\n      <input type=\"text\" class=\"form-control text-uppercase\" id=\"cf_intestatario\" name=\"cf_intestatario\" maxlength=\"16\" required>\n      <div class=\"invalid-feedback\">Inserisci un CF valido (16 caratteri).<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"nascita_intestatario\">Data di nascita intestatario *<\/label>\n      <input type=\"date\" class=\"form-control\" id=\"nascita_intestatario\" name=\"nascita_intestatario\" required>\n      <div class=\"invalid-feedback\">Seleziona una data valida.<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"telefono_intestatario\">Telefono intestatario *<\/label>\n      <input type=\"text\" class=\"form-control\" id=\"telefono_intestatario\" name=\"telefono_intestatario\" required>\n      <div class=\"invalid-feedback\">Campo obbligatorio.<\/div>\n    <\/div>\n\n    <div class=\"col-12\">\n      <hr class=\"my-3\">\n      <h4 class=\"mt-2\">Dati referente dell\u2019intestatario<\/h4>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"nome_referente\">Nome referente *<\/label>\n      <input type=\"text\" class=\"form-control\" id=\"nome_referente\" name=\"nome_referente\" required>\n      <div class=\"invalid-feedback\">Campo obbligatorio.<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"cognome_referente\">Cognome referente *<\/label>\n      <input type=\"text\" class=\"form-control\" id=\"cognome_referente\" name=\"cognome_referente\" required>\n      <div class=\"invalid-feedback\">Campo obbligatorio.<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"cf_referente\">Codice Fiscale referente *<\/label>\n      <input type=\"text\" class=\"form-control text-uppercase\" id=\"cf_referente\" name=\"cf_referente\" maxlength=\"16\" required>\n      <div class=\"invalid-feedback\">Inserisci un CF valido (16 caratteri).<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"nascita_referente\">Data di nascita referente *<\/label>\n      <input type=\"date\" class=\"form-control\" id=\"nascita_referente\" name=\"nascita_referente\" required>\n      <div class=\"invalid-feedback\">Seleziona una data valida.<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"telefono_referente\">Telefono referente *<\/label>\n      <input type=\"text\" class=\"form-control\" id=\"telefono_referente\" name=\"telefono_referente\" required>\n      <div class=\"invalid-feedback\">Campo obbligatorio.<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"email_referente\">Email referente *<\/label>\n      <input type=\"email\" class=\"form-control\" id=\"email_referente\" name=\"email_referente\" required>\n      <div class=\"invalid-feedback\">Inserisci un&#8217;email valida.<\/div>\n    <\/div>\n\n    <div class=\"col-12\">\n      <hr class=\"my-3\">\n      <h4 class=\"mt-2\">Condizione e pagamenti<\/h4>\n    <\/div>\n\n    <div class=\"col-12\">\n      <label class=\"form-label\" for=\"condizione\">Condizione *<\/label>\n      <select class=\"form-select\" id=\"condizione\" name=\"condizione\" required>\n        <option value=\"\" selected disabled>Seleziona&#8230;<\/option>\n        <option value=\"OCCUPANTE CON ALLOGGIO RISCATTATO\">OCCUPANTE CON ALLOGGIO RISCATTATO<\/option>\n        <option value=\"OCCUPANTE ABUSIVO IN ATTESA DI REGOLARIZZAZIONE CON PARTECIPAZIONE ALLA SANATORIA DELLA REGIONE CAMPANIA\">OCCUPANTE ABUSIVO IN ATTESA DI REGOLARIZZAZIONE CON PARTECIPAZIONE ALLA SANATORIA DELLA REGIONE CAMPANIA<\/option>\n        <option value=\"OCCUPANTE ABUSIVO CON ORDINANZA DI SFRATTO\">OCCUPANTE ABUSIVO CON ORDINANZA DI SFRATTO<\/option>\n        <option value=\"OCCUPANTE ABUSIVO SENZA ORDINANZA DI SFRATTO\">OCCUPANTE ABUSIVO SENZA ORDINANZA DI SFRATTO<\/option>\n        <option value=\"OCCUPANTE ABUSIVO CON ORDINANZA DI SFRATTO RESA ESECUTIVA\">OCCUPANTE ABUSIVO CON ORDINANZA DI SFRATTO RESA ESECUTIVA<\/option>\n        <option value=\"OCCUPANTE CON ASSEGNAZIONE PROVVISORIA\">OCCUPANTE CON ASSEGNAZIONE PROVVISORIA<\/option>\n        <option value=\"OCCUPANTE CON REQUISITI PER LA VOLTURA\">OCCUPANTE CON REQUISITI PER LA VOLTURA<\/option>\n      <\/select>\n      <div class=\"invalid-feedback\">Seleziona una condizione.<\/div>\n    <\/div>\n\n    <div class=\"col-12 col-md-6\">\n      <label class=\"form-label\" for=\"pagamenti\">Pagamenti *<\/label>\n      <select class=\"form-select\" id=\"pagamenti\" name=\"pagamenti\" required>\n        <option value=\"\" selected disabled>Seleziona&#8230;<\/option>\n        <option value=\"IN REGOLA CON I PAGAMENTI\">IN REGOLA CON I PAGAMENTI<\/option>\n        <option value=\"NON IN REGOLA CON I PAGAMENTI\">NON IN REGOLA CON I PAGAMENTI<\/option>\n      <\/select>\n      <div class=\"invalid-feedback\">Seleziona una voce.<\/div>\n    <\/div>\n\n    <div class=\"col-12\">\n      <div class=\"form-check\">\n        <input class=\"form-check-input\" type=\"checkbox\" value=\"1\" id=\"vuole_rateizzazione\" name=\"vuole_rateizzazione\">\n        <label class=\"form-check-label\" for=\"vuole_rateizzazione\">\n          Dichiaro la volont\u00e0 di regolarizzare la posizione contributiva con richiesta di rateizzazione del debito attestato.\n        <\/label>\n      <\/div>\n    <\/div>\n\n    <div class=\"col-12\">\n      <hr class=\"my-3\">\n      <h4 class=\"mt-2\">Verifica anti-bot<\/h4>\n      <div id=\"erpCaptchaWrap\">\n        <div class=\"text-muted\">Caricamento verifica anti-bot\u2026<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"col-12\">\n      <div class=\"form-check\">\n        <input class=\"form-check-input\" type=\"checkbox\" value=\"1\" id=\"privacy_accettata\" name=\"privacy_accettata\" required>\n        <label class=\"form-check-label\" for=\"privacy_accettata\">\n          Dichiaro di aver preso visione dell\u2019informativa privacy e autorizzo il trattamento dei dati per le finalit\u00e0 del procedimento. *\n        <\/label>\n        <div class=\"invalid-feedback\">Devi accettare la privacy.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"col-12 d-grid gap-2 d-md-flex justify-content-md-end mt-3\">\n      <button type=\"submit\" class=\"btn btn-primary\" id=\"erpSubmitBtn\">Invia domanda<\/button>\n    <\/div>\n\n  <\/form>\n<\/section>\n\n<script>\n(function () {\n  var debugBox = document.getElementById('erpDebugBox');\n  var nonceEl = document.getElementById('erp_nonce');\n  var captchaWrap = document.getElementById('erpCaptchaWrap');\n  var tsEl = document.getElementById('erp_ts');\n\n  if (tsEl) tsEl.value = Date.now().toString();\n\n  function showErr(msg){\n    try {\n      var msgEl = document.getElementById('erpErrMsg');\n      if (msgEl) msgEl.innerText = msg;\n      var m = new bootstrap.Modal(document.getElementById('erpErrModal'));\n      m.show();\n    } catch(e) {\n      alert(msg);\n    }\n  }\n\n  function dbg(html){\n    if (!debugBox) return;\n    debugBox.style.display = 'block';\n    debugBox.innerHTML = html;\n  }\n\n  \/\/ Costruisce URL AJAX con fallback multipli\n  var ajaxCandidates = [];\n  if (window.CAIVANO_ERP_AJAX_URL) ajaxCandidates.push(window.CAIVANO_ERP_AJAX_URL);\n  ajaxCandidates.push(\"\/wp-admin\/admin-ajax.php\");\n  ajaxCandidates.push(\"\/servizidigitali\/wp-admin\/admin-ajax.php\");\n  ajaxCandidates.push(\"https:\/\/www.comunedicaivano.it\/wp-admin\/admin-ajax.php\");\n\n  function tryFetchJson(url, action, cbOk, cbFail){\n    var full = url + (url.indexOf('?')>-1 ? '&' : '?') + \"action=\" + encodeURIComponent(action) + \"&_=\" + Date.now();\n    fetch(full, { credentials: \"same-origin\" })\n      .then(function(r){\n        return r.text().then(function(t){\n          cbOk({ status: r.status, text: t, url: full });\n        });\n      })\n      .catch(function(err){\n        cbFail({ error: err, url: full });\n      });\n  }\n\n  function findWorkingAjax(action, onSuccess, onAllFail){\n    var i = 0;\n\n    function next(){\n      if (i >= ajaxCandidates.length) return onAllFail();\n      var base = ajaxCandidates[i++];\n      tryFetchJson(base, action, function(resp){\n        \/\/ prova a parse JSON\n        var parsed = null;\n        try { parsed = JSON.parse(resp.text); } catch(e) {}\n        if (resp.status === 200 && parsed && parsed.success) {\n          onSuccess(base, parsed);\n        } else {\n          \/\/ continua a provare\n          dbg(\"<strong>AJAX test fallito<\/strong><br>Base: \" + base +\n              \"<br>Status: \" + resp.status +\n              \"<br>URL: \" + resp.url +\n              \"<br>Risposta (inizio): <code>\" + (resp.text || '').substring(0, 180).replace(\/<\/g,'&lt;') + \"<\/code>\");\n          next();\n        }\n      }, function(fail){\n        dbg(\"<strong>AJAX non raggiungibile<\/strong><br>URL: \" + fail.url);\n        next();\n      });\n    }\n    next();\n  }\n\n  \/\/ 0) PING diagnostico (serve a capire se admin-ajax \u00e8 bloccato)\n  findWorkingAjax(\"caivano_erp_ping\", function(base, json){\n    dbg(\"<strong>AJAX OK<\/strong><br>Base AJAX selezionata: <code>\" + base + \"<\/code><br>PING: \" + JSON.stringify(json.data));\n    \/\/ 1) NONCE\n    findWorkingAjax(\"caivano_erp_get_nonce\", function(base2, j2){\n      if (nonceEl) nonceEl.value = (j2.data && j2.data.nonce) ? j2.data.nonce : \"\";\n      if (!nonceEl.value) {\n        showErr(\"Nonce non valido. Ricarica la pagina e riprova.\");\n        return;\n      }\n\n      \/\/ 2) CAPTCHA\n      findWorkingAjax(\"caivano_erp_get_captcha\", function(base3, j3){\n        if (captchaWrap) captchaWrap.innerHTML = (j3.data && j3.data.html) ? j3.data.html : '<div class=\"text-danger\">Captcha non disponibile.<\/div>';\n      }, function(){\n        if (captchaWrap) captchaWrap.innerHTML = '<div class=\"text-danger\">Errore nel caricamento del captcha. Ricarica la pagina.<\/div>';\n      });\n\n    }, function(){\n      showErr(\"Errore durante l'inizializzazione del modulo (nonce). Ricarica la pagina e riprova.\");\n    });\n\n  }, function(){\n    showErr(\"Errore inizializzazione: admin-ajax.php non risponde. Possibile blocco security\/cache o endpoint non registrato.\");\n  });\n\n  \/\/ Validazione + blocco submit se nonce non presente\n  var forms = document.querySelectorAll('.needs-validation');\n  Array.prototype.slice.call(forms).forEach(function (form) {\n    form.addEventListener('submit', function (event) {\n      if (!form.checkValidity()) {\n        event.preventDefault();\n        event.stopPropagation();\n        form.classList.add('was-validated');\n        showErr(\"Compila tutti i campi obbligatori e verifica i dati inseriti.\");\n        return;\n      }\n      if (!nonceEl || !nonceEl.value) {\n        event.preventDefault();\n        event.stopPropagation();\n        showErr(\"Modulo non inizializzato (nonce). Ricarica la pagina e riprova.\");\n        return;\n      }\n      var btn = document.getElementById('erpSubmitBtn');\n      if (btn) {\n        btn.disabled = true;\n        btn.innerText = \"Invio in corso...\";\n      }\n    }, false);\n  });\n\n  \/\/ Popup errori server-side via ?erp_err=\n  var params = new URLSearchParams(window.location.search);\n  if (params.has('erp_err')) {\n    var code = params.get('erp_err');\n    var msgMap = {\n      'required': 'Compila tutti i campi obbligatori.',\n      'cf_i': 'Codice fiscale intestatario non valido (16 caratteri).',\n      'cf_r': 'Codice fiscale referente non valido (16 caratteri).',\n      'email': 'Email referente non valida.',\n      'privacy': 'Devi accettare la privacy per inviare la domanda.',\n      'captcha': 'Captcha errato o scaduto. Ricarica la pagina e riprova.',\n      'nonce': 'Sessione non valida. Ricarica la pagina e riprova.',\n      'too_fast': 'Invio troppo rapido. Attendi qualche secondo e riprova.',\n      'rate_limit': 'Troppi tentativi ravvicinati. Attendi un minuto e riprova.',\n      'save': 'Errore di salvataggio. Riprova.',\n      'bot': 'Invio non valido.',\n      'bad_method': 'Richiesta non valida.'\n    };\n    showErr(msgMap[code] || 'Si \u00e8 verificato un errore. Verifica i dati inseriti e riprova.');\n    try {\n      var cleanUrl = window.location.origin + window.location.pathname;\n      window.history.replaceState({}, document.title, cleanUrl);\n    } catch(e) {}\n  }\n\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>I campi con * sono obbligatori. Attenzione Errore. Chiudi Company Dati intestatario Nome intestatario * Campo obbligatorio. Cognome intestatario * Campo obbligatorio. Codice Fiscale intestatario &#8230; <\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-224","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/pages\/224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/comments?post=224"}],"version-history":[{"count":9,"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/pages\/224\/revisions"}],"predecessor-version":[{"id":256,"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/pages\/224\/revisions\/256"}],"wp:attachment":[{"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/media?parent=224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}