From 97bc1239973658045382fb97c78bf657d414bcc2 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 1 Mar 2018 22:05:54 +0100 Subject: [PATCH] Introduzione validazione p.iva --- modules/anagrafiche/actions.php | 19 +++++++- modules/anagrafiche/edit.php | 4 +- modules/smtp/actions.php | 11 +++-- src/Validate.php | 86 ++++++++++++++++++++++++--------- update/2_4.sql | 7 ++- 5 files changed, 95 insertions(+), 32 deletions(-) diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php index fe50c5e72..fa70ff36a 100644 --- a/modules/anagrafiche/actions.php +++ b/modules/anagrafiche/actions.php @@ -13,8 +13,8 @@ switch (post('op')) { $dbo->update('an_anagrafiche', [ 'ragione_sociale' => $post['ragione_sociale'], 'tipo' => $post['tipo'], - 'piva' => $post['piva'], - 'codice_fiscale' => $post['codice_fiscale'], + 'piva' => trim(strtoupper($post['piva'])), + 'codice_fiscale' => trim(strtoupper($post['codice_fiscale'])), 'data_nascita' => $post['data_nascita'], 'luogo_nascita' => $post['luogo_nascita'], 'sesso' => $post['sesso'], @@ -68,6 +68,21 @@ switch (post('op')) { $_SESSION['infos'][] = str_replace('_NAME_', '"'.$post['ragione_sociale'].'"', "Informazioni per l'anagrafica _NAME_ salvate correttamente!"); + + //validazione piva. + $check_vat_number = Validate::isValidVatNumber(strtoupper($post['piva'])); + //print_r($check_vat_number); + //exit(); + //se $check_vat_number non è null e la riposta è negativa --> mostro il messaggio di avviso. + if ((!is_null($check_vat_number)) and (!$check_vat_number->valid)){ + + if (!empty($check_vat_number->error->info)){ + $_SESSION['errors'][] = $check_vat_number->error->info; + }else{ + $_SESSION['errors'][] = tr('Attenzione questa partita IVA non sembra essere valida: ').strtoupper($post['piva']); + } + } + // Aggiorno il codice anagrafica se non è già presente, altrimenti lo ignoro $esiste = $dbo->fetchNum('SELECT idanagrafica FROM an_anagrafiche WHERE codice='.prepare($post['codice']).' AND NOT idanagrafica='.prepare($id_record)); diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index 52cf7333e..6c0b8dc31 100644 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -47,11 +47,11 @@ if (!$cliente) {
- {[ "type": "text", "label": "", "maxlength": 13, "name": "piva", "class": "text-center", "value": "$piva$" ]} + {[ "type": "text", "label": "", "maxlength": 13, "name": "piva", "class": "text-center text-uppercase", "value": "$piva$" ]}
- {[ "type": "text", "label": "", "maxlength": 16, "name": "codice_fiscale", "class": "text-center", "value": "$codice_fiscale$" ]} + {[ "type": "text", "label": "", "maxlength": 16, "name": "codice_fiscale", "class": "text-center text-uppercase", "value": "$codice_fiscale$" ]}
diff --git a/modules/smtp/actions.php b/modules/smtp/actions.php index dc9e99cbb..a3cd5bf13 100644 --- a/modules/smtp/actions.php +++ b/modules/smtp/actions.php @@ -41,9 +41,14 @@ switch (post('op')) { $check_email = Validate::isValidEmail($post['from_address'],1,1); //print_r($check_email); //exit(); - //se $check_email non è null, l'indirizzo email è settato e la riposta è negativa --> mostro il messaggio di avviso. - if ((!is_null($check_email)) and (!$check_email->smtp_check) and (!empty($post['from_address']))){ - $_SESSION['errors'][] = tr('Attenzione questo indirizzo non sembra essere valido: ').$post['from_address']; + //se $check_email non è null e la riposta è negativa --> mostro il messaggio di avviso. + if ((!is_null($check_email)) and (!$check_email->smtp_check)){ + + if (!empty($check_email->error->info)){ + $_SESSION['errors'][] = $check_email->error->info; + }else{ + $_SESSION['errors'][] = tr('Attenzione questo indirizzo non sembra essere valido: ').$post['from_address']; + } } diff --git a/src/Validate.php b/src/Validate.php index 0ca98933a..6a533a6f8 100644 --- a/src/Validate.php +++ b/src/Validate.php @@ -7,6 +7,60 @@ */ class VALIDATE { + + + /** + * Controlla se la partita iva inserita è valida. + * + * @param string $vat_number + * + * @return object + */ + public static function isValidVatNumber($vat_number) + { + + $access_key = Settings::get('apilayer API key for VAT number'); + + if ((!empty($vat_number)) and (!empty($access_key))){ + + if (strpos($vat_number, 'IT') === false) { + $vat_number = 'IT'.$vat_number; + } + + $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; + + //$data->url = $url; + //$data->json_last_error = json_last_error(); + //$data->json_last_error_msg = json_last_error_msg(); + + + } + + + + return $data; + + } + + + + + /** * Controlla se l'email inserita è valida. * @@ -19,7 +73,7 @@ class VALIDATE public static function isValidEmail($email, $format = 1, $smtp = 0) { - $access_key = Settings::get('apilayer API key'); + $access_key = Settings::get('apilayer API key for Email'); /*$data = (object) [ 'format_valid' => NULL, @@ -44,7 +98,7 @@ class VALIDATE $data = json_decode(curl_exec($ch)); curl_close($ch); - /*se la riposta è null verficando il formato, il record mx o il server smtp imposto a false*/ + /*se la riposta è null verficando il formato, il record mx o il server smtp imposto la relativa proprietà dell'oggetto a 0*/ if (($data->format_valid==null)and($format)) $data->format_valid = 0; @@ -64,31 +118,17 @@ class VALIDATE */ /* --- */ - /*echo "format_valid: ".$data->format_valid; - echo "
\n"; - echo "smtp_check: ".$data->smtp_check; - echo "
\n"; - echo "mx_found: ".$data->mx_found;*/ - //echo json_last_error(); - //echo json_last_error_msg(); - + + $data->json_last_error = json_last_error(); + $data->json_last_error_msg = json_last_error_msg(); + } - - /*return [ - 'email' => $email, - 'format_valid' => $data->format_valid, - 'smtp_check' => $data->smtp_check, - 'mx_found' => $data->mx_found, - 'json_last_error_msg' => json_last_error_msg(), - 'json_last_error' => json_last_error(), - ];*/ - - return $data; - - + + return $data; + } } diff --git a/update/2_4.sql b/update/2_4.sql index 4f596e244..a426ba39b 100644 --- a/update/2_4.sql +++ b/update/2_4.sql @@ -269,5 +269,8 @@ INSERT INTO `zz_email_print` (`id`, `id_email`, `id_print`) VALUES (NULL, (SELECT `id` FROM `zz_emails` WHERE `name` = 'Consuntivo' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti')), (SELECT `id` FROM `zz_prints` WHERE `name` = 'Consuntivo contratto')), (NULL, (SELECT `id` FROM `zz_emails` WHERE `name` = 'Consuntivo' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi')), (SELECT `id` FROM `zz_prints` WHERE `name` = 'Consuntivo preventivo')); --- apilayer API key (per validazione email, piva, indirizzo ecc...) -INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES (NULL, 'apilayer API key', '', 'string', '1', 'Generali'); \ No newline at end of file +-- apilayer API key (per validazione email) +INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES (NULL, 'apilayer API key for Email', '', 'string', '1', 'Generali'); + +-- apilayer API key (per validazione piva) +INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES (NULL, 'apilayer API key for VAT number', '', 'string', '1', 'Generali'); \ No newline at end of file