import React, { useEffect, useState, useLayoutEffect, useRef } from 'react'; import SuccessModal from '../components/SuccessModal.jsx'; import ConfirmModal from '../components/ConfirmModal.jsx'; import { fetchDatastages, fetchDatastageDetail, createDatastage, updateDatastage, deleteDatastage } from '../api/datastage'; import { postFormDataWithAuth, patchFormDataWithAuth } from '../fetchWithAuth'; // PATCH para actualizar solo el campo procesado async function patchProcesadoTrue(item) { const url = `${import.meta.env.VITE_EFC_API_URL}/datastage/datastages/${item.id}/`; const body = { procesado: true }; return fetchWithAuth(url, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }); } import { fetchWithAuth } from '../fetchWithAuth'; // Modal para mostrar registros cargados function RegistrosCargadosModal({ open, onClose, registros }) { if (!open || !registros) return null; return (
| Registro | Cantidad |
|---|---|
| {registro} | {cantidad} |
Gestiona y visualiza la información de Datastage.
| ID | Archivo | Contribuyente | Procesado | Creado | Actualizado | Acciones |
|---|---|---|---|---|---|---|
| {item.id} | {item.archivo ? ( {(() => { try { const url = new URL(item.archivo); return decodeURIComponent(url.pathname.split('/').pop() || ''); } catch { return ''; } })()} ) : ( Sin archivo )} | {item.contribuyente} | {item.procesado ? 'Sí' : 'No'} | {item.created_at ? new Date(item.created_at).toLocaleString() : ''} | {item.updated_at ? new Date(item.updated_at).toLocaleString() : ''} |
Esta acción no se puede deshacer.
¿Seguro que deseas eliminar este datastage? Esta acción no se puede deshacer.