diff --git a/backend/api/v1/modules/a76/general_catalogs/concepts/service.py b/backend/api/v1/modules/a76/general_catalogs/concepts/service.py index b0117771..4e50fc62 100644 --- a/backend/api/v1/modules/a76/general_catalogs/concepts/service.py +++ b/backend/api/v1/modules/a76/general_catalogs/concepts/service.py @@ -27,6 +27,14 @@ class ConceptService: Concept.company_id == company_id ) + if filters: + if filters.get("code"): + query = query.filter(Concept.code.ilike(f"%{filters['code']}%")) + if filters.get("description"): + query = query.filter( + Concept.description.ilike(f"%{filters['description']}%") + ) + total = query.count() items = query.offset(skip).limit(limit).all() diff --git a/backend/api/v1/modules/a76/general_catalogs/identifiers/service.py b/backend/api/v1/modules/a76/general_catalogs/identifiers/service.py index c4ff7578..187371f4 100644 --- a/backend/api/v1/modules/a76/general_catalogs/identifiers/service.py +++ b/backend/api/v1/modules/a76/general_catalogs/identifiers/service.py @@ -22,8 +22,12 @@ class IdentifierService: ) if filters: - # Add filters here if needed - pass + if filters.get("code"): + query = query.filter(Identifier.code.ilike(f"%{filters['code']}%")) + if filters.get("description"): + query = query.filter( + Identifier.description.ilike(f"%{filters['description']}%") + ) total = query.count() items = query.offset(skip).limit(limit).all() diff --git a/backend/api/v1/modules/a76/general_catalogs/legends/service.py b/backend/api/v1/modules/a76/general_catalogs/legends/service.py index 0351f16a..e7b6c930 100644 --- a/backend/api/v1/modules/a76/general_catalogs/legends/service.py +++ b/backend/api/v1/modules/a76/general_catalogs/legends/service.py @@ -27,8 +27,12 @@ class LegendService: ) if filters: - # Add filters here if needed - pass + if filters.get("code"): + query = query.filter(Legend.code.ilike(f"%{filters['code']}%")) + if filters.get("description"): + query = query.filter( + Legend.description.ilike(f"%{filters['description']}%") + ) total = query.count() items = query.offset(skip).limit(limit).all() diff --git a/frontend/src/routes/dashboard/general_catalogs/seal/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/seal/+page.svelte index 511f5efd..3770194c 100644 --- a/frontend/src/routes/dashboard/general_catalogs/seal/+page.svelte +++ b/frontend/src/routes/dashboard/general_catalogs/seal/+page.svelte @@ -40,8 +40,10 @@ // Filters let sealFilter = $state(''); + let timeout: ReturnType; let hasMore = $derived(allItems.length >= currentPage * pageSize); + const columns = createColumns(); onMount(() => { // Sync access_token from cookies to localStorage @@ -129,7 +131,10 @@ } function handleSearch() { - loadInitialData(); + clearTimeout(timeout); + timeout = setTimeout(() => { + loadInitialData(); + }, 500); } function handleSuccess() { @@ -162,7 +167,6 @@ return; } - loading = true; error = null; try { @@ -173,8 +177,6 @@ } catch (err) { error = 'Error al eliminar el sello'; console.error('Error deleting seal:', err); - } finally { - loading = false; } } @@ -218,7 +220,6 @@ placeholder="Filtrar por sello" bind:value={sealFilter} oninput={handleSearch} - disabled={loading} class="h-9 w-44 bg-card lg:w-64" /> @@ -228,7 +229,7 @@
([]); + const columns = createColumns(); + const getCompanyId = () => + companyStore.activeCompany?.id ?? + allItems[0]?.company_id ?? + data.conversions?.items?.[0]?.company_id ?? + null; const selectedItem = $derived( selectedIds.length === 1 ? allItems.find((item) => String(item.id) === String(selectedIds[0])) ?? null @@ -64,7 +70,8 @@ if (!browser) return; clearTimeout(timeout); timeout = setTimeout(async () => { - if (!companyStore.activeCompany) return; + const companyId = getCompanyId(); + if (!companyId) return; loading = true; error = null; try { @@ -75,7 +82,7 @@ const response = await getUnitConversions( 1, pageSize, - companyStore.activeCompany.id, + companyId, filters ); if (response?.items) { @@ -102,7 +109,9 @@ } async function loadMore() { - if (loading || !hasMore || !companyStore.activeCompany) return; + if (loading || !hasMore) return; + const companyId = getCompanyId(); + if (!companyId) return; loading = true; error = null; try { @@ -113,7 +122,7 @@ const response = await getUnitConversions( currentPage + 1, pageSize, - companyStore.activeCompany.id, + companyId, filters ); if (response?.items) { @@ -130,7 +139,8 @@ } async function reloadData() { - if (!companyStore.activeCompany) return; + const companyId = getCompanyId(); + if (!companyId) return; loading = true; error = null; try { @@ -141,7 +151,7 @@ const response = await getUnitConversions( 1, pageSize, - companyStore.activeCompany.id, + companyId, filters ); if (response?.items) { @@ -236,7 +246,7 @@