Ajustando detalhes vdm
davinTI/app-dono-modulos/pipeline/head This commit looks good

This commit is contained in:
Sarah Magalhães
2026-06-03 17:01:06 -03:00
parent aa308dfb95
commit a36e6bbae2
+33 -73
View File
@@ -2662,26 +2662,42 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1)
detalhe: (args) => { detalhe: (args) => {
return { return {
sql: /*sql*/ ` sql: /*sql*/ `
WITH CTE_UltimaEntrada AS (
SELECT /*+ MATERIALIZE */
eit.codigo AS produto_codigo,
ent.loja AS loja_codigo,
ean2.quantidade AS quantidadecompra,
ent.dataentrada AS dataultimaentrada,
ROW_NUMBER() OVER (
PARTITION BY eit.codigo, ent.loja
ORDER BY ent.dataentrada DESC, ent.chave DESC
) AS rn
FROM verdemar.entradas ent
INNER JOIN verdemar.entradas_itens eit ON ent.chave = eit.chaveentrada
INNER JOIN verdemar.operacoes_entradas op ON ent.operacao = op.codigo
INNER JOIN verdemar.produtos_ean ean2 ON eit.embalagem = ean2.chave
WHERE ent.status = 'S'
AND op.atualizacusto = 'S'
AND op.tiponota NOT IN ('B', 'T', 'L')
AND ent.dataentrada <= TRUNC(SYSDATE)
AND eit.quantidade * ean2.quantidade > NVL(eit.quantidadedevolvida, 0)
AND eit.codigo = ${args.codproduto}
)
SELECT SELECT
l.codigo AS idempresa, l.codigo AS idempresa,
FNC_NOMEPESSOAS(l.codigo) AS nomeempresa, FNC_NOMEPESSOAS(l.codigo) AS nomeempresa,
cat.nome AS categoria, cat.nome AS categoria,
ult_ent.dataultimaentrada AS dataultimaentrada,
( (
SELECT MAX(e.dataentrada) SELECT MAX(pm.data)
FROM verdemar.entradas e FROM verdemar.produtos_movimento pm
INNER JOIN verdemar.entradas_itens ei ON ei.chaveentrada = e.chave WHERE pm.codigo = p.codigo
WHERE ei.codigo = p.codigo AND pm.loja = l.codigo
AND e.loja = l.codigo ) AS dataultimavenda,
AND e.status = 'S'
) AS dataultimaentrada,
pm.ultimavenda AS dataultimavenda,
NULL AS precoatacado, NULL AS precoatacado,
pp.precovenda AS precovarejo, pp.precovenda AS precovarejo,
COALESCE(prom.precopromocao, 0) AS precopromoc, COALESCE(prom.precopromocao, 0) AS precopromoc,
pp.precovenda AS preconormal, pp.precovenda AS preconormal,
( (
SELECT pf.precofidelidade SELECT pf.precofidelidade
FROM verdemar.produtos_fidelidade pf FROM verdemar.produtos_fidelidade pf
@@ -2691,10 +2707,8 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1)
AND pf.loja = l.codigo AND pf.loja = l.codigo
AND ROWNUM = 1 AND ROWNUM = 1
) AS precomeuMambo, ) AS precomeuMambo,
0 AS vlrprecovenctoprox, 0 AS vlrprecovenctoprox,
pp.custoliquido AS custoliquido, pp.custoliquido AS custoliquido,
pp.sugestao AS margem, pp.sugestao AS margem,
0 AS margematacado, 0 AS margematacado,
pp.lucro AS margemnormal, pp.lucro AS margemnormal,
@@ -2711,7 +2725,6 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1)
AND ROWNUM = 1 AND ROWNUM = 1
) AS margemmeuMambo, ) AS margemmeuMambo,
subg.sugestao AS margemlucrodivisao, subg.sugestao AS margemlucrodivisao,
est.quantidade AS estoqueDisponivel, est.quantidade AS estoqueDisponivel,
( (
SELECT est2.quantidade SELECT est2.quantidade
@@ -2728,7 +2741,6 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1)
0 AS reserva, 0 AS reserva,
pew.estoque AS estoquedisponivelcd, pew.estoque AS estoquedisponivelcd,
0 AS estoquefuturocd, 0 AS estoquefuturocd,
pvm.mediasempromocao AS mdv, pvm.mediasempromocao AS mdv,
pvm.mediacompromocao AS mdvpromoc, pvm.mediacompromocao AS mdvpromoc,
pvm.diasestoque AS ddv, pvm.diasestoque AS ddv,
@@ -2736,114 +2748,62 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1)
NULL AS ddvmaximo, NULL AS ddvmaximo,
NULL AS dtavalidade, NULL AS dtavalidade,
p.numerodiasvalidade AS validadedias, p.numerodiasvalidade AS validadedias,
NULL AS classeabastecimento, NULL AS classeabastecimento,
p.tipoabastecimento AS formaabastecimento, p.tipoabastecimento AS formaabastecimento,
ean.embalagem AS descricaoembalagem, ean.embalagem AS descricaoembalagem,
ean.quantidade AS quantidadeembalagem, ean.quantidade AS quantidadeembalagem,
ult_ent.quantidadecompra AS quantidadecompra,
(
SELECT ean2.quantidade
FROM verdemar.entradas ent
INNER JOIN verdemar.entradas_itens eit ON ent.chave = eit.chaveentrada
INNER JOIN verdemar.operacoes_entradas op ON ent.operacao = op.codigo
INNER JOIN verdemar.produtos_ean ean2 ON eit.embalagem = ean2.chave
WHERE eit.codigo = p.codigo
AND ent.loja = l.codigo
AND op.atualizacusto = 'S'
AND op.tiponota NOT IN ('B', 'T', 'L')
AND ent.status = 'S'
AND ent.dataentrada <= TRUNC(SYSDATE)
AND eit.quantidade * ean2.quantidade > NVL(eit.quantidadedevolvida, 0)
AND ent.dataentrada = (
SELECT MAX(ent2.dataentrada)
FROM verdemar.entradas ent2
INNER JOIN verdemar.entradas_itens eit2 ON ent2.chave = eit2.chaveentrada
INNER JOIN verdemar.operacoes_entradas op2 ON ent2.operacao = op2.codigo
INNER JOIN verdemar.produtos_ean ean3 ON eit2.embalagem = ean3.chave
WHERE eit2.codigo = p.codigo
AND ent2.loja = l.codigo
AND op2.atualizacusto = 'S'
AND op2.tiponota NOT IN ('B', 'T', 'L')
AND ent2.status = 'S'
AND ent2.dataentrada <= TRUNC(SYSDATE)
AND eit2.quantidade * ean3.quantidade > NVL(eit2.quantidadedevolvida, 0)
)
AND ROWNUM = 1
) AS quantidadecompra,
0 AS qtdeatacado, 0 AS qtdeatacado,
CASE CASE
WHEN COALESCE(prom.precopromocao, 0) > 0 THEN 'PROMOCAO' WHEN COALESCE(prom.precopromocao, 0) > 0 THEN 'PROMOCAO'
ELSE 'NORMAL' ELSE 'NORMAL'
END AS situacao, END AS situacao,
CASE WHEN p.inativo = 'N' THEN 'A' ELSE 'I' END AS statusvenda, CASE WHEN p.inativo = 'N' THEN 'A' ELSE 'I' END AS statusvenda,
NULL AS statuscompra, NULL AS statuscompra,
p.paicomposto AS idbase, p.paicomposto AS idbase,
NULL AS tipotroca, NULL AS tipotroca,
p.codigo AS seqproduto, p.codigo AS seqproduto,
p.nome AS Descricao p.nome AS Descricao
FROM verdemar.produtos p FROM verdemar.produtos p
INNER JOIN verdemar.produtos_loja pl INNER JOIN verdemar.produtos_loja pl
ON pl.codigo = p.codigo ON pl.codigo = p.codigo
INNER JOIN verdemar.loja l INNER JOIN verdemar.loja l
ON l.codigo = pl.loja ON l.codigo = pl.loja
INNER JOIN verdemar.produtos_precos pp INNER JOIN verdemar.produtos_precos pp
ON pp.codigo = p.codigo ON pp.codigo = p.codigo
AND pp.loja = l.codigo AND pp.loja = l.codigo
LEFT JOIN verdemar.produtos_estoque est LEFT JOIN verdemar.produtos_estoque est
ON est.codigo = p.codigo ON est.codigo = p.codigo
AND est.loja = l.codigo AND est.loja = l.codigo
LEFT JOIN verdemar.produtos_venda_media pvm LEFT JOIN verdemar.produtos_venda_media pvm
ON pvm.codigo = p.codigo ON pvm.codigo = p.codigo
AND pvm.loja = l.codigo AND pvm.loja = l.codigo
LEFT JOIN CTE_UltimaEntrada ult_ent
LEFT JOIN ( ON ult_ent.produto_codigo = p.codigo
SELECT codigo, AND ult_ent.loja_codigo = l.codigo
loja, AND ult_ent.rn = 1
MAX(data) AS ultimavenda
FROM verdemar.produtos_movimento
GROUP BY codigo, loja
) pm
ON pm.codigo = p.codigo
AND pm.loja = l.codigo
LEFT JOIN ( LEFT JOIN (
SELECT pr.codigo, SELECT pr.codigo,
pr.loja, pr.loja,
pr.precopromocao pr.precopromocao
FROM verdemar.promocao pr FROM verdemar.promocao pr
WHERE pr.datafinal >= TRUNC(SYSDATE) WHERE (pr.datafinal >= TRUNC(SYSDATE) OR pr.indeterminada = 'S')
OR pr.indeterminada = 'S'
) prom ) prom
ON prom.codigo = p.codigo ON prom.codigo = p.codigo
AND prom.loja = l.codigo AND prom.loja = l.codigo
LEFT JOIN verdemar.produtos_ean ean LEFT JOIN verdemar.produtos_ean ean
ON ean.codigo = p.codigo ON ean.codigo = p.codigo
AND ean.comprapadrao = 'S' AND ean.comprapadrao = 'S'
LEFT JOIN verdemar.categoria cat LEFT JOIN verdemar.categoria cat
ON cat.codigo = p.categoria ON cat.codigo = p.categoria
LEFT JOIN verdemar.subgrupo subg LEFT JOIN verdemar.subgrupo subg
ON subg.codigo = p.subgrupo ON subg.codigo = p.subgrupo
AND subg.setor = p.setor AND subg.setor = p.setor
AND subg.grupo = p.grupo AND subg.grupo = p.grupo
LEFT JOIN verdemar.produtos_estoque_wms pew LEFT JOIN verdemar.produtos_estoque_wms pew
ON pew.produto = p.codigo ON pew.produto = p.codigo
AND pew.cd = 892605 AND pew.cd = 892605
WHERE p.codigo = ${args.codproduto} WHERE p.codigo = ${args.codproduto}
AND l.participageradorlojas = 'S' AND l.participageradorlojas = 'S'
AND p.inativo = 'N' AND p.inativo = 'N'