2019-07-05 12:28:19 +02:00
< ? php
2020-09-07 15:04:06 +02:00
/*
* OpenSTAManager : il software gestionale open source per l ' assistenza tecnica e la fatturazione
2021-01-20 15:08:51 +01:00
* Copyright ( C ) DevCode s . r . l .
2020-09-07 15:04:06 +02:00
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < https :// www . gnu . org / licenses />.
*/
2019-07-05 12:28:19 +02:00
include_once __DIR__ . '/../../core.php' ;
use Modules\Anagrafiche\Anagrafica ;
2019-07-18 18:33:56 +02:00
$name = filter ( 'name' );
$value = filter ( 'value' );
2019-07-05 12:28:19 +02:00
switch ( $name ) {
case 'codice' :
$disponibile = Anagrafica :: where ([
[ 'codice' , $value ],
[ 'idanagrafica' , '<>' , $id_record ],
]) -> count () == 0 ;
2024-05-17 17:53:49 +02:00
$message = $disponibile ? '<i class="fa fa-check text-green"></i> ' . tr ( 'Il codice anagrafica è disponibile.' ) : '<i class="fa fa-warning text-yellow"></i> ' . tr ( " Il codice anagrafica è già utilizzato in un'altra anagrafica. " );
2019-07-05 12:28:19 +02:00
$response = [
'result' => $disponibile ,
'message' => $message ,
];
break ;
case 'codice_fiscale' :
$disponibile = Anagrafica :: where ([
[ 'codice_fiscale' , $value ],
2019-07-23 16:12:46 +02:00
[ 'codice_fiscale' , '<>' , '' ],
2019-07-05 12:28:19 +02:00
[ 'idanagrafica' , '<>' , $id_record ],
]) -> count () == 0 ;
2024-05-17 17:53:49 +02:00
$message = $disponibile ? '<i class="fa fa-check text-green"></i> ' . tr ( 'Questo codice fiscale non è ancora stato utilizzato.' ) : '<i class="fa fa-warning text-yellow"></i> ' . tr ( " Il codice fiscale è già utilizzato in un'altra anagrafica. " );
2019-07-05 12:28:19 +02:00
2024-02-25 13:22:06 +01:00
// Validazione del Codice Fiscale
// Se anagrafica non ancora definita OPPURE Se il codice fiscale è diverso dalla partita iva ma solo per anagrafiche Private e Aziende.
2019-07-05 12:28:19 +02:00
if ( empty ( $anagrafica ) || ( $anagrafica -> tipo != 'Ente pubblico' && $value != $anagrafica -> partita_iva )) {
$check = Validate :: isValidTaxCode ( $value );
if ( empty ( $check )) {
2024-02-25 13:22:06 +01:00
$disponibile = false ;
2024-05-17 17:53:49 +02:00
$message .= '<br><i class="fa fa-warning text-yellow"></i> ' . tr ( 'Il codice fiscale _COD_ non possiede un formato valido.' , [
2019-07-05 12:28:19 +02:00
'_COD_' => $value ,
]);
2021-01-11 17:52:03 +01:00
}
}
2024-02-25 13:22:06 +01:00
// Se il codice fiscale è uguale alla partiva iva
2021-02-18 18:48:44 +01:00
if ( $value == $anagrafica -> partita_iva ) {
2021-01-11 17:52:03 +01:00
$partita_iva = ! empty ( $anagrafica ) && is_numeric ( $value ) ? $anagrafica -> nazione -> iso2 . $value : $value ;
$result = $disponibile ;
$check = Validate :: isValidVatNumber ( $partita_iva );
if ( empty ( $check [ 'valid-format' ])) {
$disponibile = false ;
2024-02-25 13:22:06 +01:00
$errors [] = tr ( 'La partita iva _COD_ non possiede un formato valido.' , [
'_COD_' => $partita_iva ,
]);
2021-01-11 17:52:03 +01:00
}
if ( isset ( $check [ 'valid' ]) && empty ( $check [ 'valid' ])) {
$disponibile = false ;
2024-02-25 13:22:06 +01:00
$errors [] = tr ( " Impossibile verificare l'origine della partita iva. " );
2019-07-05 12:28:19 +02:00
}
}
$response = [
'result' => $disponibile ,
'message' => $message ,
];
break ;
2024-02-25 13:31:59 +01:00
case 'codice_intermediario' :
2024-03-22 15:52:24 +01:00
if ( ! empty ( $anagrafica )) {
2024-02-25 13:31:59 +01:00
$value = trim ( $value );
switch ( $anagrafica -> tipo ) {
2024-03-22 15:52:24 +01:00
case 'Azienda' :
case 'Privato' :
$length = 7 ;
$valido = ( strlen ( $value ) === $length ? true : false );
break ;
case 'Ente pubblico' :
$length = 6 ;
$valido = ( strlen ( $value ) === $length ? true : false );
break ;
default :
$length = 7 ;
$valido = ( strlen ( $value ) >= $length ? true : false );
break ;
2024-02-25 13:31:59 +01:00
}
}
2024-05-17 17:53:49 +02:00
$message = $valido ? '<i class="fa fa-check text-green"></i> ' . tr ( 'Il codice intermediario è valido.' ) : '<i class="fa fa-warning text-yellow"></i> ' . tr ( 'Il codice intermediario non sembra essere valido. Lunghezza attesa _LENGTH_ caratteri.' , [ '_LENGTH_' => $length ]);
2024-02-25 13:31:59 +01:00
$response = [
'result' => $valido ,
'message' => $message ,
];
break ;
2019-07-05 12:28:19 +02:00
case 'partita_iva' :
$disponibile = Anagrafica :: where ([
[ 'piva' , $value ],
2019-07-23 16:12:46 +02:00
[ 'piva' , '<>' , '' ],
2019-07-05 12:28:19 +02:00
[ 'idanagrafica' , '<>' , $id_record ],
]) -> count () == 0 ;
2024-05-17 17:53:49 +02:00
$message = $disponibile ? '<i class="fa fa-check text-green"></i> ' . tr ( 'Questa partita iva non è ancora stata utilizzata' ) : '<i class="fa fa-warning text-yellow"></i> ' . tr ( " La partita iva è già utilizzata in un'altra anagrafica " );
2019-07-05 12:28:19 +02:00
$partita_iva = ! empty ( $anagrafica ) && is_numeric ( $value ) ? $anagrafica -> nazione -> iso2 . $value : $value ;
2023-06-13 14:47:19 +02:00
if ( post ( 'additional_param' )) {
$partita_iva = post ( 'additional_param' ) . $partita_iva ;
}
2019-09-19 10:42:20 +02:00
$result = $disponibile ;
2019-07-05 12:28:19 +02:00
$check = Validate :: isValidVatNumber ( $partita_iva );
2019-09-19 10:42:20 +02:00
if ( empty ( $check [ 'valid-format' ])) {
$result = false ;
2024-02-25 13:22:06 +01:00
$errors [] = tr ( 'La partita iva _COD_ non possiede un formato valido.' , [
'_COD_' => $partita_iva ,
]);
2019-09-19 10:42:20 +02:00
}
2019-12-03 20:13:29 +01:00
if ( isset ( $check [ 'valid' ]) && empty ( $check [ 'valid' ])) {
2019-09-19 10:42:20 +02:00
$result = false ;
2024-02-25 13:22:06 +01:00
$errors [] = tr ( " Impossibile verificare l'origine della partita iva. " );
2019-09-19 10:42:20 +02:00
}
$message .= '. ' ;
if ( ! empty ( $errors )) {
2024-05-17 17:53:49 +02:00
$message .= '<br><i class="fa fa-times text-red"></i> ' . tr ( '_NUM_ errori' , [ '_NUM_' => count ( $errors )]) . ':<ul>' ;
2019-09-19 10:42:20 +02:00
foreach ( $errors as $error ) {
$message .= '<li>' . $error . '</li>' ;
}
$message .= '</ul>' ;
2019-07-05 12:28:19 +02:00
}
$response = [
2019-09-19 10:42:20 +02:00
'result' => $result ,
2019-07-05 12:28:19 +02:00
'message' => $message ,
2019-09-19 10:42:20 +02:00
'fields' => $check [ 'fields' ],
2019-07-05 12:28:19 +02:00
];
2019-09-18 18:29:00 +02:00
break ;
case 'email' :
$disponibile = Anagrafica :: where ([
[ 'email' , $value ],
[ 'email' , '<>' , '' ],
[ 'idanagrafica' , '<>' , $id_record ],
]) -> count () == 0 ;
2019-09-19 10:42:20 +02:00
$result = $disponibile ;
2019-09-18 18:29:00 +02:00
2024-05-17 17:53:49 +02:00
$message = $disponibile ? '<i class="fa fa-check text-green"></i> ' . tr ( 'Questa email non è ancora stata utilizzata' ) : '<i class="fa fa-warning text-yellow"></i> ' . tr ( " L'email è già utilizzata in un'altra anagrafica " );
2019-09-18 18:29:00 +02:00
2019-09-19 10:42:20 +02:00
$errors = [];
2019-09-18 18:29:00 +02:00
$check = Validate :: isValidEmail ( $value );
2019-09-19 10:42:20 +02:00
if ( empty ( $check [ 'valid-format' ])) {
2019-09-18 18:29:00 +02:00
$result = false ;
2024-02-25 13:22:06 +01:00
$errors [] = tr ( " L'email _COD_ non possiede un formato valido. " , [
'_COD_' => $value ,
]);
2019-09-19 10:42:20 +02:00
}
2020-01-15 11:38:41 +01:00
if ( isset ( $check [ 'smtp-check' ]) && empty ( $check [ 'smtp-check' ])) {
2019-09-19 10:42:20 +02:00
$result = false ;
2024-02-25 13:22:06 +01:00
$errors [] = tr ( " Impossibile verificare l'origine dell'email. " );
2019-09-19 10:42:20 +02:00
}
2019-09-18 18:29:00 +02:00
2019-09-19 10:42:20 +02:00
$message .= '. ' ;
if ( ! empty ( $errors )) {
2024-05-17 17:53:49 +02:00
$message .= '<br><i class="fa fa-times text-red"></i> ' . tr ( '_NUM_ errori' , [ '_NUM_' => count ( $errors )]) . ':<ul>' ;
2019-09-19 10:42:20 +02:00
foreach ( $errors as $error ) {
$message .= '<li>' . $error . '</li>' ;
2019-09-18 18:29:00 +02:00
}
2019-09-19 10:42:20 +02:00
$message .= '</ul>' ;
2019-09-18 18:29:00 +02:00
}
$response = [
'result' => $result ,
'message' => $message ,
];
2019-07-05 12:28:19 +02:00
break ;
}