This commit is contained in:
2025-07-09 16:14:22 -06:00
parent 91b6806898
commit 287ad27274
39 changed files with 2517 additions and 2000 deletions

View File

@@ -4,33 +4,33 @@ require_once __DIR__ . '/../../config/database.php';
require_once __DIR__ . '/../helpers/env.php';
// Mostrar tabla de expedientes
function index() {
function index()
{
if (!isset($_SESSION['usuario_id'])) {
header('Location: /IMPORTADORES/login');
exit;
}
$conn = getConnection();
$id_importador = $_SESSION['usuario_id'];
$sql = "
SELECT
sif.id_solicitud,
sif.numero_pedimento,
sif.fecha_factura,
sif.aduana,
sif.proveedor_clave,
COUNT(ea.id) AS total_archivos,
ISNULL(SUM(ea.tamano_archivo), 0) AS total_tamano
FROM solicitud_importacion_factura sif
LEFT JOIN expediente_archivos ea ON ea.id_solicitud = sif.id_solicitud
WHERE sif.numero_pedimento IS NOT NULL AND sif.id_importador = ? and sif.status > 0
GROUP BY sif.id_solicitud, sif.numero_pedimento, sif.fecha_factura, sif.aduana, sif.proveedor_clave
ORDER BY sif.fecha_factura DESC
";
$sql = "SELECT
sif.id_solicitud, sif.numero_pedimento, sif.fecha_factura, sif.aduana, sif.proveedor_clave,
COUNT(ea.id) AS total_archivos,
ISNULL(SUM(ea.tamano_archivo), 0) AS total_tamano
FROM solicitud_importacion_factura sif
LEFT JOIN expediente_archivos ea
ON ea.id_solicitud = sif.id_solicitud
WHERE sif.numero_pedimento IS NOT NULL
AND sif.id_importador = ?
AND sif.status > 0
GROUP BY sif.id_solicitud, sif.numero_pedimento, sif.fecha_factura, sif.aduana, sif.proveedor_clave
ORDER BY sif.fecha_factura DESC
";
$stmt = sqlsrv_query($conn, $sql, [$id_importador]);
$expedientes = [];
$expedientes = [];
if ($stmt) {
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
$expedientes[] = $row;
@@ -40,17 +40,20 @@ function index() {
include __DIR__ . '/../../views/expediente/index.php';
}
function subir($id_solicitud) {
function subir($id_solicitud)
{
include __DIR__ . '/../../views/expediente/subir.php';
}
function subir_handler() {
function subir_handler()
{
if (!isset($_POST['id_solicitud']) || !isset($_FILES['archivos']) || !isset($_SESSION['usuario_id'])) {
die("❌ Solicitud inválida.");
}
$conn = getConnection();
$id_solicitud = (int) $_POST['id_solicitud'];
$id_solicitud = (int) $_POST['id_solicitud'];
$id_importador = $_SESSION['usuario_id'];
// Validar propiedad de la solicitud
@@ -60,7 +63,7 @@ function subir_handler() {
}
$archivos = $_FILES['archivos'];
$usuario = $_SESSION['usuario_nombre'] ?? 'sistema';
$usuario = $_SESSION['usuario_nombre'] ?? 'sistema';
$uploadDir = __DIR__ . '/../../uploads/expedientes/' . $id_solicitud;
if (!is_dir($uploadDir)) {
@@ -71,18 +74,19 @@ function subir_handler() {
if ($archivos['error'][$i] !== 0) continue;
$nombreOriginal = basename($archivos['name'][$i]);
$nombreSeguro = uniqid() . '_' . preg_replace('/[^A-Za-z0-9._-]/', '_', $nombreOriginal);
$rutaFinal = $uploadDir . '/' . $nombreSeguro;
$nombreSeguro = uniqid() . '_' . preg_replace('/[^A-Za-z0-9._-]/', '_', $nombreOriginal);
$rutaFinal = $uploadDir . '/' . $nombreSeguro;
move_uploaded_file($archivos['tmp_name'][$i], $rutaFinal);
$rutaDb = "uploads/expedientes/$id_solicitud/$nombreSeguro";
$tamanoKb = round(filesize($rutaFinal) / 1024, 2);
$rutaDb = "uploads/expedientes/$id_solicitud/$nombreSeguro";
$tamanoKb = round(filesize($rutaFinal) / 1024, 2);
$tipoArchivo = mime_content_type($rutaFinal);
$sql = "INSERT INTO expediente_archivos (id_solicitud, nombre_archivo, ruta_archivo, tipo_archivo, tamano_archivo, creado_por)
VALUES (?, ?, ?, ?, ?, ?)";
$sql = "INSERT INTO expediente_archivos
(id_solicitud, nombre_archivo, ruta_archivo, tipo_archivo, tamano_archivo, creado_por)
VALUES (?, ?, ?, ?, ?, ?)
";
$params = [$id_solicitud, $nombreOriginal, $rutaDb, $tipoArchivo, $tamanoKb, $usuario];
sqlsrv_query($conn, $sql, $params);
}
@@ -99,12 +103,13 @@ function ver($id_solicitud)
}
$conn = getConnection();
$id_importador = $_SESSION['usuario_id'];
$archivos = [];
$sql = "SELECT * FROM expediente_archivos WHERE id_solicitud = ? AND id_solicitud IN (SELECT id_solicitud FROM solicitud_importacion_factura WHERE id_importador = ?) ORDER BY creado_en DESC";
$id_importador = $_SESSION['usuario_id'];
$sql = "SELECT * FROM expediente_archivos WHERE id_solicitud = ? AND id_solicitud IN (SELECT id_solicitud FROM solicitud_importacion_factura WHERE id_importador = ?) ORDER BY creado_en DESC";
$stmt = sqlsrv_query($conn, $sql, [$id_solicitud, $id_importador]);
$archivos = [];
if ($stmt) {
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
if (is_string($row['creado_en'])) {
@@ -117,15 +122,17 @@ function ver($id_solicitud)
include __DIR__ . '/../../views/expediente/ver.php';
}
function ver_archivo($id_archivo) {
function ver_archivo($id_archivo)
{
if (!isset($_SESSION['usuario_id'])) {
header('Location: /IMPORTADORES/login');
exit;
}
$conn = getConnection();
$sql = "SELECT ea.*, sif.id_importador FROM expediente_archivos ea JOIN solicitud_importacion_factura sif ON sif.id_solicitud = ea.id_solicitud WHERE ea.id = ?";
$stmt = sqlsrv_query($conn, $sql, [$id_archivo]);
$sql = "SELECT ea.*, sif.id_importador FROM expediente_archivos ea JOIN solicitud_importacion_factura sif ON sif.id_solicitud = ea.id_solicitud WHERE ea.id = ?";
$stmt = sqlsrv_query($conn, $sql, [$id_archivo]);
$archivo = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
if (!$archivo || $archivo['id_importador'] != $_SESSION['usuario_id']) {
@@ -141,7 +148,7 @@ function ver_archivo($id_archivo) {
exit;
}
$tipo = $archivo['tipo_archivo'] ?? mime_content_type($ruta);
$tipo = $archivo['tipo_archivo'] ?? mime_content_type($ruta);
$nombre = $archivo['nombre_archivo'];
header('Content-Type: ' . $tipo);
@@ -160,16 +167,19 @@ function descargar_zip($id_solicitud)
}
$conn = getConnection();
$id_importador = $_SESSION['usuario_id'];
$sql = "
SELECT ea.nombre_archivo, ea.ruta_archivo
FROM expediente_archivos ea
JOIN solicitud_importacion_factura sif ON sif.id_solicitud = ea.id_solicitud
WHERE ea.id_solicitud = ? AND sif.id_importador = ?
";
$sql = "SELECT
ea.nombre_archivo, ea.ruta_archivo
FROM expediente_archivos ea
JOIN solicitud_importacion_factura sif
ON sif.id_solicitud = ea.id_solicitud
WHERE ea.id_solicitud = ?
AND sif.id_importador = ?
";
$stmt = sqlsrv_query($conn, $sql, [$id_solicitud, $id_importador]);
if (!$stmt) {
http_response_code(500);
echo "Error al consultar archivos.";
@@ -181,7 +191,7 @@ function descargar_zip($id_solicitud)
$ruta_absoluta = __DIR__ . '/../../' . $row['ruta_archivo'];
if (file_exists($ruta_absoluta)) {
$archivos[] = [
'ruta' => $ruta_absoluta,
'ruta' => $ruta_absoluta,
'nombre' => $row['nombre_archivo']
];
}
@@ -194,7 +204,7 @@ function descargar_zip($id_solicitud)
}
$zip_file = tempnam(sys_get_temp_dir(), 'expediente_') . '.zip';
$zip = new ZipArchive();
$zip = new ZipArchive();
if ($zip->open($zip_file, ZipArchive::CREATE) !== true) {
http_response_code(500);