From 1bccc1982f573de87ac306a4fa0017eece3d7829 Mon Sep 17 00:00:00 2001 From: ernestohc21 Date: Mon, 12 May 2025 16:29:36 -0600 Subject: [PATCH] ALTA PROVEEDORES LISTADO Y ALTA DE PROVEEDORES --- .env | 2 +- app/controllers/proveedores.php | 89 ++++++++++++++++++++++ views/proveedores/crear.php | 128 ++++++++++++++++++++++++++++++++ views/proveedores/lista.php | 112 +++++++++++++++------------- 4 files changed, 277 insertions(+), 54 deletions(-) create mode 100644 views/proveedores/crear.php diff --git a/.env b/.env index 73a15d1..4f17b70 100644 --- a/.env +++ b/.env @@ -1,4 +1,4 @@ -DB_HOST=DESKTOP-22T88B6 +DB_HOST=LOCALHOST DB_DATABASE=Importaciones_HC DB_USERNAME=sa DB_PASSWORD=Soluciones01 diff --git a/app/controllers/proveedores.php b/app/controllers/proveedores.php index b54b7da..585c612 100644 --- a/app/controllers/proveedores.php +++ b/app/controllers/proveedores.php @@ -180,3 +180,92 @@ function eliminar() header('Location: /IMPORTADORES/proveedores?deleted=' . ($status===200||$status===204 ? 'ok':'error')); exit; } + +function crear() +{ + // 1) Aseguramos que el usuario esté logueado + if (empty($_SESSION['usuario_id'])) { + header('Location: /IMPORTADORES/login'); + exit; + } + + // 2) Cargamos la vista + include __DIR__ . '/../../views/proveedores/crear.php'; +} + + +/** + * POST /IMPORTADORES/proveedores/guardar + * Procesa el alta de un nuevo proveedor contra la API WinSAAI. + */ +function guardar() +{ + // 1) Validar sesión + if (empty($_SESSION['usuario_id'])) { + header('Location: /IMPORTADORES/login'); + exit; + } + + // 2) Recoger datos del formulario + $payload = [ + 'Clave' => trim($_POST['Clave'] ?? ''), + 'Nombre' => trim($_POST['Nombre'] ?? ''), + 'RFC' => trim($_POST['RFC'] ?? ''), + 'Ciudad' => trim($_POST['Ciudad'] ?? ''), + 'Telefono' => trim($_POST['Telefono'] ?? ''), + 'Pais' => trim($_POST['Pais'] ?? ''), + 'Colonia' => trim($_POST['Colonia'] ?? ''), + 'Municipio' => trim($_POST['Municipio'] ?? ''), + 'CodigoPostal' => trim($_POST['CodigoPostal'] ?? ''), + 'EntidadFederativa' => trim($_POST['EntidadFederativa'] ?? ''), + ]; + + // 3) Validar campos obligatorios + if ($payload['Clave']==='' || $payload['Nombre']==='' || $payload['RFC']==='' || $payload['Ciudad']==='') { + $_SESSION['flash_error'] = 'Clave, Nombre, RFC y Ciudad son obligatorios.'; + header('Location: /IMPORTADORES/proveedores/crear'); + exit; + } + + // 4) Obtener JWT + $token = getApiToken(); + if (!$token) { + $_SESSION['flash_error'] = 'No fue posible autenticar contra la API.'; + header('Location: /IMPORTADORES/proveedores/crear'); + exit; + } + + // 5) Llamada a la API para crear el proveedor + $url = rtrim($_ENV['API_URL'] ?? '', '/') . '/api/proveedores'; + $ch = curl_init($url); + curl_setopt_array($ch, [ + CURLOPT_POST => true, + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer $token", + 'Content-Type: application/json' + ], + CURLOPT_POSTFIELDS => json_encode($payload), + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 10, + ]); + $resp = curl_exec($ch); + $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + // 6) Manejar respuesta + if ($status === 201) { + // Éxito + header('Location: /IMPORTADORES/proveedores?created=ok'); + exit; + } else { + // Error, opcionalmente parsear mensaje + $msg = ''; + if ($json = json_decode($resp, true)) { + $msg = $json['mensaje'] ?? $json['error'] ?? ''; + } + $_SESSION['flash_error'] = "Error al crear proveedor (HTTP $status) $msg"; + header('Location: /IMPORTADORES/proveedores/crear'); + exit; + } +} + diff --git a/views/proveedores/crear.php b/views/proveedores/crear.php new file mode 100644 index 0000000..4e51677 --- /dev/null +++ b/views/proveedores/crear.php @@ -0,0 +1,128 @@ + + + + + + ➕ Registro de Proveedor + + + + + + + + + + + + + + +
+

➕ Registro de Proveedor

+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ Cancelar + +
+
+
+
+ + + + + diff --git a/views/proveedores/lista.php b/views/proveedores/lista.php index ee7e221..f599575 100644 --- a/views/proveedores/lista.php +++ b/views/proveedores/lista.php @@ -1,14 +1,24 @@ + 📄 Listado de Proveedores - + + + + + + - +
-

📄 Listado de Proveedores

+ ➕ Nuevo Proveedor +
- +
+
@@ -82,47 +96,12 @@ - + - - +
Clave