Update: nueva version Horux Despachos
This commit is contained in:
67
apps/web/lib/hooks/use-declaraciones.ts
Normal file
67
apps/web/lib/hooks/use-declaraciones.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
import {
|
||||
listDeclaraciones,
|
||||
createDeclaracion,
|
||||
uploadComprobantePago,
|
||||
deleteDeclaracion,
|
||||
downloadDeclaracionPdf,
|
||||
downloadBlob,
|
||||
type CreateDeclaracionData,
|
||||
} from '../api/declaraciones';
|
||||
import { useTenantViewStore } from '../../stores/tenant-view-store';
|
||||
|
||||
export function useDeclaraciones(fechaDesde?: string, fechaHasta?: string, contribuyenteId?: string | null) {
|
||||
const viewingTenantId = useTenantViewStore((s) => s.viewingTenantId);
|
||||
return useQuery({
|
||||
queryKey: ['declaraciones', fechaDesde, fechaHasta, contribuyenteId ?? 'all', viewingTenantId],
|
||||
queryFn: () => listDeclaraciones(fechaDesde, fechaHasta, contribuyenteId),
|
||||
});
|
||||
}
|
||||
|
||||
export function useCreateDeclaracion() {
|
||||
const qc = useQueryClient();
|
||||
const viewingTenantId = useTenantViewStore((s) => s.viewingTenantId);
|
||||
return useMutation({
|
||||
mutationFn: (data: CreateDeclaracionData) => createDeclaracion(data),
|
||||
onSuccess: () => {
|
||||
qc.invalidateQueries({ queryKey: ['declaraciones'] });
|
||||
qc.invalidateQueries({ queryKey: ['alertas'] });
|
||||
qc.invalidateQueries({ queryKey: ['alertas-manuales'] });
|
||||
qc.invalidateQueries({ queryKey: ['alertas-automaticas'] });
|
||||
qc.invalidateQueries({ queryKey: ['eventos'] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useUploadComprobantePago() {
|
||||
const qc = useQueryClient();
|
||||
const viewingTenantId = useTenantViewStore((s) => s.viewingTenantId);
|
||||
return useMutation({
|
||||
mutationFn: ({ id, pdfBase64, pdfFilename }: { id: number; pdfBase64: string; pdfFilename: string }) =>
|
||||
uploadComprobantePago(id, pdfBase64, pdfFilename),
|
||||
onSuccess: () => {
|
||||
qc.invalidateQueries({ queryKey: ['declaraciones'] });
|
||||
qc.invalidateQueries({ queryKey: ['alertas'] });
|
||||
qc.invalidateQueries({ queryKey: ['alertas-manuales'] });
|
||||
qc.invalidateQueries({ queryKey: ['alertas-automaticas'] });
|
||||
qc.invalidateQueries({ queryKey: ['eventos'] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteDeclaracion() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (id: number) => deleteDeclaracion(id),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ['declaraciones'] }),
|
||||
});
|
||||
}
|
||||
|
||||
export function useDownloadDeclaracionPdf() {
|
||||
return useMutation({
|
||||
mutationFn: async ({ id, variant, filename }: { id: number; variant: 'declaracion' | 'liga' | 'pago'; filename: string }) => {
|
||||
const blob = await downloadDeclaracionPdf(id, variant);
|
||||
downloadBlob(blob, filename);
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user