Primer commit del sistema avantika sin cambios
This commit is contained in:
180
modules/facturacion-certificado.php
Executable file
180
modules/facturacion-certificado.php
Executable file
@@ -0,0 +1,180 @@
|
||||
<?php
|
||||
|
||||
$empresa->AuthUser();
|
||||
|
||||
$rfcId = 1;
|
||||
$empresaId = $_SESSION['empresaId'];
|
||||
|
||||
$ruta_dir = DOC_ROOT.'/empresas/'.$empresaId.'/certificados/'.$rfcId;
|
||||
|
||||
if($_POST['accion'] == 'guardar_certificado'){
|
||||
|
||||
$continuar = true;
|
||||
|
||||
//Checamos si existe el directorio
|
||||
if(!is_dir($ruta_dir)){
|
||||
|
||||
//Sino existe creamos el directorio
|
||||
if(!mkdir($ruta_dir, 0755, true)){
|
||||
$errMsg = 'Hubo un error al actualizar el certificado. No se pudo crear el directorio.';
|
||||
$smarty->assign('errMsg', $errMsg);
|
||||
$continuar = false;
|
||||
}//else
|
||||
|
||||
}//if
|
||||
|
||||
if($continuar){
|
||||
|
||||
//Certificado .key
|
||||
$no_certificado = $_POST['certificado'];
|
||||
$pass = $_POST['pass_llave'];
|
||||
$generar_sello = true;
|
||||
|
||||
if(empty($pass)){
|
||||
$smarty->assign('errPass', 'Ingrese la contrasena de la llave privada.');
|
||||
$generar_sello = false;
|
||||
}//if
|
||||
|
||||
$tmp_archivo = $_FILES['file_certificado']['tmp_name'];
|
||||
$nombre_archivo = $_FILES['file_certificado']['name'];
|
||||
$file = pathinfo($nombre_archivo);
|
||||
$ext = $file['extension'];
|
||||
$ruta_destino = $ruta_dir.'/'.$nombre_archivo;
|
||||
|
||||
if(strlen($file['filename']) != 20){
|
||||
$smarty->assign('errCertificado', 'Nombre del certificado invalido. Debe tener 20 caracteres.');
|
||||
$generar_sello = false;
|
||||
@unlink($ruta_destino);
|
||||
}elseif($ext != 'cer'){
|
||||
$smarty->assign('errCertificado', 'Certificado invalido. Debe ser extension .cer');
|
||||
$generar_sello = false;
|
||||
@unlink($ruta_destino);
|
||||
}else{
|
||||
if(!move_uploaded_file($tmp_archivo, $ruta_destino)){
|
||||
$errMsg = 'Hubo un error al actualizar el certificado. No se pudo guardar el certificado.';
|
||||
$smarty->assign('errMsg', $errMsg);
|
||||
$generar_sello = false;
|
||||
}//if
|
||||
}//else
|
||||
|
||||
//Llave privada .cer
|
||||
$tmp_archivo2 = $_FILES['file_llave']['tmp_name'];
|
||||
$nombre_archivo2 = $_FILES['file_llave']['name'];
|
||||
$file2 = pathinfo($nombre_archivo2);
|
||||
$ext2 = $file2['extension'];
|
||||
$ruta_destino2 = $ruta_dir.'/'.$nombre_archivo2;
|
||||
|
||||
if($ext2 != 'key'){
|
||||
$smarty->assign('errLlave', 'Llave privada invalida. Debe ser extension .key');
|
||||
@unlink($ruta_destino);
|
||||
@unlink($ruta_destino2);
|
||||
$generar_sello = false;
|
||||
}else{
|
||||
if(!move_uploaded_file($tmp_archivo2, $ruta_destino2)){
|
||||
$errMsg = 'Hubo un error al actualizar el certificado. No se pudo guardar la llave privada.';
|
||||
$smarty->assign('errMsg', $errMsg);
|
||||
$generar_sello = false;
|
||||
}//if
|
||||
}//else
|
||||
|
||||
if($generar_sello){
|
||||
|
||||
$cadenaOriginal = 'abcdefghijklmnopqrstuvwxyz';
|
||||
$md5 = md5($cadenaOriginal);
|
||||
$certificado = $nombre_archivo2;
|
||||
$llave = $nombre_archivo;
|
||||
|
||||
//Borramos los archivos del certificado anterior
|
||||
|
||||
if(is_dir($ruta_dir)){
|
||||
if($gd = opendir($ruta_dir)){
|
||||
while($archivo = readdir($gd)){
|
||||
$info = pathinfo($ruta_dir.'/'.$archivo);
|
||||
$archivoActual = $info['basename'];
|
||||
if($archivoActual != $certificado && $archivoActual != $llave){
|
||||
@unlink($ruta_dir.'/'.$archivoActual);
|
||||
}//if
|
||||
}//while
|
||||
closedir($gd);
|
||||
}//if
|
||||
}//if
|
||||
|
||||
$comprobante->GenerarSelloGral($cadenaOriginal, $md5, $certificado, $llave, $pass, $rfcId);
|
||||
|
||||
//Checamos si se genero el archivo
|
||||
$status = '';
|
||||
$ruta_verified = $ruta_dir.'/verified.txt';
|
||||
|
||||
if(file_exists($ruta_verified))
|
||||
$status = file_get_contents($ruta_verified);
|
||||
|
||||
if(trim($status) == 'Verified OK'){
|
||||
|
||||
//guardamos el password
|
||||
$myFile = $ruta_dir."/password.txt";
|
||||
$fh = fopen($myFile, 'w');
|
||||
$stringData = $pass;
|
||||
fwrite($fh, $stringData);
|
||||
|
||||
$smarty->assign('cmpMsg', 'El certificado fue actualizado correctamente.');
|
||||
}else{
|
||||
$errMsg = 'Error al actualizar el certificado. Los datos no coinciden.';
|
||||
$smarty->assign('errMsg', $errMsg);
|
||||
|
||||
//Borramos los archivos
|
||||
if(is_dir($ruta_dir)){
|
||||
if($gd = opendir($ruta_dir)){
|
||||
while($archivo = readdir($gd)){
|
||||
@unlink($ruta_dir.'/'.$archivo);
|
||||
}//while
|
||||
closedir($gd);
|
||||
}//if
|
||||
}//if
|
||||
|
||||
}//else
|
||||
|
||||
}else{
|
||||
|
||||
@unlink($ruta_destino);
|
||||
@unlink($ruta_destino2);
|
||||
|
||||
}//else
|
||||
|
||||
}//if
|
||||
|
||||
}//if Guardar Certificado
|
||||
|
||||
$rfc->setEmpresaId($empresaId);
|
||||
$rfc->setRfcId($rfcId);
|
||||
$certNuevo = $rfc->GetCertificadoByRfc();
|
||||
|
||||
if($certNuevo == '')
|
||||
|
||||
$nom_certificado = 'No hay certificados.';
|
||||
|
||||
else{
|
||||
|
||||
$sqlQuery = 'UPDATE serie SET noCertificado = "'.$certNuevo.'" WHERE noCertificado = "'.$certAnterior.'"';
|
||||
$folios->Util()->DBSelect($_SESSION["empresaId"])->setQuery($sqlQuery);
|
||||
$folios->Util()->DBSelect($_SESSION["empresaId"])->UpdateData();
|
||||
|
||||
$existe_certificado = true;
|
||||
$nom_certificado = $certNuevo;
|
||||
|
||||
}//else
|
||||
|
||||
|
||||
//Expiration Date
|
||||
if($existe_certificado){
|
||||
|
||||
$expire = exec('openssl x509 -noout -in '.$ruta_dir.'/'.$nom_certificado.'.cer.pem -dates');
|
||||
$exp = explode('=',$expire);
|
||||
$fecha_expiracion = $exp[1];
|
||||
$fecha_exp = date('d-m-Y g:i:s a',strtotime($fecha_expiracion));
|
||||
|
||||
}//if
|
||||
|
||||
$smarty->assign('fecha_expiracion', $fecha_exp);
|
||||
$smarty->assign('nom_certificado', $nom_certificado);
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user