From b19e261a35e93d35534f3eac367cbca797beae09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sarah=20Magalh=C3=A3es?= Date: Wed, 3 Jun 2026 15:05:10 -0300 Subject: [PATCH] Adicionando detalhes do produto --- src/products/products.module.ts | 185 +++++++++++++++++++++++++++++++- 1 file changed, 184 insertions(+), 1 deletion(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 86f8da3..d9691a0 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -2661,7 +2661,190 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) }, detalhe: (args) => { return { - sql: /*sql*/ `` + sql: /*sql*/ ` + SELECT + l.codigo AS idempresa, + FNC_NOMEPESSOAS(l.codigo) AS nomeempresa, + cat.nome AS categoria, + ( + SELECT MAX(e.dataentrada) + FROM entradas e + INNER JOIN entradas_itens ei ON ei.chaveentrada = e.chave + WHERE ei.codigo = p.codigo + AND e.loja = l.codigo + AND e.status = 'S' + ) AS dataultimaentrada, + + pm.ultimavenda AS dataultimavenda, + + NULL AS precoatacado, + pp.precovenda AS precovarejo, + COALESCE(prom.precopromocao, 0) AS precopromoc, + pp.precovenda AS preconormal, + + ( + SELECT pf.precofidelidade + FROM 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 + ) 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 produtos_fidelidade pf + INNER JOIN 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 + ) AS margemmeuMambo, + subg.sugestao AS margemlucrodivisao, + + est.quantidade AS estoqueDisponivel, + ( + SELECT est2.quantidade + FROM loja l2 + INNER JOIN produtos_estoque est2 ON est2.loja = l2.codigo + WHERE l2.lojanota = l.codigo + AND l2.statusloja = 3 + AND est2.codigo = p.codigo + ) 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 entradas ent + INNER JOIN entradas_itens eit ON ent.chave = eit.chaveentrada + INNER JOIN operacoes_entradas op ON ent.operacao = op.codigo + INNER JOIN 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 entradas ent2 + INNER JOIN entradas_itens eit2 ON ent2.chave = eit2.chaveentrada + INNER JOIN operacoes_entradas op2 ON ent2.operacao = op2.codigo + INNER JOIN 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 produtos p + + INNER JOIN produtos_loja pl + ON pl.codigo = p.codigo + + INNER JOIN loja l + ON l.codigo = pl.loja + + INNER JOIN produtos_precos pp + ON pp.codigo = p.codigo + AND pp.loja = l.codigo + + LEFT JOIN produtos_estoque est + ON est.codigo = p.codigo + AND est.loja = l.codigo + + LEFT JOIN produtos_venda_media pvm + ON pvm.codigo = p.codigo + AND pvm.loja = l.codigo + + LEFT JOIN ( + SELECT codigo, + loja, + MAX(data) AS ultimavenda + FROM 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 promocao pr + WHERE pr.datafinal >= TRUNC(SYSDATE) + OR pr.indeterminada = 'S' + ) prom + ON prom.codigo = p.codigo + AND prom.loja = l.codigo + + LEFT JOIN produtos_ean ean + ON ean.codigo = p.codigo + AND ean.comprapadrao = 'S' + + LEFT JOIN categoria cat + ON cat.codigo = p.categoria + + LEFT JOIN subgrupo subg + ON subg.codigo = p.subgrupo + AND subg.setor = p.setor + AND subg.grupo = p.grupo + + LEFT JOIN 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' + ` } }, detalhe_custo_liquido: (args) => {