This commit is contained in:
+214
-144
@@ -2663,151 +2663,221 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1)
|
|||||||
return {
|
return {
|
||||||
sql: /*sql*/ `
|
sql: /*sql*/ `
|
||||||
WITH CTE_UltimaEntrada AS (
|
WITH CTE_UltimaEntrada AS (
|
||||||
SELECT /*+ MATERIALIZE */
|
SELECT
|
||||||
eit.codigo AS produto_codigo,
|
/*+ MATERIALIZE */
|
||||||
ent.loja AS loja_codigo,
|
eit.codigo AS produto_codigo,
|
||||||
ean2.quantidade AS quantidadecompra,
|
ent.loja AS loja_codigo,
|
||||||
ent.dataentrada AS dataultimaentrada,
|
ean2.quantidade AS quantidadecompra,
|
||||||
ROW_NUMBER() OVER (
|
ent.dataentrada AS dataultimaentrada,
|
||||||
PARTITION BY eit.codigo, ent.loja
|
ROW_NUMBER() OVER (
|
||||||
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
|
|
||||||
l.codigo AS idempresa,
|
|
||||||
FNC_NOMEPESSOAS(l.codigo) AS nomeempresa,
|
|
||||||
cat.nome AS categoria,
|
|
||||||
ult_ent.dataultimaentrada AS dataultimaentrada,
|
|
||||||
(
|
|
||||||
SELECT MAX(pm.data)
|
|
||||||
FROM verdemar.produtos_movimento pm
|
|
||||||
WHERE pm.codigo = p.codigo
|
|
||||||
AND pm.loja = l.codigo
|
|
||||||
) AS dataultimavenda,
|
|
||||||
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
|
|
||||||
|
|
||||||
FROM verdemar.produtos p
|
PARTITION BY eit.codigo,
|
||||||
INNER JOIN verdemar.produtos_loja pl
|
ent.loja
|
||||||
ON pl.codigo = p.codigo
|
ORDER BY
|
||||||
INNER JOIN verdemar.loja l
|
ent.dataentrada DESC,
|
||||||
ON l.codigo = pl.loja
|
ent.chave DESC
|
||||||
INNER JOIN verdemar.produtos_precos pp
|
) AS rn
|
||||||
ON pp.codigo = p.codigo
|
FROM
|
||||||
AND pp.loja = l.codigo
|
verdemar.entradas ent
|
||||||
LEFT JOIN verdemar.produtos_estoque est
|
INNER JOIN verdemar.entradas_itens eit ON
|
||||||
ON est.codigo = p.codigo
|
ent.chave = eit.chaveentrada
|
||||||
AND est.loja = l.codigo
|
INNER JOIN verdemar.operacoes_entradas op ON
|
||||||
LEFT JOIN verdemar.produtos_venda_media pvm
|
ent.operacao = op.codigo
|
||||||
ON pvm.codigo = p.codigo
|
INNER JOIN verdemar.produtos_ean ean2 ON
|
||||||
AND pvm.loja = l.codigo
|
eit.embalagem = ean2.chave
|
||||||
LEFT JOIN CTE_UltimaEntrada ult_ent
|
WHERE
|
||||||
ON ult_ent.produto_codigo = p.codigo
|
ent.status = 'S'
|
||||||
AND ult_ent.loja_codigo = l.codigo
|
AND op.atualizacusto = 'S'
|
||||||
AND ult_ent.rn = 1
|
AND op.tiponota NOT IN ('B', 'T', 'L')
|
||||||
LEFT JOIN (
|
AND ent.dataentrada <= TRUNC(SYSDATE)
|
||||||
SELECT pr.codigo,
|
AND eit.quantidade * ean2.quantidade > NVL(eit.quantidadedevolvida,
|
||||||
pr.loja,
|
0)
|
||||||
pr.precopromocao
|
AND eit.codigo = ${args.codproduto}
|
||||||
FROM verdemar.promocao pr
|
AND ent.loja IN (${args.ctx_user_companies_for_module})
|
||||||
WHERE (pr.datafinal >= TRUNC(SYSDATE) OR pr.indeterminada = 'S')
|
|
||||||
) prom
|
)
|
||||||
ON prom.codigo = p.codigo
|
|
||||||
AND prom.loja = l.codigo
|
SELECT
|
||||||
LEFT JOIN verdemar.produtos_ean ean
|
l.codigo AS idempresa,
|
||||||
ON ean.codigo = p.codigo
|
FNC_NOMEPESSOAS(l.codigo) AS nomeempresa,
|
||||||
AND ean.comprapadrao = 'S'
|
cat.nome AS categoria,
|
||||||
LEFT JOIN verdemar.categoria cat
|
ult_ent.dataultimaentrada AS dataultimaentrada,
|
||||||
ON cat.codigo = p.categoria
|
(
|
||||||
LEFT JOIN verdemar.subgrupo subg
|
SELECT
|
||||||
ON subg.codigo = p.subgrupo
|
MAX(pm.data)
|
||||||
AND subg.setor = p.setor
|
FROM
|
||||||
AND subg.grupo = p.grupo
|
verdemar.produtos_movimento pm
|
||||||
LEFT JOIN verdemar.produtos_estoque_wms pew
|
WHERE
|
||||||
ON pew.produto = p.codigo
|
pm.codigo = p.codigo
|
||||||
AND pew.cd = 892605
|
AND pm.loja = l.codigo
|
||||||
WHERE p.codigo = ${args.codproduto}
|
AND pm.data >= TRUNC(SYSDATE) - 50
|
||||||
AND l.participageradorlojas = 'S'
|
-- limita o scan
|
||||||
AND p.inativo = 'N'
|
|
||||||
`
|
) AS dataultimavenda,
|
||||||
|
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.produtos_estoque est2
|
||||||
|
INNER JOIN verdemar.loja l2 ON
|
||||||
|
l2.codigo = est2.loja
|
||||||
|
WHERE
|
||||||
|
est2.codigo = p.codigo
|
||||||
|
AND l2.lojanota = l.codigo
|
||||||
|
AND l2.statusloja = 3
|
||||||
|
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
|
||||||
|
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 CTE_UltimaEntrada ult_ent
|
||||||
|
|
||||||
|
ON
|
||||||
|
ult_ent.produto_codigo = p.codigo
|
||||||
|
AND ult_ent.loja_codigo = l.codigo
|
||||||
|
AND ult_ent.rn = 1
|
||||||
|
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'
|
||||||
|
AND l.codigo IN (${args.ctx_user_companies_for_module})`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
detalhe_preco: (args) => {
|
detalhe_preco: (args) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user