diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php index e4cd3a784..2d8b6b7c5 100644 --- a/modules/anagrafiche/actions.php +++ b/modules/anagrafiche/actions.php @@ -135,7 +135,7 @@ switch (post('op')) { $partita_iva = is_numeric($partita_iva) ? $anagrafica->nazione->iso2.$partita_iva : $partita_iva; $check_vat_number = Validate::isValidVatNumber($partita_iva); - if (empty($check_vat_number)) { + if (empty($check_vat_number['valid-format'])) { flash()->warning(tr('Attenzione: la partita IVA _IVA_ potrebbe non essere valida', [ '_IVA_' => $partita_iva, ])); diff --git a/modules/anagrafiche/validation.php b/modules/anagrafiche/validation.php index 994f97bb1..524777282 100644 --- a/modules/anagrafiche/validation.php +++ b/modules/anagrafiche/validation.php @@ -59,16 +59,31 @@ switch ($name) { $partita_iva = !empty($anagrafica) && is_numeric($value) ? $anagrafica->nazione->iso2.$value : $value; + $result = $disponibile; $check = Validate::isValidVatNumber($partita_iva); - if (empty($check)) { - $message .= '. '.tr('Attenzione: la partita IVA _IVA_ potrebbe non essere valida', [ - '_IVA_' => $partita_iva, - ]); + if (empty($check['valid-format'])) { + $result = false; + $errors[] = tr('La partita iva inserita non possiede un formato valido'); + } + + if (empty($check['valid'])) { + $result = false; + $errors[] = tr("Impossibile verificare l'origine della partita iva"); + } + + $message .= '. '; + if (!empty($errors)) { + $message .= tr('Attenzione').':'; } $response = [ - 'result' => $disponibile, + 'result' => $result, 'message' => $message, + 'fields' => $check['fields'], ]; break; @@ -79,24 +94,29 @@ switch ($name) { ['email', '<>', ''], ['idanagrafica', '<>', $id_record], ])->count() == 0; + $result = $disponibile; $message = $disponibile ? tr("L'email non è già inserita in una anagrafica") : tr("L'email è già utilizzata in un'altra anagrafica"); - $result = $disponibile; + $errors = []; $check = Validate::isValidEmail($value); - if (is_bool($check)) { + if (empty($check['valid-format'])) { $result = false; - $message .= '. '.tr("Attenzione: l'email inserita non possiede un formato valido"); - }else { - if(empty($check['format_valid'])){ - $result = false; - $message .= '. '.tr("Attenzione: l'email inserita non possiede un formato valido"); - } + $errors[] = tr("L'email inserita non possiede un formato valido"); + } - if(empty($check['smtp_check'])){ - $result = false; - $message .= '. '.tr("Attenzione: impossibile verificare l'origine dell'email"); + if (empty($check['smtp-check'])) { + $result = false; + $errors[] = tr("Impossibile verificare l'origine dell'email"); + } + + $message .= '. '; + if (!empty($errors)) { + $message .= tr('Attenzione').':'; } $response = [ diff --git a/modules/smtp/actions.php b/modules/smtp/actions.php index 01ec5ce6f..032fc4b84 100644 --- a/modules/smtp/actions.php +++ b/modules/smtp/actions.php @@ -45,29 +45,20 @@ switch (post('op')) { // Validazione indirizzo email mittente $check_email = Validate::isValidEmail(post('from_address')); - // Se $check_email non è null e la riposta è negativa --> mostro il messaggio di avviso. - if (!empty($check_email)) { + // Controllo sulla validazione + if (!empty($check_email['valid-format'])) { flash()->info(tr('Sintassi email verificata')); - - if (is_object($check_email) && $check_email->smtp) { - if ($check_email->smtp_check) { - flash()->info(tr('SMTP email verificato')); - } elseif (!$check_email->smtp_check) { - flash()->warning(tr('SMTP email non verificato')); - } else { - flash()->error(tr("Attenzione: l'SMTP email _EMAIL_ sembra non essere valido", [ - '_EMAIL_' => $check_email->email, - ])); - } - } } else { flash()->error(tr("Attenzione: l'indirizzo email _EMAIL_ sembra non essere valido", [ '_EMAIL_' => $check_email->email, ])); + } - if (is_object($check_email) && !empty($check_email->error->info)) { - flash()->error($check_email->error->info); - } + // Controllo sulla verifica + if (!empty($check_email['smtp-check'])) { + flash()->info(tr('SMTP email verificato')); + } else { + flash()->warning(tr('SMTP email non verificato')); } if (isAjaxRequest()) { diff --git a/src/HTMLBuilder/Wrapper/HTMLWrapper.php b/src/HTMLBuilder/Wrapper/HTMLWrapper.php index 4e26e2d37..208ca2bc8 100644 --- a/src/HTMLBuilder/Wrapper/HTMLWrapper.php +++ b/src/HTMLBuilder/Wrapper/HTMLWrapper.php @@ -120,13 +120,11 @@ class HTMLWrapper implements WrapperInterface success: function(data) { data = JSON.parse(data); - if (value == ""){ + if (value == "") { parent.removeClass("has-success").removeClass("has-error"); icon.attr("class", "fa fa-question-circle"); message.tooltipster("content", "'.tr('Validazione').'"); - } - else{ - + } else { if(data.result) { icon.attr("class", "fa fa-check"); parent.addClass("has-success").removeClass("has-error"); @@ -142,7 +140,8 @@ class HTMLWrapper implements WrapperInterface fields = data.fields; Object.keys(fields).forEach(function(element) { - $("[name=" + element + "]").val(fields[element]); + var single_input = $("[name=" + element + "]"); + if (!single_input.val()) single_input.val(fields[element]); }); } diff --git a/src/Validate.php b/src/Validate.php index e297f19dc..5256a487b 100644 --- a/src/Validate.php +++ b/src/Validate.php @@ -55,15 +55,15 @@ class Validate public static function isValidVatNumber($vat_number) { if (empty($vat_number)) { - return true; + $result['valid-format'] = true; } // Controllo sulla sintassi if (starts_with($vat_number, 'IT') && !static::vatCheckIT($vat_number)) { - return false; + $result['valid-format'] = false; } - /** + /* // Controllo con API europea ufficiale if (extension_loaded('soap')) { try { @@ -77,64 +77,65 @@ class Validate } */ // Controllo attraverso apilayer - $access_key = setting('apilayer API key for VAT number'); - if (!empty($access_key)) { - if (!extension_loaded('curl')) { - flash()->warning(tr('Estensione cURL non installata')); + if (Services::isEnabled()) { + $response = Services::request('post', 'check_iva', [ + 'partita_iva' => $vat_number, + ]); + $data = Services::responseBody($response); - return true; + if (!empty($data['result'])) { + $result['valid-format'] = $data['result']['format_valid']; + $result['valid'] = $data['result']['valid']; + + $fields = []; + // Ragione sociale + $fields['ragione_sociale'] = $data['result']['company_name']; + + // Indirizzo + $address = $data['result']['company_address']; + $info = explode(PHP_EOL, $address); + $fields['indirizzo'] = $info[0]; + + $info = explode(' ', $info[1]); + $fields['cap'] = $info[0]; + $fields['citta'] = $info[1]; + $fields['provincia'] = $info[2]; + + $result['fields'] = $fields; } - - $ch = curl_init(); - - $qs = '&vat_number='.urlencode(strtoupper($vat_number)); - - $url = "http://apilayer.net/api/validate?access_key=$access_key".$qs; - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - - $data = json_decode(curl_exec($ch)); - curl_close($ch); - - /*se la riposta è null imposto la relativa proprietà dell'oggetto a 0*/ - if ($data->valid == null) { - $data->valid = 0; - } - - return $data->valid; } - return true; + return $result; } /** * Controlla se l'email inserita è valida. * * @param string $email - * @param bool $smtp * - * @return bool|object + * @return array */ - public static function isValidEmail($email, $smtp = 0) + public static function isValidEmail($email) { + $result = []; if (!v::email()->validate($email)) { - return false; + $result['valid-format'] = false; } // Controllo attraverso apilayer if (Services::isEnabled()) { $response = Services::request('post', 'check_email', [ 'email' => $email, - 'smtp' => $smtp, - 'format' => 1, ]); $data = Services::responseBody($response); - return $data['result']; + if (!empty($data['result'])) { + $result['valid-format'] = $data['result']['format_valid']; + $result['smtp-check'] = $data['result']['smtp_check']; + } } - return null; + return $result; } public static function isValidTaxCode($codice_fiscale)