import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import * as facturacionApi from '../api/facturacion'; import * as catalogosApi from '../api/catalogos'; import { useTenantViewStore } from '@/stores/tenant-view-store'; function useTenantKey() { const { viewingTenantId } = useTenantViewStore(); return viewingTenantId || 'own'; } // Facturación export function useOrgStatus() { const tk = useTenantKey(); return useQuery({ queryKey: ['facturapi-org', tk], queryFn: facturacionApi.getOrgStatus }); } export function useTimbres() { const tk = useTenantKey(); return useQuery({ queryKey: ['facturapi-timbres', tk], queryFn: facturacionApi.getTimbres }); } export function useEmitirFactura() { const qc = useQueryClient(); return useMutation({ mutationFn: facturacionApi.emitirFactura, onSuccess: () => { qc.invalidateQueries({ queryKey: ['facturapi-timbres'] }); qc.invalidateQueries({ queryKey: ['cfdi'] }); qc.invalidateQueries({ queryKey: ['kpis'] }); }, }); } // Catálogos (se cachean globalmente, no dependen del tenant) export function useFormasPago() { return useQuery({ queryKey: ['cat-forma-pago'], queryFn: catalogosApi.getFormasPago, staleTime: Infinity }); } export function useMetodosPago() { return useQuery({ queryKey: ['cat-metodo-pago'], queryFn: catalogosApi.getMetodosPago, staleTime: Infinity }); } export function useUsosCfdi() { return useQuery({ queryKey: ['cat-uso-cfdi'], queryFn: catalogosApi.getUsosCfdi, staleTime: Infinity }); } export function useMonedas() { return useQuery({ queryKey: ['cat-moneda'], queryFn: catalogosApi.getMonedas, staleTime: Infinity }); } export function useClavesUnidad() { return useQuery({ queryKey: ['cat-clave-unidad'], queryFn: catalogosApi.getClavesUnidad, staleTime: Infinity }); }