diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 031fbfe..370ad27 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1813,38 +1813,39 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) consulta: (args) => { return { sql: /*sql*/ ` - SELECT - CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, - p.DESCCOMPLETA AS title - FROM - CONSINCO.MAP_PRODUTO p - WHERE - 1 = 1 - AND ( - ( - ${args.filtro} IS NOT NULL - AND ( - p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' - OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') - ) - ) - OR ( - ${args.ean} IS NOT NULL - AND EXISTS ( - SELECT 1 - FROM CONSINCO.MAP_PRODCODIGO A - WHERE A.SEQPRODUTO = p.SEQPRODUTO - AND ISNUMERIC(A.CODACESSO) = 'S' - AND A.CODACESSO = ${args.ean} - ) - ) - OR ( - ${args.filtro} IS NULL - AND ${args.ean} IS NULL - ) - ) - ORDER BY - 2 +SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, + p.DESCCOMPLETA AS title + FROM CONSINCO.MAP_PRODUTO p + WHERE 1 = 1 + AND ( + -- Bloco 1: Filtro por Código Interno ou Descrição + ( + ${args.filtro} IS NOT NULL + AND ( + p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' + OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') + ) + ) + OR + -- Bloco 2: Filtro por EAN (Código de Barras) + ( + ${args.ean} IS NOT NULL + AND EXISTS ( + SELECT 1 + FROM CONSINCO.MAP_PRODCODIGO A + WHERE A.SEQPRODUTO = p.SEQPRODUTO + AND REGEXP_LIKE(A.CODACESSO, '^[0-9]+$') + AND A.CODACESSO = ${args.ean} + ) + ) + OR + -- Bloco 3: Caso ambos os filtros estejam nulos (Traz tudo) + ( + ${args.filtro} IS NULL + AND ${args.ean} IS NULL + ) + ) + ORDER BY 2 `, }; },