From 26f673f4e9d54b531124cf410f3257d0454e52c8 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 26 Mar 2026 10:38:33 -0300 Subject: [PATCH] return original detail query --- src/products/products.module.ts | 124 +++++++++----------------------- 1 file changed, 34 insertions(+), 90 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index dd2fef7..e119478 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -517,15 +517,13 @@ export default moduleFactory detalhe: (args) => { return { sql: /*sql*/ ` -select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ - pemp.nroempresa, + select pemp.nroempresa, tcomp.comprador, nvl(mff.fornecedor, 'N/A') fornecedor, consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, pro.seqproduto, initcap(pro.desccompleta) Descricao, nvl(mapi.urlecommerceimg,'') ImagemUrl, - case when trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) @@ -561,21 +559,18 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ else nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) end MargemAtacado, - nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, emb.embalagem DescricaoEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, - case when pemp.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito - pemp.qtdreservadavda,0),3) - else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) + else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, NVL(pemp.qtdpedrectransito,0) EstoqueTransito, pemp.qtdpendpedcompra EstoqueFuturo, - NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, - + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Inclu�do estqoutro para n�o ser necess�rio utilizar MADV_COMPOSICAORESERVASELINV ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) @@ -583,10 +578,8 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ nvl(pemp.estqminimodv,0) DDVMinimo, nvl(pemp.estqmaximodv, 0) DDVMaximo, - - -- FIX 2: subquery de mlo_prodembwm substituido por LEFT JOIN (wm_fr) case - WHEN wm_fr.seqproduto IS NOT NULL THEN 'FRACIONADO' + WHEN (select count(1) from mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' when pemp.formaabastecimento = 'I' then 'ARMAZENAGEM' when pemp.formaabastecimento = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' @@ -598,27 +591,21 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ when pes.precovalidpromoc > 0.00 then 'PROMOCAO' when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, - pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, pempcd.qtdpendpedcompra EstoqueFuturoCD, consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, - - -- FIX 2: subquery de statusvenda substituido por LEFT JOIN (pest_chk) - CASE WHEN pest_chk.seqproduto IS NOT NULL THEN 'A' ELSE 'I' END STATUSVENDA, - + CASE WHEN (select count(*) from mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, + --case when (pemp.statuscompra='A') then 1 else 0 end STATUSCOMPRA, pemp.statuscompra, - - -- FIX 2: subquery de qtdeAtacado substituido por LEFT JOIN (atac) - nvl(atac.qtdemb_min, 1) QtdeAtacado, - + nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa=me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, nvl(pro.seqprodutobase,0) IdBase, - case when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' ELSE + case when mff.indindenizavaria = 'S' then case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then 'SEM TROCA' @@ -631,7 +618,6 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ 'SEM TROCA' end END TIPOTROCA, - mfdv.padraoembcompra QUANTIDADECOMPRA, pemp.qtdreservadavda RESERVA, NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, @@ -639,13 +625,11 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, - case when pes3.precovalidpromoc > 0 then nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) else 0 end MargemMeuMambo, - nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, @@ -654,20 +638,20 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ from max_divisao md inner join max_empresa me -on me.nrodivisao = md.nrodivisao + on me.nrodivisao = md.nrodivisao and me.nroempresa not in (104,200,291,298,910,911,920,930,931,940,980) and me.dtainiciomovestoque <= trunc(sysdate) and me.status = 'A' inner join mad_segmento seg -on md.nrodivisao = me.nrodivisao + on md.nrodivisao = me.nrodivisao and me.nrosegmentoprinc = seg.nrosegmento inner join mrl_produtoempresa pemp -on pemp.nroempresa = me.nroempresa + on pemp.nroempresa = me.nroempresa left join mrl_produtoempresa pempcd -on pempcd.seqproduto = pemp.seqproduto + on pempcd.seqproduto = pemp.seqproduto and pempcd.nroempresa in (979) left join map_classeabastec mcab @@ -676,92 +660,43 @@ and mcab.nroempresa = pemp.nroempresa and mcab.classeabastvlr = pemp.classeabastvlr inner join map_produto pro -on pro.seqproduto = pemp.seqproduto + on pro.seqproduto = pemp.seqproduto inner join map_famdivisao mfdv -on mfdv.seqfamilia = pro.seqfamilia + on mfdv.seqfamilia = pro.seqfamilia and mfdv.nrodivisao = me.nrodivisao inner join max_comprador mco -on mco.seqcomprador = mfdv.seqcomprador + on mco.seqcomprador = mfdv.seqcomprador left join tb_comprador tcomp -on tcomp.COMPRADOR = mco.comprador + on tcomp.COMPRADOR = mco.comprador left join map_produtoimagem mapi -on mapi.seqproduto = pro.seqproduto + on mapi.seqproduto = pro.seqproduto and mapi.indpricipal = 'S' inner join mrl_prodempseg pes -on pes.seqproduto = pemp.seqproduto + on pes.seqproduto = pemp.seqproduto and pes.nroempresa = pemp.nroempresa and pes.nrosegmento = seg.nrosegmento and pes.qtdembalagem = 1 --- FIX 1: pes2 materializado em inline view (elimina subquery correlacionado no WHERE) -inner join ( - select a.nroempresa, - a.seqproduto, - a.nrosegmento, - a.qtdembalagem, - a.precovalidpromoc, - a.precovalidnormal - from mrl_prodempseg a - where a.qtdembalagem = ( - select nvl(max(b.qtdembalagem), 1) - from mrl_prodempseg b - where b.nroempresa = a.nroempresa - and b.seqproduto = a.seqproduto - and b.nrosegmento = a.nrosegmento - and b.statusvenda = 'A' - ) -) pes2 -on pes2.nroempresa = pes.nroempresa -and pes2.seqproduto = pes.seqproduto +inner join mrl_prodempseg pes2 + on pes2.nroempresa = pes.nroempresa +and pes2.seqproduto = pes.seqproduto and pes2.nrosegmento = pes.nrosegmento left join mrl_prodempseg pes3 -on pes3.seqproduto = pemp.seqproduto + on pes3.seqproduto = pemp.seqproduto and pes3.nroempresa = pemp.nroempresa and pes3.nrosegmento = 15 and pes3.qtdembalagem = 1 inner join map_famembalagem emb -on emb.seqfamilia = pro.seqfamilia + on emb.seqfamilia = pro.seqfamilia and emb.qtdembalagem = 1 --- FIX 2a: substituir subquery correlacionado de mlo_prodembwm por LEFT JOIN -left join ( - select distinct seqproduto - from mlo_prodembwm - where nroempresa = 979 - and codlinhasepar = 'FR' -) wm_fr -on wm_fr.seqproduto = pemp.seqproduto - --- FIX 2b: substituir subquery correlacionado de statusvenda por LEFT JOIN -left join ( - select distinct seqproduto, nroempresa, nrosegmento - from mrl_prodempseg - where statusvenda = 'A' -) pest_chk -on pest_chk.seqproduto = pemp.seqproduto -and pest_chk.nroempresa = pemp.nroempresa -and pest_chk.nrosegmento = seg.nrosegmento - --- FIX 2c: substituir subquery correlacionado de qtdeAtacado por LEFT JOIN -left join ( - select nroempresa, nrosegmento, seqproduto, - min(qtdembalagem) qtdemb_min - from mrl_prodempseg - where statusvenda = 'A' - and qtdembalagem > 1 - group by nroempresa, nrosegmento, seqproduto -) atac -on atac.nroempresa = me.nroempresa -and atac.nrosegmento = me.nrosegmentoprinc -and atac.seqproduto = pro.seqproduto - left join (select mffTemp.Seqfamilia, mfdvTemp.Nrodivisao, mffTemp.indindenizavaria, @@ -780,7 +715,7 @@ left join (select mffTemp.Seqfamilia, and mffTemp.Principal = 'S' ) mff -on mff.seqfamilia = pro.seqfamilia + on mff.seqfamilia = pro.seqfamilia and mff.nrodivisao = md.nrodivisao left join (select pvencto.nroempresa, @@ -794,13 +729,22 @@ left join (select pvencto.nroempresa, group by pvencto.nroempresa, pvencto.seqproduto ) vncto -ON vncto.nroempresa = pemp.nroempresa + ON vncto.nroempresa = pemp.nroempresa and vncto.seqproduto = pemp.seqproduto where 1=1 +--and pemp.SEQPRODUTO = 136011 +--and pemp.nroempresa = 202 and md.nrodivisao in (2,4) and (${args.codproduto} is null or pemp.seqproduto = ${args.codproduto}) and (me.nroempresa in (${args.ctx_user_companies})) + +and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) + from mrl_prodempseg pes3 + where pes3.nroempresa = pes.nroempresa + and pes3.seqproduto = pes.seqproduto + and pes3.nrosegmento = pes.nrosegmento + and pes3.statusvenda = 'A') `, }; },