From 587dfed2f2b43055bc7e721e8ebac5fa4e69cd11 Mon Sep 17 00:00:00 2001 From: Kevin_Ramirez Date: Thu, 22 Jan 2026 11:44:54 -0600 Subject: [PATCH] Se arreglo el catalogo de UM --- .../units_of_measure/routes.py | 6 ++ .../a76/general_catalogs/units-of-measure.ts | 2 +- .../goods/modales/unit-measure-dialog.svelte | 80 ++++++------------- 3 files changed, 32 insertions(+), 56 deletions(-) diff --git a/backend/api/v1/modules/a76/general_catalogs/units_of_measure/routes.py b/backend/api/v1/modules/a76/general_catalogs/units_of_measure/routes.py index 9a9b3db7..93fb39de 100644 --- a/backend/api/v1/modules/a76/general_catalogs/units_of_measure/routes.py +++ b/backend/api/v1/modules/a76/general_catalogs/units_of_measure/routes.py @@ -17,6 +17,7 @@ ace_router = TenantCRUDRoutes( id_name="id", enable_list=True, enable_filters=True, + max_page_size=10000, ).router router.include_router(ace_router) @@ -32,6 +33,7 @@ oma_router = TenantCRUDRoutes( id_name="id", enable_list=True, enable_filters=True, + max_page_size=10000, ).router router.include_router(oma_router) @@ -47,6 +49,7 @@ american_router = TenantCRUDRoutes( id_name="id", enable_list=True, enable_filters=True, + max_page_size=10000, ).router router.include_router(american_router) @@ -62,6 +65,7 @@ customs_router = TenantCRUDRoutes( id_name="id", enable_list=True, enable_filters=True, + max_page_size=10000, ).router router.include_router(customs_router) @@ -77,6 +81,7 @@ general_router = TenantCRUDRoutes( id_name="id", enable_list=True, enable_filters=True, + max_page_size=10000, ).router router.include_router(general_router) @@ -93,5 +98,6 @@ main_router = TenantCRUDRoutes( id_name="id", enable_list=True, enable_filters=True, + max_page_size=10000, ).router router.include_router(main_router) diff --git a/frontend/src/lib/api/dashboard/a76/general_catalogs/units-of-measure.ts b/frontend/src/lib/api/dashboard/a76/general_catalogs/units-of-measure.ts index 7b731651..566c900e 100644 --- a/frontend/src/lib/api/dashboard/a76/general_catalogs/units-of-measure.ts +++ b/frontend/src/lib/api/dashboard/a76/general_catalogs/units-of-measure.ts @@ -295,7 +295,7 @@ export interface UnitOfMeasureListResponse { export async function getUnitsOfMeasure( page: number = 1, - pageSize: number = 50, + pageSize: number = 1000, companyId: number, filters: Record = {} ): Promise> { diff --git a/frontend/src/lib/components/dashboard/goods/modales/unit-measure-dialog.svelte b/frontend/src/lib/components/dashboard/goods/modales/unit-measure-dialog.svelte index 2520f8b6..43f7e76b 100644 --- a/frontend/src/lib/components/dashboard/goods/modales/unit-measure-dialog.svelte +++ b/frontend/src/lib/components/dashboard/goods/modales/unit-measure-dialog.svelte @@ -16,15 +16,27 @@ } = $props(); let items = $state([]); + let allItems = $state([]); // Store full dataset let loading = $state(false); let searchTerm = $state(""); - let page = $state(1); - let totalPages = $state(1); - let searchTimeout: NodeJS.Timeout; + + // Derived state for filtering + $effect(() => { + if (!searchTerm) { + items = allItems; + } else { + const lowerTerm = searchTerm.toLowerCase(); + items = allItems.filter(item => + item.code.toLowerCase().includes(lowerTerm) || + (item.description && item.description.toLowerCase().includes(lowerTerm)) || + (item.description_en && item.description_en.toLowerCase().includes(lowerTerm)) + ); + } + }); // Cargar datos al abrir $effect(() => { - if (open && companyStore.activeCompany) { + if (open && companyStore.activeCompany && allItems.length === 0) { loadData(); } }); @@ -34,17 +46,12 @@ loading = true; try { - const filters = searchTerm ? { code: searchTerm } : {}; - // Nota: Si tu backend soporta búsqueda por descripción, úsalo aquí. - // Por ahora asumo búsqueda por 'code' o 'description' según tu filtro backend. - - const response = await getUnitsOfMeasure(page, 10, companyStore.activeCompany.id, { - q: searchTerm // Asumiendo que tu backend tiene un filtro genérico 'q' o usa 'code'/'description' - }); + // Fetch everything once using the high limit + const response = await getUnitsOfMeasure(1, 1000, companyStore.activeCompany.id, {}); if (response.data) { - items = response.data.items; - totalPages = response.data.pages; + allItems = response.data.items; + items = allItems; // Initialize view } } catch (error) { console.error("Error cargando unidades:", error); @@ -56,32 +63,13 @@ function handleSearch(e: Event) { const value = (e.target as HTMLInputElement).value; searchTerm = value; - page = 1; - - clearTimeout(searchTimeout); - searchTimeout = setTimeout(() => { - loadData(); - }, 500); + // No network call needed, $effect handles filtering } function handleSelect(item: UnitOfMeasure) { onSelect(item); open = false; } - - function nextPage() { - if (page < totalPages) { - page++; - loadData(); - } - } - - function prevPage() { - if (page > 1) { - page--; - loadData(); - } - } @@ -104,7 +92,7 @@ /> -
+
{#if loading}
@@ -146,27 +134,9 @@
- -
- Página {page} de {totalPages} -
- - -
+ +
+ Mostrando {items.length} registros