This commit is contained in:
2025-05-12 16:31:07 -06:00
4 changed files with 275 additions and 53 deletions

View File

@@ -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;
}
}