Búsqueda y Filtros
Exportar contenido
Filtra proveedores por múltiples criterios para encontrarlos rápidamente.
Búsqueda por texto
Sección titulada «Búsqueda por texto»Busca en los siguientes campos simultáneamente:
- Nombre comercial
- CIF/NIF
- Razón social
Ejemplo: Escribe “merc” y encontrará “Mercadona”, “A46103834” o “info@mercadona.es”.
Filtros avanzados
Sección titulada «Filtros avanzados»| Filtro | Opciones | Descripcion |
|---|---|---|
| Estado | Todos / Activos / Inactivos | Muestra solo proveedores con ese estado |
| Categoría | Todas / 13 categorías | Filtra por categoría por defecto |
Combinación de filtros
Sección titulada «Combinación de filtros»Puedes combinar búsqueda + estado + categoría:
- Búsqueda: “mercadona”
- Estado: Activos
- Categoría: Suministros
Paginación
Sección titulada «Paginación»- 50 resultados por página (por defecto).
- Botones “Anterior” / “Siguiente” para navegar.
- Contador: “Mostrando 1 - 50 de 127”.
Detalles técnicos — Búsqueda y Filtros
Detalles técnicos
Componente: Vendors.tsx → filteredVendors useMemo
Lógica de filtrado:
vendors.filter(vendor => { // Búsqueda por texto (OR) const matchesSearch = vendor.name.includes(searchTerm) || vendor.tax_id?.includes(searchTerm) || vendor.email?.includes(searchTerm) || vendor.legal_name?.includes(searchTerm);
// Estado (AND) const matchesStatus = statusFilter === "all" || (statusFilter === "active" && vendor.is_active) || (statusFilter === "inactive" && !vendor.is_active);
// Categoría (AND) const matchesCategory = categoryFilter === "all" || vendor.default_category === categoryFilter;
return matchesSearch && matchesStatus && matchesCategory;});Query SQL equivalente:
SELECT * FROM vendorsWHERE business_id = '<business_id>' AND ( name ILIKE '%<search>%' OR tax_id ILIKE '%<search>%' OR email ILIKE '%<search>%' OR legal_name ILIKE '%<search>%' ) AND (is_active = <status> OR <status> IS NULL) AND (default_category = '<cat>' OR '<cat>' IS NULL)ORDER BY name ASCLIMIT 50 OFFSET <page * 50>;