From bce305dd423cdb75ca2a57ef494db491f4ca1db4 Mon Sep 17 00:00:00 2001 From: JuruSysadmin Date: Thu, 15 Jan 2026 17:03:22 -0300 Subject: [PATCH] feat(orders): add delivery type filter and refactor schema --- src/features/orders/components/SearchBar.tsx | 16 ++++++++++++++++ src/features/orders/hooks/useOrderFilters.ts | 1 + .../orders/schemas/order-filters.schema.ts | 4 ++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/features/orders/components/SearchBar.tsx b/src/features/orders/components/SearchBar.tsx index ed5832b..cc69a02 100644 --- a/src/features/orders/components/SearchBar.tsx +++ b/src/features/orders/components/SearchBar.tsx @@ -55,8 +55,11 @@ interface LocalFilters { stockId: string[] | null; sellerId: string | null; sellerName: string | null; + deliveryType: string[] | null; } +const DELIVERY_TYPES = ['RI', 'EN', 'EF', 'RP']; + const getInitialLocalFilters = ( urlFilters: Partial ): LocalFilters => ({ @@ -74,6 +77,7 @@ const getInitialLocalFilters = ( stockId: urlFilters.stockId ?? null, sellerId: urlFilters.sellerId ?? null, sellerName: urlFilters.sellerName ?? null, + deliveryType: urlFilters.deliveryType ?? null, }); export const SearchBar = () => { @@ -135,6 +139,7 @@ export const SearchBar = () => { partnerName: null, productId: null, productName: null, + deliveryType: null, }; setLocalFilters(getInitialLocalFilters(resetState)); @@ -199,6 +204,7 @@ export const SearchBar = () => { localFilters.sellerId, localFilters.partnerId, localFilters.productId, + localFilters.deliveryType?.length, ].filter(Boolean).length; const toggleDrawer = (open: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => { @@ -454,6 +460,16 @@ export const SearchBar = () => { filterOptions={(x) => x} /> + {/* Tipo de Entrega */} + updateLocalFilter('deliveryType', newValue.length > 0 ? newValue : null)} + renderInput={(params) => } + /> + diff --git a/src/features/orders/hooks/useOrderFilters.ts b/src/features/orders/hooks/useOrderFilters.ts index 92bee7a..5977c0a 100644 --- a/src/features/orders/hooks/useOrderFilters.ts +++ b/src/features/orders/hooks/useOrderFilters.ts @@ -34,6 +34,7 @@ export const useOrderFilters = () => { createDateEnd: parseAsString, searchTriggered: parseAsBoolean.withDefault(false), + deliveryType: parseAsArrayOf(parseAsString, ','), }, { shallow: true, diff --git a/src/features/orders/schemas/order-filters.schema.ts b/src/features/orders/schemas/order-filters.schema.ts index f400fc5..f7f17f8 100644 --- a/src/features/orders/schemas/order-filters.schema.ts +++ b/src/features/orders/schemas/order-filters.schema.ts @@ -38,7 +38,7 @@ export const findOrdersSchema = z.object({ deliveryDate: z.string().optional(), shippimentId: z.coerce.number().optional(), - deliveryType: z.string().optional(), + deliveryType: z.union([z.string(), z.array(z.string())]).optional(), status: z.string().optional(), type: z.string().optional(), @@ -111,7 +111,7 @@ export const orderApiParamsSchema = findOrdersSchema const queryParams: any = { ...rest }; if (customerId) queryParams.customerId = customerId; - else if (customerName) queryParams.customerName = customerName; + if (customerName) queryParams.customerName = customerName; if (filters.partnerId) queryParams.partnerId = filters.partnerId; if (filters.productId) queryParams.productId = filters.productId; -- 2.40.1