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').':
';
+ foreach ($errors as $error) {
+ $message .= '- '.$error.'
';
+ }
+ $message .= '
';
}
$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').':';
+ foreach ($errors as $error) {
+ $message .= '- '.$error.'
';
}
+ $message .= '
';
}
$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)