Filtro solicitudes por Agencia Aduanal
This commit is contained in:
@@ -71,6 +71,13 @@ function lista() {
|
||||
$id_importador = $_SESSION['usuario_id'];
|
||||
$conn = getConnection();
|
||||
|
||||
// ✅ NUEVO: Obtener la agencia actual del usuario
|
||||
$stmt = sqlsrv_query($conn, "SELECT id_agencia_en_uso FROM dbo.usuarios_sistema WHERE id_usuario = ?", [$id_importador]);
|
||||
$id_agencia = null;
|
||||
if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
$id_agencia = $row['id_agencia_en_uso'];
|
||||
}
|
||||
|
||||
$sql = "
|
||||
SELECT
|
||||
f.*,
|
||||
@@ -86,10 +93,11 @@ function lista() {
|
||||
LEFT JOIN dbo.paises p
|
||||
ON f.pais_proveedor = p.id_pais
|
||||
WHERE f.id_importador = ?
|
||||
AND f.id_agencia = ?
|
||||
AND f.status >= 1
|
||||
ORDER BY f.created_at DESC
|
||||
";
|
||||
$stmt = sqlsrv_query($conn, $sql, [$id_importador]);
|
||||
$stmt = sqlsrv_query($conn, $sql, [$id_importador, $id_agencia]);
|
||||
if ($stmt === false) {
|
||||
die("Error en lista(): " . print_r(sqlsrv_errors(), true));
|
||||
}
|
||||
@@ -115,6 +123,13 @@ function crear()
|
||||
$id_importador = $_SESSION['usuario_id'];
|
||||
$conn = getConnection();
|
||||
|
||||
// ✅ NUEVO: Obtener la agencia actual del usuario
|
||||
$stmt = sqlsrv_query($conn, "SELECT id_agencia_en_uso FROM dbo.usuarios_sistema WHERE id_usuario = ?", [$id_importador]);
|
||||
$id_agencia = null;
|
||||
if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
$id_agencia = $row['id_agencia_en_uso'];
|
||||
}
|
||||
|
||||
// Carga de datos para selects
|
||||
$transportistas = [];
|
||||
$stmtT = sqlsrv_query($conn, "SELECT id_transportista, clave_identificador, nombre FROM dbo.transportistas WHERE id_usuario=? AND activo=1 ORDER BY nombre",[$id_importador]);
|
||||
@@ -151,7 +166,22 @@ function guardar()
|
||||
if (!($_SESSION['usuario_id'] ?? false)) {
|
||||
die("⚠️ No autorizado.");
|
||||
}
|
||||
$id_importador = $_SESSION['usuario_id'];
|
||||
|
||||
$id_importador = $_SESSION['usuario_id'];
|
||||
$conn = getConnection();
|
||||
|
||||
// ✅ Obtener id_agencia_en_uso del usuario
|
||||
$stmtAgencia = sqlsrv_query($conn, "SELECT id_agencia_en_uso FROM dbo.usuarios_sistema WHERE id_usuario = ?", [$id_importador]);
|
||||
$id_agencia = null;
|
||||
if ($stmtAgencia && $row = sqlsrv_fetch_array($stmtAgencia, SQLSRV_FETCH_ASSOC)) {
|
||||
$id_agencia = $row['id_agencia_en_uso'];
|
||||
}
|
||||
|
||||
if (!$id_agencia) {
|
||||
die("❌ No se pudo determinar la agencia en uso para guardar la solicitud.");
|
||||
}
|
||||
|
||||
// Obtener y validar campos del formulario
|
||||
$aduana_seccion = $_POST['anexo22_apendice'] ?? null;
|
||||
$num_factura = trim($_POST['numero_factura'] ?? '');
|
||||
$fecha = $_POST['fecha_factura'] ?? null;
|
||||
@@ -179,11 +209,10 @@ function guardar()
|
||||
$fotoUrl="/IMPORTADORES/public/uploads/".basename($dest);
|
||||
}
|
||||
}
|
||||
|
||||
$conn = getConnection();
|
||||
|
||||
$params = [
|
||||
$id_importador,
|
||||
$id_agencia,
|
||||
$aduana_seccion,
|
||||
$aduana_seccion,
|
||||
$num_factura,
|
||||
@@ -201,12 +230,12 @@ function guardar()
|
||||
];
|
||||
|
||||
$sql = "INSERT INTO dbo.solicitud_importacion_factura
|
||||
(id_importador, aduana, anexo22_apendice, numero_factura, fecha_factura,
|
||||
numero_pedimento, incoterm, pais_proveedor, tipo_moneda,
|
||||
valor_factura, vinculacion, transportista_id, chofer_id,
|
||||
foto_solicitud_url, status, proveedor_clave)
|
||||
OUTPUT INSERTED.id_solicitud
|
||||
VALUES(?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
(id_importador, id_agencia, aduana, anexo22_apendice, numero_factura, fecha_factura,
|
||||
numero_pedimento, incoterm, pais_proveedor, tipo_moneda,
|
||||
valor_factura, vinculacion, transportista_id, chofer_id,
|
||||
foto_solicitud_url, status, proveedor_clave)
|
||||
OUTPUT INSERTED.id_solicitud
|
||||
VALUES(?, ?, ?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
|
||||
$stmt = sqlsrv_query($conn, $sql, $params, ['Scrollable' => SQLSRV_CURSOR_KEYSET]);
|
||||
if ($stmt === false) {
|
||||
@@ -435,19 +464,29 @@ function enviarNotificacionNuevaSolicitud($email, $nombreUsuario, $datosSolicitu
|
||||
}
|
||||
|
||||
/** Formulario de edición de factura **/
|
||||
function editar() {
|
||||
function editar()
|
||||
{
|
||||
if (!($_SESSION['usuario_id'] ?? false)) {
|
||||
header('Location: /IMPORTADORES/login'); exit;
|
||||
header('Location: /IMPORTADORES/login');
|
||||
exit;
|
||||
}
|
||||
|
||||
$id_solicitud = $_GET['id']??null;
|
||||
if(!$id_solicitud || !is_numeric($id_solicitud)) {
|
||||
die("❌ ID inválido.");
|
||||
}
|
||||
|
||||
$id_importador = $_SESSION['usuario_id'];
|
||||
$conn = getConnection();
|
||||
|
||||
$stmt = sqlsrv_query($conn,"SELECT * FROM dbo.solicitud_importacion_factura WHERE id_solicitud=? AND id_importador=?",[(int)$id_solicitud,$id_importador]);
|
||||
// ✅ Obtener id_agencia_en_uso del usuario
|
||||
$stmtAgencia = sqlsrv_query($conn, "SELECT id_agencia_en_uso FROM dbo.usuarios_sistema WHERE id_usuario = ?", [$id_importador]);
|
||||
$id_agencia = null;
|
||||
if ($stmtAgencia && $row = sqlsrv_fetch_array($stmtAgencia, SQLSRV_FETCH_ASSOC)) {
|
||||
$id_agencia = $row['id_agencia_en_uso'];
|
||||
}
|
||||
|
||||
$stmt = sqlsrv_query($conn,"SELECT * FROM dbo.solicitud_importacion_factura WHERE id_solicitud=? AND id_importador=? AND id_agencia=?", [(int)$id_solicitud, $id_importador, $id_agencia]);
|
||||
if($stmt === false) {
|
||||
die(print_r(sqlsrv_errors(),true));
|
||||
}
|
||||
@@ -508,8 +547,8 @@ function editar() {
|
||||
}
|
||||
|
||||
/** Procesa la actualización de una factura y sus partidas **/
|
||||
function actualizar() {
|
||||
session_start();
|
||||
function actualizar()
|
||||
{
|
||||
if (!($_SESSION['usuario_id'] ?? false)) {
|
||||
die("⚠️ No autorizado.");
|
||||
}
|
||||
@@ -522,14 +561,21 @@ function actualizar() {
|
||||
// 1) Conexión
|
||||
$conn = getConnection();
|
||||
|
||||
// ✅ NUEVO: Obtener la agencia actual del usuario
|
||||
$stmt = sqlsrv_query($conn, "SELECT id_agencia_en_uso FROM dbo.usuarios_sistema WHERE id_usuario = ?", [$id_importador]);
|
||||
$id_agencia = null;
|
||||
if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
$id_agencia = $row['id_agencia_en_uso'];
|
||||
}
|
||||
|
||||
// 2) Obtener URL de foto actual desde BD para conservar si no suben nueva
|
||||
$fotoUrl = null;
|
||||
$stmtFoto = sqlsrv_query(
|
||||
$conn,
|
||||
"SELECT foto_solicitud_url
|
||||
FROM dbo.solicitud_importacion_factura
|
||||
WHERE id_solicitud = ? AND id_importador = ?",
|
||||
[ $id_solicitud, $_SESSION['usuario_id'] ]
|
||||
WHERE id_solicitud = ? AND id_importador = ? AND id_agencia = ?",
|
||||
[ $id_solicitud, $_SESSION['usuario_id'], $id_agencia ]
|
||||
);
|
||||
if ($stmtFoto !== false && ($row = sqlsrv_fetch_array($stmtFoto, SQLSRV_FETCH_ASSOC))) {
|
||||
$fotoUrl = $row['foto_solicitud_url'];
|
||||
@@ -549,17 +595,17 @@ function actualizar() {
|
||||
}
|
||||
|
||||
// 4) Extraer campos del formulario
|
||||
$aduana_seccion = $_POST['anexo22_apendice'] ?? null;
|
||||
$num_factura = trim($_POST['numero_factura'] ?? '');
|
||||
$fecha = $_POST['fecha_factura'] ?? null;
|
||||
$incoterm = $_POST['incoterm'] ?? null;
|
||||
$pais_proveedor = $_POST['pais_proveedor'] ?? null;
|
||||
$tipo_moneda = $_POST['tipo_moneda'] ?? null;
|
||||
$valor_factura = $_POST['valor_factura'] ?? null;
|
||||
$vinculacion = $_POST['vinculacion'] ?? 0;
|
||||
$aduana_seccion = $_POST['anexo22_apendice'] ?? null;
|
||||
$num_factura = trim($_POST['numero_factura'] ?? '');
|
||||
$fecha = $_POST['fecha_factura'] ?? null;
|
||||
$incoterm = $_POST['incoterm'] ?? null;
|
||||
$pais_proveedor = $_POST['pais_proveedor'] ?? null;
|
||||
$tipo_moneda = $_POST['tipo_moneda'] ?? null;
|
||||
$valor_factura = $_POST['valor_factura'] ?? null;
|
||||
$vinculacion = $_POST['vinculacion'] ?? 0;
|
||||
$transportista_id = (int)($_POST['transportista_id'] ?? 0);
|
||||
$chofer_id = (int)($_POST['chofer_id'] ?? 0);
|
||||
$status = isset($_POST['status']) ?? 1;
|
||||
$chofer_id = (int)($_POST['chofer_id'] ?? 0);
|
||||
$status = isset($_POST['status']) ?? 1;
|
||||
|
||||
// 5) Validar obligatorios
|
||||
if (empty($num_factura) || empty($fecha) || $transportista_id <= 0 || $chofer_id <= 0) {
|
||||
@@ -585,6 +631,7 @@ function actualizar() {
|
||||
updated_at = GETDATE()
|
||||
WHERE id_solicitud = ?
|
||||
AND id_importador = ?
|
||||
AND id_agencia = ?
|
||||
";
|
||||
$paramsU = [
|
||||
$aduana_seccion,
|
||||
@@ -601,7 +648,8 @@ function actualizar() {
|
||||
$fotoUrl,
|
||||
$status,
|
||||
$id_solicitud,
|
||||
$_SESSION['usuario_id']
|
||||
$_SESSION['usuario_id'],
|
||||
$id_agencia
|
||||
];
|
||||
$stmtU = sqlsrv_query($conn, $sqlU, $paramsU);
|
||||
if ($stmtU === false) {
|
||||
@@ -1553,6 +1601,9 @@ function pdf() {
|
||||
$options = new Options();
|
||||
$options->set('defaultFont', 'Arial');
|
||||
$options->set('isRemoteEnabled', true); // Permite cargar imágenes remotas si es necesario
|
||||
$options->set('isHtml5ParserEnabled', true); // Habilita el parser HTML5
|
||||
$options->set('isPhpEnabled', true); // Habilita PHP dentro del HTML si es necesario
|
||||
$options->set('chroot', $_SERVER['DOCUMENT_ROOT']); // Asegura que las rutas relativas funcionen correctamente
|
||||
|
||||
$dompdf = new Dompdf($options);
|
||||
$dompdf->loadHtml($html);
|
||||
@@ -1772,8 +1823,7 @@ function generarHTMLPDF($solicitud, $partidas, $configuracion, $proveedor_info =
|
||||
/** Encabezado **/
|
||||
.header { padding-bottom: 50px; }
|
||||
.logo-section { width: 20%; text-align: left; }
|
||||
.logo { max-width: 100px; height: auto; vertical-align: center; }
|
||||
.siglas { font-size: 15px; }
|
||||
.logo { max-width: 125px; height: auto; vertical-align: top; }
|
||||
.company-info { width: 60%; text-align: center; vertical-align: top; font-size: 12px; }
|
||||
.company-name { font-weight: bold; font-size: 25px; margin-bottom: 3px; }
|
||||
.invoice-info { width: 20%; text-align: right; vertical-align: top; font-size: 12px; }
|
||||
@@ -1811,7 +1861,6 @@ function generarHTMLPDF($solicitud, $partidas, $configuracion, $proveedor_info =
|
||||
<tr>
|
||||
<td class="logo-section">
|
||||
<img src="' . htmlspecialchars($configuracion['logo_url'] ?? 'assets/img/logo_siih.png') . '" alt="Logo" class="logo"><br>
|
||||
<div class="siglas"><strong>' . htmlspecialchars($configuracion['siglas'] ?? 'SIIH') . '</strong></div>
|
||||
</td>
|
||||
<td class="company-info">
|
||||
<div class="company-name">' . htmlspecialchars($solicitud['importador_nombre']) . '</div>
|
||||
|
||||
Reference in New Issue
Block a user