return original detail query
davinTI/app-dono-modulos/pipeline/head This commit looks good

This commit is contained in:
2026-03-26 10:38:33 -03:00
parent 96caf54474
commit 26f673f4e9
+17 -73
View File
@@ -517,15 +517,13 @@ export default moduleFactory
detalhe: (args) => { detalhe: (args) => {
return { return {
sql: /*sql*/ ` sql: /*sql*/ `
select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ select pemp.nroempresa,
pemp.nroempresa,
tcomp.comprador, tcomp.comprador,
nvl(mff.fornecedor, 'N/A') fornecedor, nvl(mff.fornecedor, 'N/A') fornecedor,
consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria,
pro.seqproduto, pro.seqproduto,
initcap(pro.desccompleta) Descricao, initcap(pro.desccompleta) Descricao,
nvl(mapi.urlecommerceimg,'') ImagemUrl, nvl(mapi.urlecommerceimg,'') ImagemUrl,
case when trunc(case case when trunc(case
when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0)
when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0)
@@ -561,11 +559,9 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */
else else
nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0)
end MargemAtacado, end MargemAtacado,
nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento,
emb.embalagem DescricaoEmbalagem, emb.embalagem DescricaoEmbalagem,
trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem,
case case
when pemp.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito - pemp.qtdreservadavda,0),3) 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))
@@ -574,8 +570,7 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */
NVL(pemp.estqtroca,0) EstoqueTroca, NVL(pemp.estqtroca,0) EstoqueTroca,
NVL(pemp.qtdpedrectransito,0) EstoqueTransito, NVL(pemp.qtdpedrectransito,0) EstoqueTransito,
pemp.qtdpendpedcompra EstoqueFuturo, 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 - Includo estqoutro para no ser necessrio utilizar MADV_COMPOSICAORESERVASELINV
ROUND(nvl(case ROUND(nvl(case
when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 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) 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.estqminimodv,0) DDVMinimo,
nvl(pemp.estqmaximodv, 0) DDVMaximo, nvl(pemp.estqmaximodv, 0) DDVMaximo,
-- FIX 2: subquery de mlo_prodembwm substituido por LEFT JOIN (wm_fr)
case 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 = 'I' then 'ARMAZENAGEM'
when pemp.formaabastecimento = 'C' then 'CROSS' when pemp.formaabastecimento = 'C' then 'CROSS'
when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' 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 'PROMOCAO'
when pes.precovalidpromoc = 0.00 then 'NORMAL' when pes.precovalidpromoc = 0.00 then 'NORMAL'
end Situacao, end Situacao,
pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD,
pempcd.qtdpendpedcompra EstoqueFuturoCD, pempcd.qtdpendpedcompra EstoqueFuturoCD,
consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA,
pemp.dtaultvenda DATAULTIMAVENDA, pemp.dtaultvenda DATAULTIMAVENDA,
consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido,
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,
-- FIX 2: subquery de statusvenda substituido por LEFT JOIN (pest_chk) --case when (pemp.statuscompra='A') then 1 else 0 end STATUSCOMPRA,
CASE WHEN pest_chk.seqproduto IS NOT NULL THEN 'A' ELSE 'I' END STATUSVENDA,
pemp.statuscompra, pemp.statuscompra,
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,
-- FIX 2: subquery de qtdeAtacado substituido por LEFT JOIN (atac)
nvl(atac.qtdemb_min, 1) QtdeAtacado,
nvl(pro.seqprodutobase,0) IdBase, nvl(pro.seqprodutobase,0) IdBase,
case case
when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA'
ELSE ELSE
case when mff.indindenizavaria = 'S' then case when mff.indindenizavaria = 'S' then
case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then
'SEM TROCA' 'SEM TROCA'
@@ -631,7 +618,6 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */
'SEM TROCA' 'SEM TROCA'
end end
END TIPOTROCA, END TIPOTROCA,
mfdv.padraoembcompra QUANTIDADECOMPRA, mfdv.padraoembcompra QUANTIDADECOMPRA,
pemp.qtdreservadavda RESERVA, pemp.qtdreservadavda RESERVA,
NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, NVL(pro.pzovalidadedia, 0) VALIDADEDIAS,
@@ -639,13 +625,11 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */
nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidpromoc,0) PrecoPromoc,
nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes.precovalidnormal,0) PrecoNormal,
nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo,
case when pes3.precovalidpromoc > 0 then case when pes3.precovalidpromoc > 0 then
nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0)
else else
0 0
end MargemMeuMambo, end MargemMeuMambo,
nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal,
trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc,
NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX,
@@ -698,24 +682,7 @@ and pes.nroempresa = pemp.nroempresa
and pes.nrosegmento = seg.nrosegmento and pes.nrosegmento = seg.nrosegmento
and pes.qtdembalagem = 1 and pes.qtdembalagem = 1
-- FIX 1: pes2 materializado em inline view (elimina subquery correlacionado no WHERE) inner join mrl_prodempseg pes2
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 on pes2.nroempresa = pes.nroempresa
and pes2.seqproduto = pes.seqproduto and pes2.seqproduto = pes.seqproduto
and pes2.nrosegmento = pes.nrosegmento and pes2.nrosegmento = pes.nrosegmento
@@ -730,38 +697,6 @@ inner join map_famembalagem emb
on emb.seqfamilia = pro.seqfamilia on emb.seqfamilia = pro.seqfamilia
and emb.qtdembalagem = 1 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, left join (select mffTemp.Seqfamilia,
mfdvTemp.Nrodivisao, mfdvTemp.Nrodivisao,
mffTemp.indindenizavaria, mffTemp.indindenizavaria,
@@ -798,9 +733,18 @@ ON vncto.nroempresa = pemp.nroempresa
and vncto.seqproduto = pemp.seqproduto and vncto.seqproduto = pemp.seqproduto
where 1=1 where 1=1
--and pemp.SEQPRODUTO = 136011
--and pemp.nroempresa = 202
and md.nrodivisao in (2,4) and md.nrodivisao in (2,4)
and (${args.codproduto} is null or pemp.seqproduto = ${args.codproduto}) and (${args.codproduto} is null or pemp.seqproduto = ${args.codproduto})
and (me.nroempresa in (${args.ctx_user_companies})) 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')
`, `,
}; };
}, },