diff --git a/src/orders/dto/find-orders.dto.ts b/src/orders/dto/find-orders.dto.ts index 6bace76..997cb1b 100644 --- a/src/orders/dto/find-orders.dto.ts +++ b/src/orders/dto/find-orders.dto.ts @@ -53,6 +53,13 @@ export class FindOrdersDto { @ApiPropertyOptional() partnerId?: string; + @IsOptional() + @IsString() + @ApiPropertyOptional({ + description: 'Código do usuário 2 (pode ser múltiplos valores separados por vírgula)', + }) + codusur2?: string; + @IsOptional() @IsString() @ApiPropertyOptional() diff --git a/src/orders/repositories/orders.repository.ts b/src/orders/repositories/orders.repository.ts index 63a8a5c..bf557a7 100644 --- a/src/orders/repositories/orders.repository.ts +++ b/src/orders/repositories/orders.repository.ts @@ -234,6 +234,7 @@ WHERE ,PCPEDC.CODCLI as "customerId" ,PCPEDC.CODCLI||' - '||PCCLIENT.CLIENTE as "customerName" ,PCPEDC.CODUSUR as "sellerId" + ,PCPEDC.CODUSUR2 as "codusur2" ,PCPEDC.CODUSUR3 as "partnerId" ,PCPEDC.HORAFAT as "HORA FATURAMENTO" ,PCPEDC.MINUTOFAT as "MINUTO FATURAMENTO" @@ -410,6 +411,18 @@ WHERE if (query.partnerId) { conditions.push(`AND PCPEDC.CODUSUR3 = :partnerId`); } + if (query.codusur2) { + const codusur2List = query.codusur2 + .split(',') + .map((c) => c.trim()) + .filter((c) => c) + .map((c) => Number(c)) + .filter((c) => !isNaN(c)); + const codusur2Condition = codusur2List.length === 1 + ? `AND PCPEDC.CODUSUR2 = :codusur2` + : `AND PCPEDC.CODUSUR2 IN (${codusur2List.join(',')})`; + conditions.push(codusur2Condition); + } if (query.orderId) { conditions.push( `AND (PCPEDC.NUMPED = :orderId OR PCPEDC.NUMPEDENTFUT = :orderId)`, @@ -560,7 +573,7 @@ WHERE sql += '\n' + conditions.join('\n'); sql += - '\nGROUP BY PCPEDC.DATA, PCPEDC.CODFILIAL, PCPEDC.CODFILIALLOJA, PCPEDC.NUMPED, PCPEDC.CODCLI, PCPEDC.CODENDENTCLI, PCPEDC.CODPRACA, PCPEDC.CODUSUR, PCPEDC.CODUSUR3, PCPEDC.CODSUPERVISOR, PCPEDC.CONDVENDA, PCPEDC.VLATEND, PCPEDC.VLTOTAL, PCPEDC.DTENTREGA, PCPEDC.TIPOPRIORIDADEENTREGA, PCPEDC.NUMCAR, PCPEDC.DTLIBERA, PCPEDC.CODFUNCLIBERA, PCPEDC.NUMTRANSVENDA, PCPEDC.CODPLPAG, PCPEDC.CODCOB, PCPEDC.DTFAT, PCPEDC.HORAFAT, PCPEDC.MINUTOFAT, PCPEDC.NUMNOTA, PCPEDC.MOTIVOPOSICAO, PCPEDC.TOTPESO, PCPEDC.POSICAO, PCPEDC.DTFINALSEP, PCPEDC.NUMPEDENTFUT, PCPEDC.CODFORNECFRETE, PCPEDC.CODEMITENTE, PCCLIENT.CLIENTE, PCUSUARI.NOME, PCSUPERV.NOME, PCCARREG.DTSAIDA, PCCARREG.DATAMON, PCCARREG.DTFECHA, PCCARREG.CODFUNCFAT, PCNFSAID.CODEMITENTE, PCPLPAG.DESCRICAO, PCCOB.COBRANCA, PCNFSAID.DTCANHOTO, MOTORISTA.MATRICULA, MOTORISTA.NOME, PCVEICUL.DESCRICAO, PCVEICUL.PLACA, PCFORNEC.FORNECEDOR, PCPEDCTEMP.DTENTREGAORIG, ESTPARCEIRO.NOME'; + '\nGROUP BY PCPEDC.DATA, PCPEDC.CODFILIAL, PCPEDC.CODFILIALLOJA, PCPEDC.NUMPED, PCPEDC.CODCLI, PCPEDC.CODENDENTCLI, PCPEDC.CODPRACA, PCPEDC.CODUSUR, PCPEDC.CODUSUR2, PCPEDC.CODUSUR3, PCPEDC.CODSUPERVISOR, PCPEDC.CONDVENDA, PCPEDC.VLATEND, PCPEDC.VLTOTAL, PCPEDC.DTENTREGA, PCPEDC.TIPOPRIORIDADEENTREGA, PCPEDC.NUMCAR, PCPEDC.DTLIBERA, PCPEDC.CODFUNCLIBERA, PCPEDC.NUMTRANSVENDA, PCPEDC.CODPLPAG, PCPEDC.CODCOB, PCPEDC.DTFAT, PCPEDC.HORAFAT, PCPEDC.MINUTOFAT, PCPEDC.NUMNOTA, PCPEDC.MOTIVOPOSICAO, PCPEDC.TOTPESO, PCPEDC.POSICAO, PCPEDC.DTFINALSEP, PCPEDC.NUMPEDENTFUT, PCPEDC.CODFORNECFRETE, PCPEDC.CODEMITENTE, PCCLIENT.CLIENTE, PCUSUARI.NOME, PCSUPERV.NOME, PCCARREG.DTSAIDA, PCCARREG.DATAMON, PCCARREG.DTFECHA, PCCARREG.CODFUNCFAT, PCNFSAID.CODEMITENTE, PCPLPAG.DESCRICAO, PCCOB.COBRANCA, PCNFSAID.DTCANHOTO, MOTORISTA.MATRICULA, MOTORISTA.NOME, PCVEICUL.DESCRICAO, PCVEICUL.PLACA, PCFORNEC.FORNECEDOR, PCPEDCTEMP.DTENTREGAORIG, ESTPARCEIRO.NOME'; sql += '\nORDER BY PCPEDC.NUMPED DESC'; sql += '\nFETCH FIRST 5000 ROWS ONLY'; @@ -588,6 +601,17 @@ WHERE if (query.partnerId) { parameters.partnerId = query.partnerId; } + if (query.codusur2) { + const codusur2List = query.codusur2 + .split(',') + .map((c) => c.trim()) + .filter((c) => c) + .map((c) => Number(c)) + .filter((c) => !isNaN(c)); + if (codusur2List.length === 1) { + parameters.codusur2 = codusur2List[0]; + } + } if (query.orderId) { parameters.orderId = query.orderId; }