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
+143 -183
View File
@@ -2662,191 +2662,151 @@ 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) (
FROM verdemar.entradas e SELECT MAX(pm.data)
INNER JOIN verdemar.entradas_itens ei ON ei.chaveentrada = e.chave FROM verdemar.produtos_movimento pm
WHERE ei.codigo = p.codigo WHERE pm.codigo = p.codigo
AND e.loja = l.codigo AND pm.loja = l.codigo
AND e.status = 'S' ) AS dataultimavenda,
) AS dataultimaentrada, NULL AS precoatacado,
pp.precovenda AS precovarejo,
COALESCE(prom.precopromocao, 0) AS precopromoc,
pp.precovenda AS preconormal,
(
SELECT pf.precofidelidade
FROM verdemar.produtos_fidelidade pf
WHERE pf.codigo = p.codigo
AND TRUNC(SYSDATE) BETWEEN pf.datainicial AND pf.datafinal
AND (pf.codigo_tipo = 0 OR pf.codigo_tipo = 2)
AND pf.loja = l.codigo
AND ROWNUM = 1
) AS precomeuMambo,
0 AS vlrprecovenctoprox,
pp.custoliquido AS custoliquido,
pp.sugestao AS margem,
0 AS margematacado,
pp.lucro AS margemnormal,
(
SELECT api.margemprecopromocao_clubevm
FROM verdemar.produtos_fidelidade pf
INNER JOIN verdemar.autorizacao_promocao_itens api
ON api.codigo = pf.codigo
AND api.chave = pf.chaveorigem
WHERE pf.codigo = p.codigo
AND api.datafinal >= SYSDATE
AND api.datainicial <= SYSDATE
AND pf.loja = l.codigo
AND ROWNUM = 1
) AS margemmeuMambo,
subg.sugestao AS margemlucrodivisao,
est.quantidade AS estoqueDisponivel,
(
SELECT est2.quantidade
FROM verdemar.loja l2
INNER JOIN verdemar.produtos_estoque est2 ON est2.loja = l2.codigo
WHERE l2.lojanota = l.codigo
AND l2.statusloja = 3
AND est2.codigo = p.codigo
AND ROWNUM = 1
) AS estoquetroca,
FNC_QTD_EMTRANSITO(p.codigo, l.codigo) AS estoquetransito,
0 AS estoquefuturo,
0 AS estoquereservado,
0 AS reserva,
pew.estoque AS estoquedisponivelcd,
0 AS estoquefuturocd,
pvm.mediasempromocao AS mdv,
pvm.mediacompromocao AS mdvpromoc,
pvm.diasestoque AS ddv,
NULL AS ddvminimo,
NULL AS ddvmaximo,
NULL AS dtavalidade,
p.numerodiasvalidade AS validadedias,
NULL AS classeabastecimento,
p.tipoabastecimento AS formaabastecimento,
ean.embalagem AS descricaoembalagem,
ean.quantidade AS quantidadeembalagem,
ult_ent.quantidadecompra AS quantidadecompra,
0 AS qtdeatacado,
CASE
WHEN COALESCE(prom.precopromocao, 0) > 0 THEN 'PROMOCAO'
ELSE 'NORMAL'
END AS situacao,
CASE WHEN p.inativo = 'N' THEN 'A' ELSE 'I' END AS statusvenda,
NULL AS statuscompra,
p.paicomposto AS idbase,
NULL AS tipotroca,
p.codigo AS seqproduto,
p.nome AS Descricao
pm.ultimavenda AS dataultimavenda, FROM verdemar.produtos p
INNER JOIN verdemar.produtos_loja pl
NULL AS precoatacado, ON pl.codigo = p.codigo
pp.precovenda AS precovarejo, INNER JOIN verdemar.loja l
COALESCE(prom.precopromocao, 0) AS precopromoc, ON l.codigo = pl.loja
pp.precovenda AS preconormal, INNER JOIN verdemar.produtos_precos pp
ON pp.codigo = p.codigo
( AND pp.loja = l.codigo
SELECT pf.precofidelidade LEFT JOIN verdemar.produtos_estoque est
FROM verdemar.produtos_fidelidade pf ON est.codigo = p.codigo
WHERE pf.codigo = p.codigo AND est.loja = l.codigo
AND TRUNC(SYSDATE) BETWEEN pf.datainicial AND pf.datafinal LEFT JOIN verdemar.produtos_venda_media pvm
AND (pf.codigo_tipo = 0 OR pf.codigo_tipo = 2) ON pvm.codigo = p.codigo
AND pf.loja = l.codigo AND pvm.loja = l.codigo
AND ROWNUM = 1 LEFT JOIN CTE_UltimaEntrada ult_ent
) AS precomeuMambo, ON ult_ent.produto_codigo = p.codigo
AND ult_ent.loja_codigo = l.codigo
0 AS vlrprecovenctoprox, AND ult_ent.rn = 1
pp.custoliquido AS custoliquido, LEFT JOIN (
SELECT pr.codigo,
pp.sugestao AS margem, pr.loja,
0 AS margematacado, pr.precopromocao
pp.lucro AS margemnormal, FROM verdemar.promocao pr
( WHERE (pr.datafinal >= TRUNC(SYSDATE) OR pr.indeterminada = 'S')
SELECT api.margemprecopromocao_clubevm ) prom
FROM verdemar.produtos_fidelidade pf ON prom.codigo = p.codigo
INNER JOIN verdemar.autorizacao_promocao_itens api AND prom.loja = l.codigo
ON api.codigo = pf.codigo LEFT JOIN verdemar.produtos_ean ean
AND api.chave = pf.chaveorigem ON ean.codigo = p.codigo
WHERE pf.codigo = p.codigo AND ean.comprapadrao = 'S'
AND api.datafinal >= SYSDATE LEFT JOIN verdemar.categoria cat
AND api.datainicial <= SYSDATE ON cat.codigo = p.categoria
AND pf.loja = l.codigo LEFT JOIN verdemar.subgrupo subg
AND ROWNUM = 1 ON subg.codigo = p.subgrupo
) AS margemmeuMambo, AND subg.setor = p.setor
subg.sugestao AS margemlucrodivisao, AND subg.grupo = p.grupo
LEFT JOIN verdemar.produtos_estoque_wms pew
est.quantidade AS estoqueDisponivel, ON pew.produto = p.codigo
( AND pew.cd = 892605
SELECT est2.quantidade WHERE p.codigo = ${args.codproduto}
FROM verdemar.loja l2 AND l.participageradorlojas = 'S'
INNER JOIN verdemar.produtos_estoque est2 ON est2.loja = l2.codigo AND p.inativo = 'N'
WHERE l2.lojanota = l.codigo
AND l2.statusloja = 3
AND est2.codigo = p.codigo
AND ROWNUM = 1
) AS estoquetroca,
FNC_QTD_EMTRANSITO(p.codigo, l.codigo) AS estoquetransito,
0 AS estoquefuturo,
0 AS estoquereservado,
0 AS reserva,
pew.estoque AS estoquedisponivelcd,
0 AS estoquefuturocd,
pvm.mediasempromocao AS mdv,
pvm.mediacompromocao AS mdvpromoc,
pvm.diasestoque AS ddv,
NULL AS ddvminimo,
NULL AS ddvmaximo,
NULL AS dtavalidade,
p.numerodiasvalidade AS validadedias,
NULL AS classeabastecimento,
p.tipoabastecimento AS formaabastecimento,
ean.embalagem AS descricaoembalagem,
ean.quantidade AS quantidadeembalagem,
(
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,
CASE
WHEN COALESCE(prom.precopromocao, 0) > 0 THEN 'PROMOCAO'
ELSE 'NORMAL'
END AS situacao,
CASE WHEN p.inativo = 'N' THEN 'A' ELSE 'I' END AS statusvenda,
NULL AS statuscompra,
p.paicomposto AS idbase,
NULL AS tipotroca,
p.codigo AS seqproduto,
p.nome AS Descricao
FROM verdemar.produtos p
INNER JOIN verdemar.produtos_loja pl
ON pl.codigo = p.codigo
INNER JOIN verdemar.loja l
ON l.codigo = pl.loja
INNER JOIN verdemar.produtos_precos pp
ON pp.codigo = p.codigo
AND pp.loja = l.codigo
LEFT JOIN verdemar.produtos_estoque est
ON est.codigo = p.codigo
AND est.loja = l.codigo
LEFT JOIN verdemar.produtos_venda_media pvm
ON pvm.codigo = p.codigo
AND pvm.loja = l.codigo
LEFT JOIN (
SELECT codigo,
loja,
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 (
SELECT pr.codigo,
pr.loja,
pr.precopromocao
FROM verdemar.promocao pr
WHERE pr.datafinal >= TRUNC(SYSDATE)
OR pr.indeterminada = 'S'
) prom
ON prom.codigo = p.codigo
AND prom.loja = l.codigo
LEFT JOIN verdemar.produtos_ean ean
ON ean.codigo = p.codigo
AND ean.comprapadrao = 'S'
LEFT JOIN verdemar.categoria cat
ON cat.codigo = p.categoria
LEFT JOIN verdemar.subgrupo subg
ON subg.codigo = p.subgrupo
AND subg.setor = p.setor
AND subg.grupo = p.grupo
LEFT JOIN verdemar.produtos_estoque_wms pew
ON pew.produto = p.codigo
AND pew.cd = 892605
WHERE p.codigo = ${args.codproduto}
AND l.participageradorlojas = 'S'
AND p.inativo = 'N'
` `
} }
}, },