2025-10-18 19:57:52 +00:00
|
|
|
import { CriteriaDTO } from '@erp/core';
|
|
|
|
|
import { useDataSource } from "@erp/core/hooks";
|
|
|
|
|
import { DefaultError, QueryKey, useQuery } from "@tanstack/react-query";
|
|
|
|
|
import { CustomerInvoicesPage } from '../schemas';
|
|
|
|
|
|
|
|
|
|
export const CUSTOMER_INVOICES_QUERY_KEY = (criteria?: CriteriaDTO): QueryKey =>
|
|
|
|
|
["customer_invoices", criteria] as const;
|
|
|
|
|
|
|
|
|
|
type InvoicesQueryOptions = {
|
|
|
|
|
enabled?: boolean;
|
|
|
|
|
criteria?: CriteriaDTO
|
|
|
|
|
};
|
2025-06-24 18:38:57 +00:00
|
|
|
|
|
|
|
|
// Obtener todas las facturas
|
2025-10-18 19:57:52 +00:00
|
|
|
export const useInvoicesQuery = (options?: InvoicesQueryOptions) => {
|
2025-06-24 18:38:57 +00:00
|
|
|
const dataSource = useDataSource();
|
2025-10-18 19:57:52 +00:00
|
|
|
const enabled = options?.enabled ?? true;
|
|
|
|
|
const criteria = options?.criteria ?? {};
|
2025-06-24 18:38:57 +00:00
|
|
|
|
2025-10-18 19:57:52 +00:00
|
|
|
return useQuery<CustomerInvoicesPage, DefaultError>({
|
|
|
|
|
queryKey: CUSTOMER_INVOICES_QUERY_KEY(criteria),
|
|
|
|
|
queryFn: async ({ signal }) => {
|
|
|
|
|
return await dataSource.getList<CustomerInvoicesPage>("customer-invoices", {
|
2025-10-18 20:33:01 +00:00
|
|
|
...criteria,
|
2025-07-02 08:57:09 +00:00
|
|
|
signal,
|
|
|
|
|
});
|
2025-06-24 18:38:57 +00:00
|
|
|
},
|
2025-10-18 20:33:01 +00:00
|
|
|
enabled,
|
|
|
|
|
placeholderData: (previousData, previousQuery) => previousData, // Mantener datos previos mientras se carga nueva datos (antiguo `keepPreviousData`)
|
2025-06-24 18:38:57 +00:00
|
|
|
});
|
|
|
|
|
};
|