diff --git a/backend/api/v1/modules/a76/general_catalogs/prevalidators/routes.py b/backend/api/v1/modules/a76/general_catalogs/prevalidators/routes.py index 539a2d6e..605fdb09 100644 --- a/backend/api/v1/modules/a76/general_catalogs/prevalidators/routes.py +++ b/backend/api/v1/modules/a76/general_catalogs/prevalidators/routes.py @@ -29,6 +29,7 @@ prevalidator_crud = TenantCRUDRoutes( tags=["Prevalidators"], resource_name="Prevalidator", enable_list=True, + enable_filters=True, list_permissions=["cat_prevalidators.view"], get_permissions=["cat_prevalidators.view"], create_permissions=["cat_prevalidators.create"], diff --git a/backend/api/v1/modules/a76/general_catalogs/signatures/service.py b/backend/api/v1/modules/a76/general_catalogs/signatures/service.py index 1a2a5e26..80944e54 100644 --- a/backend/api/v1/modules/a76/general_catalogs/signatures/service.py +++ b/backend/api/v1/modules/a76/general_catalogs/signatures/service.py @@ -36,6 +36,9 @@ class SignatureService: if filters.get("code"): query = query.filter( models.Signature.code.ilike(f"%{filters['code']}%")) + if filters.get("signature"): + query = query.filter( + models.Signature.signature.ilike(f"%{filters['signature']}%")) total = query.count() signatures = query.offset(skip).limit(limit).all() diff --git a/frontend/src/lib/api/dashboard/a76/general_catalogs/prevalidators.ts b/frontend/src/lib/api/dashboard/a76/general_catalogs/prevalidators.ts index 7233839f..70bb0a4c 100644 --- a/frontend/src/lib/api/dashboard/a76/general_catalogs/prevalidators.ts +++ b/frontend/src/lib/api/dashboard/a76/general_catalogs/prevalidators.ts @@ -37,17 +37,17 @@ export async function getPrevalidators( filters: Record = {}, companyId?: number ): Promise> { - const params = new URLSearchParams({ + const paramObj: Record = { page: page.toString(), - page_size: pageSize.toString(), - ...filters + page_size: pageSize.toString() + }; + if (companyId) paramObj.company_id = companyId.toString(); + Object.entries(filters).forEach(([k, v]) => { + if (v !== undefined && v !== null && v !== '') paramObj[k] = String(v); }); - if (companyId) { - params.append('company_id', companyId.toString()); - } + const params = new URLSearchParams(paramObj); - const response = await api.get(`/v1/a76/prevalidators/?${params.toString()}`); - return response.data; + return api.get(`/v1/a76/prevalidators/?${params.toString()}`); } export async function getPrevalidator(id: number, companyId?: number): Promise { diff --git a/frontend/src/lib/api/dashboard/a76/general_catalogs/signatures.ts b/frontend/src/lib/api/dashboard/a76/general_catalogs/signatures.ts index 7c399fe5..9037f6da 100644 --- a/frontend/src/lib/api/dashboard/a76/general_catalogs/signatures.ts +++ b/frontend/src/lib/api/dashboard/a76/general_catalogs/signatures.ts @@ -36,19 +36,20 @@ export interface SignatureListResponse { export async function getSignatures( page: number = 1, pageSize: number = 50, - companyId: number, + companyId: number, filters: Record = {} ): Promise> { - const params = new URLSearchParams({ + const paramObj: Record = { page: page.toString(), page_size: pageSize.toString(), - company_id: companyId.toString(), - ...filters + company_id: companyId.toString() + }; + Object.entries(filters).forEach(([k, v]) => { + if (v !== undefined && v !== null && v !== '') paramObj[k] = String(v); }); + const params = new URLSearchParams(paramObj); - - const response = await api.get(`/v1/a76/signatures/?${params.toString()}`); - return response.data; + return api.get(`/v1/a76/signatures/?${params.toString()}`); } diff --git a/frontend/src/lib/components/dashboard/general_catalogs/prevalidators/create-edit-dialog.svelte b/frontend/src/lib/components/dashboard/general_catalogs/prevalidators/create-edit-dialog.svelte index f1e217f6..490cfd5d 100644 --- a/frontend/src/lib/components/dashboard/general_catalogs/prevalidators/create-edit-dialog.svelte +++ b/frontend/src/lib/components/dashboard/general_catalogs/prevalidators/create-edit-dialog.svelte @@ -89,7 +89,7 @@ - + e.preventDefault()}> {title} diff --git a/frontend/src/lib/components/dashboard/general_catalogs/signatures/create-edit-dialog.svelte b/frontend/src/lib/components/dashboard/general_catalogs/signatures/create-edit-dialog.svelte index faa95017..0be5b8af 100644 --- a/frontend/src/lib/components/dashboard/general_catalogs/signatures/create-edit-dialog.svelte +++ b/frontend/src/lib/components/dashboard/general_catalogs/signatures/create-edit-dialog.svelte @@ -96,7 +96,7 @@ - + e.preventDefault()}> {title} diff --git a/frontend/src/routes/dashboard/general_catalogs/prevalidators/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/prevalidators/+page.svelte index 71951916..b6f80bd7 100644 --- a/frontend/src/routes/dashboard/general_catalogs/prevalidators/+page.svelte +++ b/frontend/src/routes/dashboard/general_catalogs/prevalidators/+page.svelte @@ -7,7 +7,7 @@ import * as Card from '$lib/components/ui/card'; import { Button } from '$lib/components/ui/button'; import { Input } from '$lib/components/ui/input'; - import { Pencil, Plus, Trash2 } from 'lucide-svelte'; + import { Pencil, Plus, Trash2, RefreshCw } from 'lucide-svelte'; import InfiniteDataTable from '$lib/components/dashboard/common/infinite-data-table.svelte'; import { createColumns } from '$lib/components/dashboard/general_catalogs/prevalidators/columns'; import CreateEditDialog from '$lib/components/dashboard/general_catalogs/prevalidators/create-edit-dialog.svelte'; @@ -226,7 +226,9 @@ size="sm" class="h-9" onclick={reloadData} + disabled={loading} > + Actualizar {#if canCreate} @@ -262,7 +264,17 @@
- + (selectedIds = ids)} + onRowClick={handleRowClick} + onRowDoubleClick={handleRowDoubleClick} + />
diff --git a/frontend/src/routes/dashboard/general_catalogs/signatures/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/signatures/+page.svelte index 444c3322..c0bf5bca 100644 --- a/frontend/src/routes/dashboard/general_catalogs/signatures/+page.svelte +++ b/frontend/src/routes/dashboard/general_catalogs/signatures/+page.svelte @@ -83,7 +83,7 @@ error = null; try { const response = await signaturesApi.list(companyStore.activeCompany.id, { code: searchCode || undefined, -description: searchDesc || undefined, +signature: searchDesc || undefined, page: '1', page_size: pageSize.toString() }); @@ -101,8 +101,8 @@ loading = false; const url = new URL($page.url); if (searchCode) url.searchParams.set('code', searchCode); else url.searchParams.delete('code'); -if (searchDesc) url.searchParams.set('description', searchDesc); -else url.searchParams.delete('description'); +if (searchDesc) url.searchParams.set('signature', searchDesc); +else url.searchParams.delete('signature'); history.replaceState(history.state, '', url); }, 500); } @@ -113,7 +113,7 @@ loading = true; try { const response = await signaturesApi.list(companyStore.activeCompany.id, { code: searchCode || undefined, -description: searchDesc || undefined, +signature: searchDesc || undefined, page: (currentPage + 1).toString(), page_size: pageSize.toString() }); @@ -134,7 +134,7 @@ error = null; try { const response = await signaturesApi.list(companyStore.activeCompany.id, { code: searchCode || undefined, -description: searchDesc || undefined, +signature: searchDesc || undefined, page: '1', page_size: pageSize.toString() }); @@ -165,8 +165,8 @@ const columns = $derived(createColumns(handleSuccess, { canEdit, canDelete }));

Catálogo de Firmas del sistema

- {#if !isError && canCreate}