import { useDataSource, useQueryKey } from "@erp/core/client"; import { IListInvoicesResponseDTO } from "@erp/invoices/common/dto"; export type UseInvoicesListParams = Omit & { status?: string; enabled?: boolean; queryOptions?: Record; }; export type UseInvoicesListResponse = UseListQueryResult< IListResponseDTO, unknown >; export type UseInvoicesGetParamsType = { enabled?: boolean; queryOptions?: Record; }; export type UseInvoicesReportParamsType = { enabled?: boolean; queryOptions?: Record; }; export const useInvoices = () => { const actions = { /** * Hook para obtener la lista de facturas * @param params - ParĂ¡metros para la consulta de la lista de facturas * @returns - Respuesta de la consulta de la lista de facturas */ useList: (params: UseInvoicesListParams): UseInvoicesListResponse => { const dataSource = useDataSource(); const keys = useQueryKey(); const { pagination, status = "draft", quickSearchTerm = undefined, enabled = true, queryOptions, } = params; return useList({ queryKey: keys().data().resource("invoices").action("list").params(params).get(), queryFn: () => { return dataSource.getList({ resource: "invoices", quickSearchTerm, filters: status !== "all" ? [ { field: "status", operator: "eq", value: status, }, ] : [ { field: "status", operator: "ne", value: "archived", }, ], pagination, }); }, enabled, queryOptions, }); }, }; return actions; };