From 5a0e9a8259f2785709a49586e260765bd54ee421 Mon Sep 17 00:00:00 2001 From: Dulce Date: Fri, 16 Jan 2026 09:54:04 -0700 Subject: [PATCH] actualizar el formulario de vucem para permitir agregar organizacion --- src/pages/Vucem.jsx | 80 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/src/pages/Vucem.jsx b/src/pages/Vucem.jsx index 35b370b..5aa8170 100644 --- a/src/pages/Vucem.jsx +++ b/src/pages/Vucem.jsx @@ -202,10 +202,13 @@ function RelacionarImportadoresModal({ open, onClose, vucem }) { } import React, { useEffect, useState } from 'react'; import { fetchWithAuth, postWithAuth, putWithAuth, deleteWithAuth, putFormDataWithAuth, postFormDataWithAuth, patchWithAuth } from '../fetchWithAuth'; +import { useUser } from '../context/UserContext'; const API_URL = import.meta.env.VITE_EFC_API_URL; export default function Vucem() { // Estado para modal de relacionar importadores + + const isDebugMode = import.meta.env.VITE_DEBUG_MODE === 'true'; const [showRelacionarModal, setShowRelacionarModal] = useState(false); const [selectedVucem, setSelectedVucem] = useState(null); const [vucemList, setVucemList] = useState([]); @@ -216,10 +219,13 @@ export default function Vucem() { const [editVucem, setEditVucem] = useState(null); const [showDeleteModal, setShowDeleteModal] = useState(false); const [deleteVucem, setDeleteVucem] = useState(null); - + const [organizaciones, setOrganizaciones] = useState([]); + const { user: currentUser } = useUser(); + // Estado para formulario de creación/edición const initialForm = { usuario: '', + organizacion: '', password: '', patente: '', efirma: '', @@ -260,6 +266,22 @@ export default function Vucem() { })); }; + useEffect(() => { + const fetchOrganizaciones = async () => { + try { + const url = `${import.meta.env.VITE_EFC_API_URL}/organization/organizaciones/`; + const res = await fetchWithAuth(url); // ← USA fetchWithAuth + if (!res.ok) throw new Error('Error al obtener las organizaciones'); + const data = await res.json(); + setOrganizaciones(data); + } catch (err) { + console.error('Error fetching organizaciones:', err); + setOrganizaciones([]); // ← Asegurar que siempre sea un array + } + }; + fetchOrganizaciones(); + }, []); + // Funciones para alternar visibilidad en modal de edición const toggleEditPasswordVisibility = () => { setShowEditPassword(!showEditPassword); @@ -358,6 +380,7 @@ export default function Vucem() { const res = await fetchWithAuth(`${API_URL}/vucem/vucem/`); if (!res.ok) throw new Error('Error al cargar Ventanilla Unica'); const data = await res.json(); + // console.log('data > ', data); setVucemList(data); setError(null); } catch (err) { @@ -1272,12 +1295,13 @@ export default function Vucem() { formData.append('password', form.password); formData.append('patente', form.patente); formData.append('efirma', form.efirma); - if (form.key) formData.append('key', form.key); - if (form.cer) formData.append('cer', form.cer); formData.append('is_importador', form.is_importador); + formData.append('is_active', form.is_active); formData.append('acusecove', form.acusecove); formData.append('acuseedocument', form.acuseedocument); - formData.append('is_active', form.is_active); + formData.append('organizacion_id', form.organizacion); + if (form.key) formData.append('key', form.key); + if (form.cer) formData.append('cer', form.cer); try { const res = await postFormDataWithAuth(`${API_URL}/vucem/vucem/`, formData); if (!res.ok) throw new Error('Error al crear'); @@ -1553,6 +1577,54 @@ export default function Vucem() { + {/* Seccion de organizacion para super_users */} + {currentUser.is_superuser ? ( +
+
+
+ + + + +
+
+

Configuracion de Organizaciones

+

Asignar la Organizacion a la que pertenece.

+
+
+
+
+ +
+ +
+ + + +
+
+
+
+
+ ) : ( +
+ )} {/* Botones de acción */}