'use client'; import { useEffect, useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle, Button } from '@horux/shared-ui'; import { FielUploadModal } from '@/components/sat/FielUploadModal'; import { SyncStatus } from '@/components/sat/SyncStatus'; import { SyncHistory } from '@/components/sat/SyncHistory'; import { Header } from '@/components/layouts/header'; import { getFielStatus, deleteFiel } from '@/lib/api/fiel'; import { useTenantViewStore } from '@/stores/tenant-view-store'; import { useContribuyenteStore } from '@/stores/contribuyente-store'; import { useAuthStore } from '@/stores/auth-store'; import { Building2 } from 'lucide-react'; import type { FielStatus } from '@horux/shared'; export default function SatConfigPage() { const [fielStatus, setFielStatus] = useState(null); const [loading, setLoading] = useState(true); const [showUploadModal, setShowUploadModal] = useState(false); const [deleting, setDeleting] = useState(false); const { viewingTenantId } = useTenantViewStore(); const { selectedContribuyenteId, selectedContribuyenteRfc, selectedContribuyenteNombre } = useContribuyenteStore(); // Per-contribuyente FIEL when a contribuyente is selected; otherwise tenant-level legacy const contribId = selectedContribuyenteId || null; const fetchFielStatus = async () => { setLoading(true); try { const status = await getFielStatus(contribId); setFielStatus(status); } catch (err) { console.error('Error fetching FIEL status:', err); setFielStatus({ configured: false }); } finally { setLoading(false); } }; useEffect(() => { fetchFielStatus(); }, [viewingTenantId, selectedContribuyenteId]); const handleUploadSuccess = (status: FielStatus) => { setFielStatus(status); setShowUploadModal(false); }; const handleDelete = async () => { if (!confirm('Estas seguro de eliminar la FIEL? Se detendran las sincronizaciones automaticas.')) { return; } setDeleting(true); try { await deleteFiel(contribId); setFielStatus({ configured: false }); } catch (err) { console.error('Error deleting FIEL:', err); } finally { setDeleting(false); } }; if (loading) { return ( <>

Cargando...

); } return ( <>
{/* Show which contribuyente or prompt to select */} {!selectedContribuyenteId && (

Selecciona un contribuyente en el header para ver y configurar su FIEL.

)} {selectedContribuyenteId && ( FIEL de: {selectedContribuyenteNombre} {selectedContribuyenteRfc} )} {/* Hide FIEL UI when no contribuyente is selected */} {!selectedContribuyenteId ? null : ( <> {/* Estado de la FIEL */} FIEL (e.firma) Tu firma electronica para autenticarte con el SAT {fielStatus?.configured ? (

RFC

{fielStatus.rfc}

No. Serie

{fielStatus.serialNumber}

Vigente hasta

{fielStatus.validUntil ? new Date(fielStatus.validUntil).toLocaleDateString('es-MX') : '-'}

Estado

{fielStatus.isExpired ? 'Vencida' : `Valida (${fielStatus.daysUntilExpiration} dias)`}

) : (

No tienes una FIEL configurada. Sube tu certificado y llave privada para habilitar la sincronizacion automatica de CFDIs con el SAT.

)}
{/* Estado de Sincronizacion */} {/* Historial */} {/* Modal de carga */} {showUploadModal && ( setShowUploadModal(false)} contribuyenteId={contribId} /> )} )}
); }