Validazione Partita IVA tramite Services
This commit is contained in:
parent
93f9e26826
commit
8d1f01e146
|
@ -135,7 +135,7 @@ switch (post('op')) {
|
||||||
$partita_iva = is_numeric($partita_iva) ? $anagrafica->nazione->iso2.$partita_iva : $partita_iva;
|
$partita_iva = is_numeric($partita_iva) ? $anagrafica->nazione->iso2.$partita_iva : $partita_iva;
|
||||||
|
|
||||||
$check_vat_number = Validate::isValidVatNumber($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', [
|
flash()->warning(tr('Attenzione: la partita IVA _IVA_ potrebbe non essere valida', [
|
||||||
'_IVA_' => $partita_iva,
|
'_IVA_' => $partita_iva,
|
||||||
]));
|
]));
|
||||||
|
|
|
@ -59,16 +59,31 @@ switch ($name) {
|
||||||
|
|
||||||
$partita_iva = !empty($anagrafica) && is_numeric($value) ? $anagrafica->nazione->iso2.$value : $value;
|
$partita_iva = !empty($anagrafica) && is_numeric($value) ? $anagrafica->nazione->iso2.$value : $value;
|
||||||
|
|
||||||
|
$result = $disponibile;
|
||||||
$check = Validate::isValidVatNumber($partita_iva);
|
$check = Validate::isValidVatNumber($partita_iva);
|
||||||
if (empty($check)) {
|
if (empty($check['valid-format'])) {
|
||||||
$message .= '. '.tr('Attenzione: la partita IVA _IVA_ potrebbe non essere valida', [
|
$result = false;
|
||||||
'_IVA_' => $partita_iva,
|
$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').':<ul>';
|
||||||
|
foreach ($errors as $error) {
|
||||||
|
$message .= '<li>'.$error.'</li>';
|
||||||
|
}
|
||||||
|
$message .= '</ul>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = [
|
$response = [
|
||||||
'result' => $disponibile,
|
'result' => $result,
|
||||||
'message' => $message,
|
'message' => $message,
|
||||||
|
'fields' => $check['fields'],
|
||||||
];
|
];
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -79,24 +94,29 @@ switch ($name) {
|
||||||
['email', '<>', ''],
|
['email', '<>', ''],
|
||||||
['idanagrafica', '<>', $id_record],
|
['idanagrafica', '<>', $id_record],
|
||||||
])->count() == 0;
|
])->count() == 0;
|
||||||
|
$result = $disponibile;
|
||||||
|
|
||||||
$message = $disponibile ? tr("L'email non è già inserita in una anagrafica") : tr("L'email è già utilizzata in un'altra anagrafica");
|
$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);
|
$check = Validate::isValidEmail($value);
|
||||||
if (is_bool($check)) {
|
if (empty($check['valid-format'])) {
|
||||||
$result = false;
|
$result = false;
|
||||||
$message .= '. '.tr("Attenzione: l'email inserita non possiede un formato valido");
|
$errors[] = tr("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");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(empty($check['smtp_check'])){
|
if (empty($check['smtp-check'])) {
|
||||||
$result = false;
|
$result = false;
|
||||||
$message .= '. '.tr("Attenzione: impossibile verificare l'origine dell'email");
|
$errors[] = tr("Impossibile verificare l'origine dell'email");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$message .= '. ';
|
||||||
|
if (!empty($errors)) {
|
||||||
|
$message .= tr('Attenzione').':<ul>';
|
||||||
|
foreach ($errors as $error) {
|
||||||
|
$message .= '<li>'.$error.'</li>';
|
||||||
|
}
|
||||||
|
$message .= '</ul>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = [
|
$response = [
|
||||||
|
|
|
@ -45,29 +45,20 @@ switch (post('op')) {
|
||||||
// Validazione indirizzo email mittente
|
// Validazione indirizzo email mittente
|
||||||
$check_email = Validate::isValidEmail(post('from_address'));
|
$check_email = Validate::isValidEmail(post('from_address'));
|
||||||
|
|
||||||
// Se $check_email non è null e la riposta è negativa --> mostro il messaggio di avviso.
|
// Controllo sulla validazione
|
||||||
if (!empty($check_email)) {
|
if (!empty($check_email['valid-format'])) {
|
||||||
flash()->info(tr('Sintassi email verificata'));
|
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 {
|
} else {
|
||||||
flash()->error(tr("Attenzione: l'indirizzo email _EMAIL_ sembra non essere valido", [
|
flash()->error(tr("Attenzione: l'indirizzo email _EMAIL_ sembra non essere valido", [
|
||||||
'_EMAIL_' => $check_email->email,
|
'_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()) {
|
if (isAjaxRequest()) {
|
||||||
|
|
|
@ -120,13 +120,11 @@ class HTMLWrapper implements WrapperInterface
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
|
|
||||||
if (value == ""){
|
if (value == "") {
|
||||||
parent.removeClass("has-success").removeClass("has-error");
|
parent.removeClass("has-success").removeClass("has-error");
|
||||||
icon.attr("class", "fa fa-question-circle");
|
icon.attr("class", "fa fa-question-circle");
|
||||||
message.tooltipster("content", "'.tr('Validazione').'");
|
message.tooltipster("content", "'.tr('Validazione').'");
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
|
|
||||||
if(data.result) {
|
if(data.result) {
|
||||||
icon.attr("class", "fa fa-check");
|
icon.attr("class", "fa fa-check");
|
||||||
parent.addClass("has-success").removeClass("has-error");
|
parent.addClass("has-success").removeClass("has-error");
|
||||||
|
@ -142,7 +140,8 @@ class HTMLWrapper implements WrapperInterface
|
||||||
fields = data.fields;
|
fields = data.fields;
|
||||||
|
|
||||||
Object.keys(fields).forEach(function(element) {
|
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]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,15 +55,15 @@ class Validate
|
||||||
public static function isValidVatNumber($vat_number)
|
public static function isValidVatNumber($vat_number)
|
||||||
{
|
{
|
||||||
if (empty($vat_number)) {
|
if (empty($vat_number)) {
|
||||||
return true;
|
$result['valid-format'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Controllo sulla sintassi
|
// Controllo sulla sintassi
|
||||||
if (starts_with($vat_number, 'IT') && !static::vatCheckIT($vat_number)) {
|
if (starts_with($vat_number, 'IT') && !static::vatCheckIT($vat_number)) {
|
||||||
return false;
|
$result['valid-format'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
// Controllo con API europea ufficiale
|
// Controllo con API europea ufficiale
|
||||||
if (extension_loaded('soap')) {
|
if (extension_loaded('soap')) {
|
||||||
try {
|
try {
|
||||||
|
@ -77,64 +77,65 @@ class Validate
|
||||||
} */
|
} */
|
||||||
|
|
||||||
// Controllo attraverso apilayer
|
// Controllo attraverso apilayer
|
||||||
$access_key = setting('apilayer API key for VAT number');
|
if (Services::isEnabled()) {
|
||||||
if (!empty($access_key)) {
|
$response = Services::request('post', 'check_iva', [
|
||||||
if (!extension_loaded('curl')) {
|
'partita_iva' => $vat_number,
|
||||||
flash()->warning(tr('Estensione cURL non installata'));
|
]);
|
||||||
|
$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();
|
return $result;
|
||||||
|
|
||||||
$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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controlla se l'email inserita è valida.
|
* Controlla se l'email inserita è valida.
|
||||||
*
|
*
|
||||||
* @param string $email
|
* @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)) {
|
if (!v::email()->validate($email)) {
|
||||||
return false;
|
$result['valid-format'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Controllo attraverso apilayer
|
// Controllo attraverso apilayer
|
||||||
if (Services::isEnabled()) {
|
if (Services::isEnabled()) {
|
||||||
$response = Services::request('post', 'check_email', [
|
$response = Services::request('post', 'check_email', [
|
||||||
'email' => $email,
|
'email' => $email,
|
||||||
'smtp' => $smtp,
|
|
||||||
'format' => 1,
|
|
||||||
]);
|
]);
|
||||||
$data = Services::responseBody($response);
|
$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)
|
public static function isValidTaxCode($codice_fiscale)
|
||||||
|
|
Loading…
Reference in New Issue