Uecko_ERP/modules/customer-invoices/src/web/hooks/use-customer-invoices-query.tsx

41 lines
1.3 KiB
TypeScript
Raw Normal View History

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';
2025-10-18 22:31:30 +00:00
export const CUSTOMER_INVOICES_QUERY_KEY = (criteria: CriteriaDTO): QueryKey => [
"customer_invoices", {
pageNumber: criteria.pageNumber ?? 0,
pageSize: criteria.pageSize ?? 10,
q: criteria.q ?? "",
filters: criteria.filters ?? [],
orderBy: criteria.orderBy ?? "",
order: criteria.order ?? "",
},
];
2025-10-18 19:57:52 +00:00
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-07-02 08:57:09 +00:00
signal,
2025-10-18 22:31:30 +00:00
...criteria,
2025-07-02 08:57:09 +00:00
});
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
});
};