Files
HoruxDespachosNuevo/apps/web/lib/hooks/use-constancias.ts
Horux Dev 44d7c796c9 fix: facturapi onboarding, CSF scraper, SAT sync initial, doc notifications
- Auto-update fiscal data on org creation via updateOrgLegalOnCreate
- Add Carta Manifiesto embedded iframe in CSD config page
- Fix CSF scraper: 60s timeout + manual RFC fallback when SAT doesn't auto-populate
- Fix contribuyenteId propagation in constancia frontend hooks/API
- Fix needsInitialSync to check per-contribuyente, not just per-tenant
- Fix documento notifications for global_admin using viewingTenantId
- Extract CSF manually for Carlos Husberto Torres Romero
- Trigger initial SAT sync for Carlos Husberto Torres Romero
- Update org legal data in Facturapi for Carlos Husberto (tax_system 612 + address)

Files changed:
- apps/api/src/controllers/documentos.controller.ts
- apps/api/src/jobs/sat-sync.job.ts
- apps/api/src/services/constancia.service.ts
- apps/api/src/services/contribuyente-facturapi.service.ts
- apps/api/src/services/sat/sat-csf-login.ts
- apps/web/app/(dashboard)/configuracion/csd/page.tsx
- apps/web/lib/api/constancias.ts
- apps/web/lib/hooks/use-constancias.ts
- docs/sessions/2026-05-17-facturapi-csf-sync-notifications.md
2026-05-17 04:28:32 +00:00

44 lines
1.6 KiB
TypeScript

import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { listConstancias, consultarConstancia, descargarConstanciaPdf } from '../api/constancias';
import { useTenantViewStore } from '../../stores/tenant-view-store';
import { useContribuyenteStore } from '@/stores/contribuyente-store';
export function useConstancias() {
const viewingTenantId = useTenantViewStore((s) => s.viewingTenantId);
const { selectedContribuyenteId } = useContribuyenteStore();
return useQuery({
queryKey: ['constancias', viewingTenantId, selectedContribuyenteId],
queryFn: () => listConstancias(selectedContribuyenteId || undefined),
});
}
export function useConsultarConstancia() {
const qc = useQueryClient();
const viewingTenantId = useTenantViewStore((s) => s.viewingTenantId);
const { selectedContribuyenteId } = useContribuyenteStore();
return useMutation({
mutationFn: () => consultarConstancia(selectedContribuyenteId || undefined),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['constancias', viewingTenantId, selectedContribuyenteId] });
qc.invalidateQueries({ queryKey: ['tenant-info'] });
qc.invalidateQueries({ queryKey: ['regimenes-activos'] });
},
});
}
export function useDescargarConstanciaPdf() {
return useMutation({
mutationFn: async (id: number) => {
const blob = await descargarConstanciaPdf(id);
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `constancia_${id}.pdf`;
document.body.appendChild(a);
a.click();
a.remove();
URL.revokeObjectURL(url);
},
});
}