import { createModuleFactory } from "@davinti/jeff"; const moduleFactory = createModuleFactory(["C5", "C5_mambo", "C5_big", "Verdemar"]); export default moduleFactory .createModule({ id: "consulta-de-produto", description: "Consulta de Produtos", label: "Consulta de Produtos", icon: "search", order: 0, ai : { topics : { produtos_detalhe_geral: { descricao: "Consulta consolidada de indicadores de um produto em todas as lojas da rede. Útil para: 'Qual loja está sem estoque?', 'Qual vende mais?', 'Qual tem maior giro?', comparativos de giro e identificação de lojas sem vendas recentes.", prompt: { prompt_persona: "Você é um Extrator de Filtros especializado. Sua única tarefa: extrair os parâmetros (produto e regras de tempo) para analisar o panorama de um produto em todas as lojas da rede.", prompt_tarefa: "1. Filtros: extraia nome, EAN ou código em 'produto'. Para lojas inativas/sem venda, extraia o número de dias em 'dias_sem_venda'.\n2. Agrupamento: use 'loja' quando a análise exigir quebra por unidade (ranking de vendas, comparação de estoques).", prompt_regras_gerais: "- 'dias_sem_venda': apenas número inteiro.\n- Use agrupamento 'loja' para separar e ordenar unidades.", prompt_regras_contexto: "- Em continuações, resgate o produto da mensagem anterior.", prompt_exemplos: "Ex.1: 'Qual loja vende mais Coca-Cola?' → produto='Coca-Cola', agrupamento 'loja'.\nEx.2: 'Quais lojas não venderam nos últimos 10 dias?' → dias_sem_venda=10, agrupamento 'loja'.", prompt_outras_infos: "A query já retorna Estoque, MDV, Margem e Última Venda por loja. Ordenações e variações % são feitas depois.", prompt_saida: "Responda com uma análise dos dados recebidos conforme a pergunta do usuário, de forma objetiva e direta, apenas com as informações solicitadas." }, json_params_saida: { agrupamentos: [ { nome_parametro: "loja", coluna_vtr: "pemp.nroempresa" } ], filtros: { produto: { descricao_agente: "O código interno, código de barras (EAN) ou nome do produto.", coluna_vtr: "args.codproduto", tabela_rag: "consinco.map_produto" }, dias_sem_venda: { descricao_agente: "Número de dias para filtrar lojas sem registro de vendas recentes.", coluna_vtr: "args.dias_sem_venda" } } } }, produtos_detalhe_preco: { descricao: "Consulta o detalhamento da composição de preço e margem de um produto em uma loja específica. Útil para verificar custo vs preço e margem de lucro pontual.", prompt: { prompt_persona: "Você é um Extrator de Filtros focado em formação de preços. Sua tarefa: extrair os filtros para detalhar os preços vigentes de um produto em uma unidade.", prompt_tarefa: "1. Filtros: extraia 'produto' e 'loja'.\n2. Agrupamento: vazio.", prompt_regras_gerais: "- Exige obrigatoriamente 'produto' e 'loja'.", prompt_regras_contexto: "- Em continuações (ex: 'E o preço na loja Sul?'), resgate produto ou loja do histórico.", prompt_exemplos: "Ex.: 'Qual a margem da Heineken na loja Centro?' → produto='Heineken', loja='Centro'.", prompt_outras_infos: "A consulta cruza args.codproduto e args.nrempresa no banco.", prompt_saida: "Responda com uma análise dos dados recebidos conforme a pergunta do usuário, de forma objetiva e direta, apenas com as informações solicitadas." }, json_params_saida: { agrupamentos: [], filtros: { produto: { descricao_agente: "Nome, EAN ou código do produto.", coluna_vtr: "mgmp.seqproduto", tabela_rag: "consinco.map_produto" }, loja: { descricao_agente: "Nome ou código da loja/empresa.", coluna_vtr: "mgmp.nroempresa", tabela_rag: "tb_flash_nodo" } } }, query_base: "produto_detalhe_preco_ai" }, produtos_detalhe_mdv: { descricao: "Consulta o histórico diário de giro (MDV - Média de Venda Diária) e quantidade vendida de um produto em uma loja específica. Útil para entender a vazão do item dia a dia.", prompt: { prompt_persona: "Você é um Extrator de Filtros focado no histórico de vendas e giro diário. Sua tarefa: preparar a busca pelo histórico de MDV de um produto em uma unidade.", prompt_tarefa: "1. Filtros: extraia 'produto' e 'loja'.\n2. Agrupamento: vazio (dados virão por dia).", prompt_regras_gerais: "- 'produto' e 'loja' são fundamentais para não sobrecarregar o banco.", prompt_regras_contexto: "- Se a loja for omitida, busque-a no contexto.", prompt_exemplos: "Ex.: 'Como foi a venda diária de Picanha na loja Sul?' → produto='Picanha', loja='Sul'.", prompt_outras_infos: "A query retorna a timeline (data, quantidade vendida, estoque inicial) limitada ao produto e loja filtrados.", prompt_saida: "Responda com uma análise dos dados recebidos conforme a pergunta do usuário, de forma objetiva e direta, apenas com as informações solicitadas." }, json_params_saida: { agrupamentos: [], filtros: { produto: { descricao_agente: "Nome, EAN ou código do produto.", coluna_vtr: "mcdia.seqproduto", tabela_rag: "map_produto" }, loja: { descricao_agente: "Nome ou código da loja/empresa.", coluna_vtr: "mcdia.nroempresa", tabela_rag: "tb_flash_nodo" } } } }, produtos_situacao_vigente: { descricao: "Consulta o histórico de promoções e preços vigentes (situação vigente) de um produto em uma loja específica. Útil para verificar campanhas promocionais e variações de preço ofertado.", prompt: { prompt_persona: "Você é um Extrator de Filtros focado no histórico de campanhas promocionais. Sua tarefa: preparar a busca pela situação vigente de preços de um produto em uma loja.", prompt_tarefa: "1. Extraia 'produto' e 'loja'.", prompt_regras_gerais: "- Identifique os nomes do produto e da loja.", prompt_regras_contexto: "- Resgate filtros de turnos anteriores se a frase atual for incompleta.", prompt_exemplos: "Ex.: 'A Brahma esteve em promoção na loja Norte?' → produto='Brahma', loja='Norte'.", prompt_outras_infos: "Retorna o período (data início e fim) das promoções do produto na loja.", prompt_saida: "Responda com uma análise dos dados recebidos conforme a pergunta do usuário, de forma objetiva e direta, apenas com as informações solicitadas." }, json_params_saida: { agrupamentos: [], filtros: { produto: { descricao_agente: "Nome, EAN ou código do produto.", coluna_vtr: "mrl_prodempseg.seqproduto", tabela_rag: "consinco.map_produto" }, loja: { descricao_agente: "Nome ou código da loja/empresa.", coluna_vtr: "mrl_prodempseg.nroempresa", tabela_rag: "tb_flash_nodo" } } } }, produtos_custo_liquido: { descricao: "Consulta a evolução histórica do custo líquido, entradas e saídas de um produto em uma loja específica. Útil para análise de flutuação de custo de reposição.", prompt: { prompt_persona: "Você é um Extrator de Filtros focado na evolução de custos de mercadoria. Extraia o produto e a loja alvo.", prompt_tarefa: "1. Filtros: identifique 'produto' e 'loja'.", prompt_regras_gerais: "- Preencha rigorosamente os filtros exigidos.", prompt_regras_contexto: "- Em 'E na loja Leste?', resgate o produto em discussão.", prompt_exemplos: "Ex.: 'Como variou o custo do feijão na loja Centro?' → produto='feijão', loja='Centro'.", prompt_outras_infos: "Retorna dados linha a linha por data; sem necessidade de agrupamento.", prompt_saida: "Responda com uma análise dos dados recebidos conforme a pergunta do usuário, de forma objetiva e direta, apenas com as informações solicitadas." }, json_params_saida: { agrupamentos: [], filtros: { produto: { descricao_agente: "Nome, EAN ou código do produto.", coluna_vtr: "mrl_prodempseg.seqproduto", tabela_rag: "consinco.map_produto" }, loja: { descricao_agente: "Nome ou código da loja/empresa.", coluna_vtr: "mrl_prodempseg.nroempresa", tabela_rag: "tb_flash_nodo" } } } }, produtos_estoque_disponivel: { descricao: "Consulta o histórico diário de movimentação do estoque (entradas, saídas e saldo) de um produto em uma loja específica nos últimos 365 dias.", prompt: { prompt_persona: "Você é um Extrator de Filtros focado no fluxo contínuo de estoque. Extraia o necessário para rastrear o saldo do item.", prompt_tarefa: "1. Extraia 'produto' e 'loja'.", prompt_regras_gerais: "- É vital identificar a loja correta.", prompt_regras_contexto: "- Considere o histórico; o usuário pode analisar várias lojas seguidamente sobre o mesmo produto.", prompt_exemplos: "Ex.: 'Movimentação do estoque de Fralda Turma da Mônica na unidade Brooklin.' → produto='Fralda Turma da Mônica', loja='Brooklin'.", prompt_outras_infos: "Timeline do estoque, cruzando entradas e saídas diárias do produto na loja escolhida.", prompt_saida: "Responda com uma análise dos dados recebidos conforme a pergunta do usuário, de forma objetiva e direta, apenas com as informações solicitadas." }, json_params_saida: { agrupamentos: [], filtros: { produto: { descricao_agente: "Nome, EAN ou código do produto.", coluna_vtr: "x.seqproduto", tabela_rag: "consinco.map_produto" }, loja: { descricao_agente: "Nome ou código da loja/empresa.", coluna_vtr: "x.nroempresa", tabela_rag: "tb_flash_nodo" } } } }, detalhe_estoque_transito: { descricao: "Consulta detalhes de notas fiscais e mercadorias em trânsito de um produto para uma loja específica. Útil para rastrear entregas pendentes, identificar fornecedores e verificar quantidades e valores de produtos a caminho.", prompt: { prompt_persona: "Você é um Extrator de Filtros de Logística e Recebimento. Sua tarefa: extrair os filtros para rastrear o estoque em trânsito (notas fiscais emitidas) de um item para uma loja.", prompt_tarefa: "1. Filtros: identifique 'produto' e 'loja' (empresa) de destino.\n2. Agrupamento: vazio (dados retornam por nota fiscal).", prompt_regras_gerais: "- Obrigatório preencher os filtros de produto e loja para execução otimizada.", prompt_regras_contexto: "- Resgate filtros de turnos anteriores. Ex: em 'E na loja Sul, tem algo chegando?', herde o produto do histórico.", prompt_exemplos: "Ex.: 'Tem nota de Arroz Tio João chegando na loja Norte?' → produto='Arroz Tio João', loja='Norte'.", prompt_outras_infos: "Retorna as notas fiscais do último ano com fornecedor, datas de emissão/entrada e quantidade em trânsito do produto para a loja.", prompt_saida: "Responda ÚNICA e EXCLUSIVAMENTE com um objeto JSON válido, aderente ao schema. Sem texto extra e sem markdown — apenas o objeto puro." }, json_params_saida: { agrupamentos: [], filtros: { produto: { descricao_agente: "Nome, EAN ou código do produto.", coluna_vtr: "b.seqproduto", tabela_rag: "consinco.map_produto" }, loja: { descricao_agente: "Nome ou código da loja/empresa de destino.", coluna_vtr: "a.nroempresa", tabela_rag: "tb_flash_nodo" } } }, } } }, queries: { consulta: { name: "Consulta de Produtos", display: { type: "list", search_bar: { placeholder: "Digite o nome, código ou EAN do produto", }, rows: { title: "title", code: "code", }, }, params: ["filtro", "ean"], }, detalhe: { name: "Detalhes do Produto", display: { type: "detail", stores: [ { store_id: "idempresa", store_name: "nomeempresa", category: "categoria", last_entry: "dataultimaentrada", last_sale: "dataultimavenda", sections: [ { label: "Preço Atacado", column: "precoatacado", format: "currency_short", }, { label: "Preço Varejo", column: "precovarejo", format: "currency_short", }, { label: "MDV", column: "mdv", format: "currency_short", }, { label: "Margem", column: "margem", format: "number", }, { label: "Margem Atacado", column: "margematacado", format: "number", }, { label: "Classe Abastecimento", column: "classeabastecimento", format: "string", }, { label: "Descrição Embalagem", column: "descricaoembalagem", format: "string", }, { label: "Quantidade Embalagem", column: "quantidadeembalagem", format: "number", entrypoint: "detalhe_preco_embalagem", }, { label: "Estoque Disponível", column: "estoqueDisponivel", format: "number", }, { label: "Estoque Troca", column: "estoquetroca", format: "number", }, { label: "Estoque Trânsito", column: "estoquetransito", format: "number", }, { label: "Estoque Futuro", column: "estoquefuturo", format: "number", }, { label: "Estoque Reservado", column: "estoquereservado", format: "number", }, { label: "DDV", column: "ddv", format: "currency_short", }, { label: "DDV Mínimo", column: "ddvminimo", format: "currency_short", }, { label: "DDV Máximo", column: "ddvmaximo", format: "currency_short", }, { label: "Forma Abastecimento", column: "formaabastecimento", format: "string", }, { label: "Situação", column: "situacao", format: "string", }, { label: "Estoque Disponível CD", column: "estoquedisponivelcd", format: "number", }, { label: "Estoque Futuro CD", column: "estoquefuturocd", format: "number", }, { label: "Custo Líquido", column: "custoliquido", format: "currency_short", }, { label: "Status Venda", column: "statusvenda", format: "string", }, { label: "Status Compra", column: "statuscompra", format: "string", }, { label: "Qtde Atacado", column: "qtdeatacado", format: "number", }, { label: "ID Base", column: "idbase", format: "number", }, { label: "Tipo Troca", column: "tipotroca", format: "string", }, { label: "Quantidade Compra", column: "quantidadecompra", format: "number", }, { label: "Reserva", column: "reserva", format: "number", }, { label: "Validade Dias", column: "validadedias", format: "number", }, { label: "Margem Lucro Divisão", column: "margemlucrodivisao", format: "percentage", }, { label: "Preço Promoção", column: "precopromoc", format: "currency_short", }, { label: "Preço Normal", column: "preconormal", format: "currency_short", }, { label: "Preço Meu Mambo", column: "precomeuMambo", format: "currency_short", }, { label: "Margem Meu Mambo", column: "margemmeuMambo", format: "percentage", }, { label: "Margem Normal", column: "margemnormal", format: "percentage", }, { label: "MDV Promoção", column: "mdvpromoc", format: "currency_short", }, { label: "Preço Vencimento Próximo", column: "vlrprecovenctoprox", format: "currency_short", }, { label: "Data Validade", column: "dtavalidade", format: "date", }, ], }, ], }, params: ["codproduto"], }, detalhe_preco: { name: "Detalhe Preço Embalagem", display: { type: "table", table: { header: [ { label: "Embalagem", }, { label: "Preço Embalagem", }, { label: "Preço Unidade", }, { label: "Margem", }, ], cell: [ { field: "EMBALAGEM", format: "string", }, { field: "PRECO_EMBALAGEM", format: "currency", }, { field: "PRECO_UNIDADE", format: "currency", }, { field: "MARGEM", format: "percentage", }, ], }, }, params: ["nrempresa", "codproduto"], }, detalhe_mdv: { name: "Detalhe Vendas Dia", display: { type: "table", table: { header: [ { label: "Data", }, { label: "Qtd.", }, { label: "Qtd. ini.", }, ], cell: [ { field: "data", format: "date", }, { field: "qtd", format: "currency", }, { field: "qtd_inicial", format: "currency", }, ], }, }, params: ["nrempresa", "codproduto"], }, detalhe_situacao_vigente: { name: "Detalhe Histórico Venda", display: { type: "table", table: { header: [ { label: "Data Início", }, { label: "Data Fim", }, { label: "Embalagem", }, { label: "Preço", }, ], cell: [ { field: "data_inicio", format: "date", }, { field: "data_fim", format: "date", }, { field: "embalagem", format: "string", }, { field: "preco", format: "currency", }, ], }, }, params: ["nrempresa", "codproduto"], }, detalhe_custo_liquido: { name: "Detalhe Custo Médio", display: { type: "table", table: { header: [ { label: "Data", }, { label: "Est. ini.", }, { label: "Est. fin.", }, { label: "Custo", }, ], cell: [ { field: "data", format: "date", }, { field: "estoqinicial", format: "date", }, { field: "estoqfinal", format: "string", }, { field: "custo", format: "currency", }, ], }, }, params: ["nrempresa", "codproduto"], }, detalhe_estoque_disponivel: { name: "Detalhe Estoque Disponível", display: { type: "table", table: { header: [ { label: "Data", }, { label: "Qtd. ent.", }, { label: "Qtd. sai.", }, { label: "Saldo", }, ], cell: [ { field: "data", format: "date", }, { field: "qtdentrada", format: "date", }, { field: "qtdsaida", format: "string", }, { field: "qtdsaldo", format: "currency", }, ], }, }, params: ["nrempresa", "codproduto"], }, detalhe_estoque_transito: { name: "Detalhe Estoque Trânsito", display: { type: "table", table: { header: [ { label: "NF", }, { label: "Serie", }, { label: "Data", }, { label: "Qtd.", }, ], cell: [ { field: "NUMERONF", format: "number", }, { field: "SERIENF", format: "number", }, { field: "DTAEMISSAO", format: "date", }, { field: "QUANTIDADE", format: "number", }, ], }, }, params: ["nrempresa", "codproduto"], }, produto_detalhe_preco_ai: { name: "Detalhe Preço AI", display: { type: "none" }, params: ["data"] }, produto_detalhe_mdv_ai: { name: "Detalhe MDV AI", display: { type: "none" }, params: ["data"] }, produto_detalhe_estoque_ai: { name: "Detalhe Estoque AI", display: { type: "none" }, params: ["data"] }, produto_detalhe_custo_ai: { name: "Detalhe Custo AI", display: { type: "none" }, params: ["data"] }, produto_detalhe_margem_ai: { name: "Detalhe Margem AI", display: { type: "none" }, params: ["data"] } }, entrypoint: "consulta", }) .withImplementations({ C5: { consulta: (args) => { return { sql: /*sql*/ ` SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, p.DESCCOMPLETA AS title FROM CONSINCO.MAP_PRODUTO p WHERE 1 = 1 AND ( ( ${args.filtro} IS NOT NULL AND ( p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') ) ) OR ( ${args.ean} IS NOT NULL AND EXISTS ( SELECT 1 FROM CONSINCO.MAP_PRODCODIGO A WHERE A.SEQPRODUTO = p.SEQPRODUTO AND ISNUMERIC(A.CODACESSO) = 'S' AND A.CODACESSO = ${args.ean} ) ) OR ( ${args.filtro} IS NULL AND ${args.ean} IS NULL ) ) ORDER BY 2 `, }; }, detalhe: (args) => { return { sql: /*sql*/ ` select DISTINCT pemp.nroempresa, 'BIG' AS comprador, nvl(mff.fornecedor, 'N/A') fornecedor, (select max(b_cat.caminhocompleto) from consinco.map_famdivcateg a_cat, consinco.map_categoria b_cat where a_cat.seqcategoria = b_cat.seqcategoria and a_cat.nrodivisao = b_cat.nrodivisao and a_cat.seqfamilia = pro.seqfamilia and a_cat.nrodivisao = me.nrodivisao and b_cat.statuscategor = 'A' and a_cat.status = 'A' and b_cat.nivelhierarquia = 1 and b_cat.tipcategoria = nvl('M', 'M')) categoria, pro.seqproduto, initcap(pro.desccompleta) Descricao, nvl(mapi.urlecommerceimg,'') ImagemUrl, case when trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2) = 0 then trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) else trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2) end PrecoAtacado, trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) PrecoVarejo, trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg.nrosegmentoprinc, seg_mg.qtdembalagem, (round( ( pe_mg.CMULTVLRNF + pe_mg.CMULTIPI - decode( 'L', 'L', pe_mg.CMULTCREDICMS + decode(nvl(fam_mg.indmonopiscofins, 'N')|| nvl(emp_mg.indfaturaipi, 'N')||nvl(emp_mg.indimportadora, 'N'), 'SNN', 0, nvl(pe_mg.cmultcredpis, 0) + nvl(pe_mg.cmultcredcofins, 0)), 0) + pe_mg.CMULTICMSST + pe_mg.CMULTDESPNF + pe_mg.CMULTDESPFORANF - pe_mg.CMULTDCTOFORANF - nvl( consinco.fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA ), 0 ) + nvl( consinco.fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg.qtdembalagem, 4 ) * case when (pr_mg.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg.percacresccustorelacvig,1) else 1 end ),decode(seg_mg.precovalidpromoc,0,seg_mg.precovalidnormal,seg_mg.precovalidpromoc))),2) from consinco.max_Empresa emp_mg join consinco.mrl_prodempseg seg_mg on seg_mg.nroempresa = emp_mg.nroempresa and seg_mg.nrosegmento = emp_mg.nrosegmentoprinc and seg_mg.qtdembalagem = 1 and seg_mg.seqproduto = pemp.seqproduto join consinco.map_produto pr_mg on pr_mg.seqproduto = seg_mg.seqproduto join consinco.mrl_produtoempresa pe_mg on pe_mg.nroempresa = emp_mg.nroempresa and pe_mg.seqproduto = nvl(pr_mg.seqprodutobase, pr_mg.seqproduto) join consinco.map_familia fam_mg on fam_mg.seqfamilia = pr_mg.seqfamilia where emp_mg.nroempresa = pemp.nroempresa),0) Margem, case when trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) = trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2 ) then nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg2.nrosegmentoprinc, seg_mg2.qtdembalagem, (round( ( pe_mg2.CMULTVLRNF + pe_mg2.CMULTIPI - decode( 'L', 'L', pe_mg2.CMULTCREDICMS + decode(nvl(fam_mg2.indmonopiscofins, 'N')|| nvl(emp_mg2.indfaturaipi, 'N')||nvl(emp_mg2.indimportadora, 'N'), 'SNN', 0, nvl(pe_mg2.cmultcredpis, 0) + nvl(pe_mg2.cmultcredcofins, 0)), 0) + pe_mg2.CMULTICMSST + pe_mg2.CMULTDESPNF + pe_mg2.CMULTDESPFORANF - pe_mg2.CMULTDCTOFORANF - nvl( consinco.fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA ), 0 ) + nvl( consinco.fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg2.qtdembalagem, 4 ) * case when (pr_mg2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg2.percacresccustorelacvig,1) else 1 end ),decode(seg_mg2.precovalidpromoc,0,seg_mg2.precovalidnormal,seg_mg2.precovalidpromoc))),2) from consinco.max_Empresa emp_mg2 join consinco.mrl_prodempseg seg_mg2 on seg_mg2.nroempresa = emp_mg2.nroempresa and seg_mg2.nrosegmento = emp_mg2.nrosegmentoprinc and seg_mg2.qtdembalagem = 1 and seg_mg2.seqproduto = pemp.seqproduto join consinco.map_produto pr_mg2 on pr_mg2.seqproduto = seg_mg2.seqproduto join consinco.mrl_produtoempresa pe_mg2 on pe_mg2.nroempresa = emp_mg2.nroempresa and pe_mg2.seqproduto = nvl(pr_mg2.seqprodutobase, pr_mg2.seqproduto) join consinco.map_familia fam_mg2 on fam_mg2.seqfamilia = pr_mg2.seqfamilia where emp_mg2.nroempresa = pemp.nroempresa),0) else nvl((select case when at2_q.precovalidpromoc > 0 then round(at2_q.mgmprecovdapromoc,2) when at2_q.precovalidnormal > 0 then round(at2_q.mgmprecominvdaempresa,2) end from ( SELECT x_at2.precovalidnormal, x_at2.precovalidpromoc, decode (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from consinco.mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem), 0, 0, ((((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from consinco.mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) - ( (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from consinco.mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 else decode(m_at2.metodoprecificacao, 'B', 0, 'I', 0, decode(h_at2.pericmsestimativa, 0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) end / 100)) + (((b_at2.cmultvlrnf + b_at2.cmultipi - decode(m_at2.metodoprecificacao, 'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 'I', DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf - nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then nvl((consinco.fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa, 0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) else 0 end) * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from consinco.mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)) + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + decode(m_at2.metodoprecificacao,'B', 0, nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from consinco.mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) - decode(m_at2.metodocalcrentab,'L', ( (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from consinco.mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 else decode(m_at2.metodoprecificacao,'B',0,'I',0, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) end / 100)) + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from consinco.mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * decode(m_at2.metodoprecificacao,'B',0, nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) )) * 100) as mgmprecominvdaempresa, decode(round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2), 0, 0, ((round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - ( (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * (decode(m_at2.metodoprecificacao,'B',0,'I',0, case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) end) / 100)) + (((b_at2.cmultvlrnf + b_at2.cmultipi - decode(m_at2.metodoprecificacao,'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 'I', DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf - nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then nvl((consinco.fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) else 0 end) * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaopromfs, nvl(n_at2.percomissaopromoc,0)), nvl(n_at2.percomissaopromoc,0)) + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + decode(m_at2.metodoprecificacao,'B',0, nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - decode(m_at2.metodocalcrentab,'L', ( (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * (decode(m_at2.metodoprecificacao,'B',0,'I',0, case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) end) / 100)) + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * decode(m_at2.metodoprecificacao,'B',0, nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) )) * 100) as mgmprecovdapromoc from consinco.max_empresa h_at2, consinco.map_produto a_at2, consinco.mrl_produtoempresa b_at2, consinco.map_famdivisao c_at2, consinco.map_famdivcateg d_at2, consinco.map_categoria e_at2, consinco.map_famembalagem i_at2, consinco.map_famembalagem j_at2, consinco.map_famembalagem k_at2, consinco.map_famembalagem tr_at2, consinco.map_tributacaouf f_at2, consinco.map_familia l_at2, consinco.mrl_prodempseg x_at2, consinco.max_divisao m_at2, consinco.mad_famsegmento o_at2, consinco.map_classifabc n_at2, consinco.mad_segmento p_at2, consinco.mad_parametro q_at2, consinco.map_famfornec r_at2, consinco.map_regimetributacao t_at2, consinco.max_parametro pd_at2 where 1=1 and b_at2.nroempresa = h_at2.nroempresa and a_at2.seqproduto = b_at2.seqproduto and c_at2.seqfamilia = a_at2.seqfamilia and c_at2.nrodivisao = h_at2.nrodivisao and d_at2.seqfamilia = a_at2.seqfamilia and d_at2.nrodivisao = h_at2.nrodivisao and d_at2.status = 'A' and e_at2.seqcategoria = d_at2.seqcategoria and e_at2.tipcategoria = 'M' and e_at2.actfamilia = 'S' and e_at2.nrodivisao = h_at2.nrodivisao and f_at2.nrotributacao = c_at2.nrotributacao and f_at2.ufempresa = nvl(h_at2.ufformacaopreco, h_at2.uf) and f_at2.ufclientefornec = h_at2.uf and f_at2.nroregtributacao = nvl(h_at2.nroregtributacao, 0) and f_at2.tiptributacao = decode(m_at2.tipdivisao,'A','SC','SN') and i_at2.seqfamilia = a_at2.seqfamilia and i_at2.qtdembalagem = nvl(r_at2.padraoembcomprafornec, c_at2.padraoembcompra) and j_at2.seqfamilia = o_at2.seqfamilia and j_at2.qtdembalagem = o_at2.padraoembvenda and k_at2.seqfamilia = a_at2.seqfamilia and k_at2.qtdembalagem = x_at2.qtdembalagem and tr_at2.seqfamilia = a_at2.seqfamilia and tr_at2.qtdembalagem = nvl(c_at2.padraoembtransf, o_at2.padraoembvenda) and l_at2.seqfamilia = a_at2.seqfamilia and x_at2.seqproduto = a_at2.seqproduto and x_at2.nroempresa = h_at2.nroempresa and m_at2.nrodivisao = h_at2.nrodivisao and o_at2.seqfamilia = a_at2.seqfamilia and o_at2.nrosegmento = x_at2.nrosegmento and n_at2.nrosegmento = o_at2.nrosegmento and n_at2.classifcomercabc = o_at2.classifcomercabc and x_at2.nrosegmento = p_at2.nrosegmento and q_at2.nroempresa = h_at2.nroempresa and r_at2.seqfamilia = a_at2.seqfamilia and t_at2.nroregtributacao = f_at2.nroregtributacao and h_at2.nrosegmentoprinc = o_at2.nrosegmento and pd_at2.grupo = 'PRODUTO' and pd_at2.parametro = 'UTIL_FORMA_ABASTEC_PROD' and pd_at2.nroempresa = 0 and x_at2.statusvenda = 'A' and x_at2.qtdembalagem = 1 and b_at2.nroempresa = pemp.nroempresa and b_at2.seqproduto = pemp.seqproduto and r_at2.rowid = decode((select min(id) from consinco.maxx_selecrowid where maxx_selecrowid.sequencia = 4 and maxx_selecrowid.seqfamilia = r_at2.seqfamilia), null, (select min(mfr2.rowid) from consinco.map_famfornec mfr2 where mfr2.seqfamilia = r_at2.seqfamilia and mfr2.principal = 'S'), (select min(id) from consinco.maxx_selecrowid where maxx_selecrowid.sequencia = 4 and maxx_selecrowid.seqfamilia = r_at2.seqfamilia)) ) at2_q),0) end MargemAtacado, nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, emb.embalagem DescricaoEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, case 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)) end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, 0 EstoqueTransito, 0 EstoqueFuturo, NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, ROUND(nvl(case 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) end, 0), 3) DDV, nvl(pemp.estqminimodv,0) DDVMinimo, nvl(pemp.estqmaximodv, 0) DDVMaximo, case WHEN (select count(1) from consinco.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 = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' when pemp.formaabastecimento = 'E' then 'LOJA-EDL' when pemp.formaabastecimento is null then ( select case when mfd_fa.formaabastecimento = 'I' then 'ARMAZENAGEM' when mfd_fa.formaabastecimento = 'C' then 'CROSS' when mfd_fa.formaabastecimento = 'N' then 'CENTRAL-EDL' when mfd_fa.formaabastecimento = 'E' then 'LOJA-EDL' when mfd_fa.formaabastecimento = 'F' then 'FRACIONADO' end from consinco.map_famdivisao mfd_fa where mfd_fa.seqfamilia = pro.seqfamilia and mfd_fa.nrodivisao = md.nrodivisao) end FormaAbastecimento, case when pes.precovalidpromoc > 0.00 then 'PROMOCAO' when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, (select max(mnf_de.Dtaentrada) from consinco.mlf_notafiscal mnf_de inner join consinco.mlf_nfitem mnfi_de on mnfi_de.NUMERONF = mnf_de.NUMERONF and mnfi_de.SEQPESSOA = mnf_de.SEQPESSOA and mnfi_de.SERIENF = mnf_de.SERIENF and mnfi_de.TIPNOTAFISCAL = mnf_de.TIPNOTAFISCAL and mnfi_de.NROEMPRESA = mnf_de.NROEMPRESA inner join consinco.max_parametro mp_de on mp_de.nroempresa = mnf_de.nroempresa and mp_de.parametro = 'CGO_ENTR_BONIF_NFCOMPRA' where mnf_de.tipnotafiscal = 'E' and mnf_de.statusnf <> 'C' and mnfi_de.tipitem = 'R' and mnf_de.dtaentrada >= trunc(sysdate - 365) and mnf_de.dtaentrada <= trunc(sysdate - 1) and mnf_de.nroempresa = pemp.nroempresa and mnfi_de.seqproduto = pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, CASE WHEN (select count(*) from consinco.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, pemp.statuscompra, nvl((select min(qtdembalagem) from consinco.mrl_prodempseg where nroempresa = me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, nvl(pro.seqprodutobase,0) IdBase, case when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' ELSE case when mff.indindenizavaria = 'N' then 'NF DEVOL' else 'SEM TROCA' end END TIPOTROCA, mfdv.padraoembcompra QUANTIDADECOMPRA, pemp.qtdreservadavda RESERVA, NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, mfdv.margemlucrodivisao, nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, case when pes3.precovalidpromoc > 0 then nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 15, seg_mbo1.qtdembalagem, (round( ( pe_mbo1.CMULTVLRNF + pe_mbo1.CMULTIPI - decode( 'L', 'L', pe_mbo1.CMULTCREDICMS + decode(nvl(fam_mbo1.indmonopiscofins, 'N')|| nvl(emp_mbo1.indfaturaipi, 'N')||nvl(emp_mbo1.indimportadora, 'N'), 'SNN', 0, nvl(pe_mbo1.cmultcredpis, 0) + nvl(pe_mbo1.cmultcredcofins, 0)), 0) + pe_mbo1.CMULTICMSST + pe_mbo1.CMULTDESPNF + pe_mbo1.CMULTDESPFORANF - pe_mbo1.CMULTDCTOFORANF - nvl( consinco.fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA ), 0 ) + nvl( consinco.fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo1.qtdembalagem, 4 ) * case when (pr_mbo1.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo1.percacresccustorelacvig,1) else 1 end ),decode(seg_mbo1.precovalidpromoc,0,seg_mbo1.precovalidnormal,seg_mbo1.precovalidpromoc))),2) from consinco.max_Empresa emp_mbo1 join consinco.mrl_prodempseg seg_mbo1 on seg_mbo1.nroempresa = emp_mbo1.nroempresa and seg_mbo1.qtdembalagem = 1 and seg_mbo1.nrosegmento = 15 and seg_mbo1.seqproduto = pemp.seqproduto join consinco.map_produto pr_mbo1 on pr_mbo1.seqproduto = seg_mbo1.seqproduto join consinco.mrl_produtoempresa pe_mbo1 on pe_mbo1.nroempresa = emp_mbo1.nroempresa and pe_mbo1.seqproduto = nvl(pr_mbo1.seqprodutobase, pr_mbo1.seqproduto) join consinco.map_familia fam_mbo1 on fam_mbo1.seqfamilia = pr_mbo1.seqfamilia where emp_mbo1.nroempresa = pemp.nroempresa),0) else 0 end MargemMeuMambo, nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 2, seg_mbo2.qtdembalagem, (round( ( pe_mbo2.CMULTVLRNF + pe_mbo2.CMULTIPI - decode( 'L', 'L', pe_mbo2.CMULTCREDICMS + decode(nvl(fam_mbo2.indmonopiscofins, 'N')|| nvl(emp_mbo2.indfaturaipi, 'N')||nvl(emp_mbo2.indimportadora, 'N'), 'SNN', 0, nvl(pe_mbo2.cmultcredpis, 0) + nvl(pe_mbo2.cmultcredcofins, 0)), 0) + pe_mbo2.CMULTICMSST + pe_mbo2.CMULTDESPNF + pe_mbo2.CMULTDESPFORANF - pe_mbo2.CMULTDCTOFORANF - nvl( consinco.fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA ), 0 ) + nvl( consinco.fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo2.qtdembalagem, 4 ) * case when (pr_mbo2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo2.percacresccustorelacvig,1) else 1 end ),seg_mbo2.precovalidnormal)),2) from consinco.max_Empresa emp_mbo2 join consinco.mrl_prodempseg seg_mbo2 on seg_mbo2.nroempresa = emp_mbo2.nroempresa and seg_mbo2.qtdembalagem = 1 and seg_mbo2.nrosegmento = 2 and seg_mbo2.seqproduto = pemp.seqproduto join consinco.map_produto pr_mbo2 on pr_mbo2.seqproduto = seg_mbo2.seqproduto join consinco.mrl_produtoempresa pe_mbo2 on pe_mbo2.nroempresa = emp_mbo2.nroempresa and pe_mbo2.seqproduto = nvl(pr_mbo2.seqprodutobase, pr_mbo2.seqproduto) join consinco.map_familia fam_mbo2 on fam_mbo2.seqfamilia = pr_mbo2.seqfamilia where emp_mbo2.nroempresa = pemp.nroempresa),0) MargemNormal, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, vncto.dtavalidade from consinco.max_divisao md inner join consinco.max_empresa me on me.nrodivisao = md.nrodivisao and me.dtainiciomovestoque <= trunc(sysdate) and me.status = 'A' inner join consinco.mad_segmento seg on md.nrodivisao = me.nrodivisao and me.nrosegmentoprinc = seg.nrosegmento inner join consinco.mrl_produtoempresa pemp on pemp.nroempresa = me.nroempresa left join consinco.mrl_produtoempresa pempcd on pempcd.seqproduto = pemp.seqproduto left join consinco.map_classeabastec mcab on mcab.classeabastqtd = pemp.classeabastqtd and mcab.nroempresa = pemp.nroempresa and mcab.classeabastvlr = pemp.classeabastvlr inner join consinco.map_produto pro on pro.seqproduto = pemp.seqproduto inner join consinco.map_famdivisao mfdv on mfdv.seqfamilia = pro.seqfamilia and mfdv.nrodivisao = me.nrodivisao inner join consinco.max_comprador mco on mco.seqcomprador = mfdv.seqcomprador left join consinco.map_produtoimagem mapi on mapi.seqproduto = pro.seqproduto and mapi.indpricipal = 'S' inner join consinco.mrl_prodempseg pes on pes.seqproduto = pemp.seqproduto and pes.nroempresa = pemp.nroempresa and pes.nrosegmento = seg.nrosegmento and pes.qtdembalagem = 1 inner join consinco.mrl_prodempseg pes2 on pes2.nroempresa = pes.nroempresa and pes2.seqproduto = pes.seqproduto and pes2.nrosegmento = pes.nrosegmento left join consinco.mrl_prodempseg pes3 on pes3.seqproduto = pemp.seqproduto and pes3.nroempresa = pemp.nroempresa and pes3.qtdembalagem = 1 inner join consinco.map_famembalagem emb on emb.seqfamilia = pro.seqfamilia and emb.qtdembalagem = 1 left join (select mffTemp.Seqfamilia, mfdvTemp.Nrodivisao, mffTemp.indindenizavaria, mfdvTemp.pzomedvisitarep, mfdvTemp.pzomedentrega, mfdvTemp.pzomedatraso, gp.fantasia fornecedor from consinco.map_famfornec mffTemp inner join consinco.ge_pessoa gp on gp.seqpessoa = mffTemp.Seqfornecedor left join consinco.maf_fornecdivisao mfdvTemp on mfdvTemp.Seqfornecedor = mffTemp.Seqfornecedor and mffTemp.Principal = 'S' ) mff on mff.seqfamilia = pro.seqfamilia and mff.nrodivisao = md.nrodivisao left join (select pvencto.nroempresa, pvencto.seqproduto, min(pvencto.vlrpreco) vlrprecovenctoprox, min(pvencto.dtavalidade) dtavalidade from consinco.mrl_prodempvencimento pvencto where pvencto.dtavalidade >= trunc(sysdate) and pvencto.qtdembalagem = 1 group by pvencto.nroempresa, pvencto.seqproduto ) vncto ON vncto.nroempresa = pemp.nroempresa and vncto.seqproduto = pemp.seqproduto where md.nrodivisao in (1) and pemp.seqproduto = ${args.codproduto} and me.nroempresa in (${args.ctx_user_companies_for_module}) and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) from consinco.mrl_prodempseg pes3 where pes3.nroempresa = pes.nroempresa and pes3.seqproduto = pes.seqproduto and pes3.nrosegmento = pes.nrosegmento and pes3.statusvenda = 'A') `, }; }, detalhe_preco: (args) => { return { sql: /*sql*/ ` select ora_hash(mgmp.SEQPRODUTO||mgmp.NROEMPRESA||mgmp.QTDEMBALAGEM||mgmp.NROSEGMENTO) chave, mgmp.SEQPRODUTO, mgmp.NROEMPRESA, mgmp.NROSEGMENTO, mgmp.QTDEMBALAGEM || ' ' || mgmp.EMBVENDA embalagem, mgmp.PRECOVALIDNORMAL preco_embalagem, mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, trunc(mgmp.MGMPRECOVALIDO,2) margem from consinco.maxv_mgmbaseprodseg mgmp inner join consinco.max_empresa me on me.nroempresa = mgmp.NROEMPRESA and me.status = 'A' and me.dtainiciomovestoque <= trunc(sysdate)-1 --and me.nrodivisao in (2,4) --and me.nroempresa not in (291,298,910,911,920,930,931,940,980) --AND mgmp.NROSEGMENTO IN (2,7) where 1=1 and mgmp.seqproduto = ${args.codproduto} and mgmp.nroempresa = ${args.nrempresa} --AND mgmp.NROSEGMENTO NOT IN (22,23,26) and mgmp.STATUSVENDA = 'A' `, }; }, /** SEM RETORNO DE INFORMAÇÕES */ detalhe_mdv: (args) => { return { sql: /*sql*/ ` select mcdia.dtaentradasaida data, mcdia.nroempresa, mcdia.seqproduto, Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, mcdia.qtdvda qtd, mcdia.qtdestqinicial qtd_inicial from consinco.mrl_custodia mcdia inner join consinco.max_empresa me on mcdia.nroempresa = me.nroempresa where 1=1 and mcdia.qtdvda > 0 and mcdia.dtaentradasaida >= trunc(sysdate)-365 AND mcdia.nroempresa = ${args.nrempresa} AND mcdia.seqproduto = ${args.codproduto} order by dtaentradasaida desc `, }; }, detalhe_situacao_vigente: (args) => { return { sql: /*sql*/ ` select mrl_prodempseg.nroempresa, mrl_prodempseg.seqproduto, mrl_promocao.dtainicio, mrl_promocao.dtafim, mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, mrl_promocaoitem.precopromocional preco from consinco.mrl_promocaoitem, consinco.mrl_promocao, consinco.mrl_prodempseg, consinco.map_produto mp, consinco.map_famembalagem mfe, consinco.max_empresa me where 1=1 and me.nroempresa = mrl_promocao.nroempresa and me.status = 'A' --and me.nrodivisao = 2 and me.dtainiciomovestoque <= trunc(sysdate)-1 and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao and mrl_promocao.centralloja = mrl_promocaoitem.centralloja and mrl_promocao.nrosegmento = mrl_promocaoitem.nrosegmento and mrl_promocaoitem.seqproduto = mrl_prodempseg.seqproduto and mrl_promocao.nrosegmento = mrl_prodempseg.nrosegmento and mrl_promocao.nroempresa = mrl_prodempseg.nroempresa and mrl_promocaoitem.qtdembalagem = mrl_prodempseg.qtdembalagem and mp.seqproduto = mrl_prodempseg.seqproduto and mfe.seqfamilia = mp.seqfamilia and mfe.qtdembalagem = mrl_prodempseg.qtdembalagem and nvl(mrl_promocao.tipopromoc, 'N') in ('N', 'F', 'A', 'S') and mrl_promocao.dtainicio >= trunc(sysdate)-90--365 AND mrl_prodempseg.nroempresa = ${args.nrempresa} AND mrl_prodempseg.seqproduto = ${args.codproduto} order by mrl_promocao.dtainicio desc `, }; }, /** SEM RETORNO DE INFORMAÇÕES */ detalhe_custo_liquido: (args) => { return { sql: /*sql*/ ` select mcdiafam.dtaentradasaida, mcdiafam.nroempresa, PROD.SEQPRODUTO, mcdiafam.seqfamilia, mcdiafam.qtdestqinicial estqinicial, qtdestqinicial + qtdentrada - qtdsaida estqfinal, --trunc(cmdiavlrnf,2) custo cmdiavlrnf custo from consinco.mrl_custodiafam mcdiafam INNER JOIN consinco.MAP_PRODUTO PROD ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA inner join consinco.max_empresa me on me.nroempresa = mcdiafam.nroempresa and me.status = 'A' and me.dtainiciomovestoque <= trunc(sysdate)-1 --and me.nrodivisao in (2,4) where 1=1 and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 AND mcdiafam.nroempresa = ${args.nrempresa} AND PROD.SEQPRODUTO = ${args.codproduto} order by mcdiafam.dtaentradasaida desc `, }; }, /** SEM RETORNO DE INFORMAÇÕES */ detalhe_estoque_disponivel: (args) => { return { sql: /*sql*/ ` select cdia.dtaentradasaida, cdia.nroempresa, cdia.seqproduto, cdia.qtdentrada, cdia.qtdsaida, cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo from consinco.mrl_custodia cdia join consinco.max_empresa me on me.nroempresa = cdia.nroempresa and me.status = 'A' and me.dtainiciomovestoque < trunc(sysdate) and me.nrodivisao = 2 where cdia.dtaentradasaida >= sysdate - 365 and cdia.seqproduto = ${args.codproduto} and cdia.nroempresa = ${args.nrempresa} union all select mle.dtaentradasaida, mle.nroempresa, mle.seqproduto, sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) qtdentrada, sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaida, cdia.qtdestqinicial + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo from consinco.mrl_lanctoestoque mle join consinco.max_empresa me on me.nroempresa = mle.nroempresa and me.status = 'A' and me.dtainiciomovestoque < trunc(sysdate) --and me.nrodivisao = 4 join consinco.mrl_custodia cdia on cdia.dtaentradasaida = mle.dtaentradasaida and cdia.nroempresa = mle.nroempresa and cdia.seqproduto = mle.seqproduto where mle.dtaentradasaida >= sysdate - 365 --and mle.codgeraloper not in (301,302) and mle.seqproduto = ${args.codproduto} and mle.nroempresa = ${args.nrempresa} group by mle.dtaentradasaida, mle.nroempresa, mle.seqproduto, cdia.qtdestqinicial order by dtaentradasaida desc `, }; }, /** SEM RETORNO DE INFORMAÇÕES */ detalhe_estoque_transito: (args) => { return { sql: /*sql*/ ` SELECT a.nroempresa, b.seqproduto, INITCAP(C.NOMERAZAO) FORNECEDOR, A.NUMERONF, A.SERIENF, A.DTAEMISSAO, A.DTAENTRADA, B.QUANTIDADE, B.VLRITEM VALOR from consinco.MLF_AUXNOTAFISCAL A, consinco.MLF_AUXNFITEM B, consinco.GE_PESSOA C, consinco.MAP_PRODUTO D WHERE 1=1 and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL AND C.SEQPESSOA = A.SEQPESSOA AND D.SEQPRODUTO = B.SEQPRODUTO AND A.DTAEMISSAO >= SYSDATE-365 AND a.nroempresa = ${args.nrempresa} AND b.seqproduto = ${args.codproduto} order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF `, }; }, produto_detalhe_preco_ai: (args) => { return { sql: /*sql*/ ` SELECT ora_hash(mgmp.SEQPRODUTO || mgmp.NROEMPRESA || mgmp.QTDEMBALAGEM || mgmp.NROSEGMENTO) chave, mgmp.SEQPRODUTO, mgmp.NROEMPRESA, mgmp.NROSEGMENTO, mgmp.QTDEMBALAGEM || ' ' || mgmp.EMBVENDA embalagem, mgmp.PRECOVALIDNORMAL preco_embalagem, mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, trunc(mgmp.MGMPRECOVALIDO, 2) margem FROM consinco.maxv_mgmbaseprodseg mgmp INNER JOIN consinco.max_empresa me ON me.nroempresa = mgmp.NROEMPRESA AND me.status = 'A' AND me.dtainiciomovestoque <= trunc(sysdate) - 1 WHERE 1=1 AND mgmp.STATUSVENDA = 'A' --FILTROS-- ` } }, produto_detalhe_custo_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_margem_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_mdv_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_estoque_ai: (args) => { return { sql: /*sql*/ ` ` } } }, C5_mambo: { consulta: (args) => { return { sql: /*sql*/ ` SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, p.DESCCOMPLETA AS title FROM DIN_ABASTECIMENTO_PRODUTOS p WHERE 1 = 1 AND ( ( ${args.filtro} IS NOT NULL AND ( p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') ) ) OR ( ${args.ean} IS NOT NULL AND EXISTS ( SELECT 1 FROM CONSINCO.MAP_PRODCODIGO A WHERE A.SEQPRODUTO = p.SEQPRODUTO AND ISNUMERIC(A.CODACESSO) = 'S' AND A.CODACESSO = ${args.ean} ) ) OR ( ${args.filtro} IS NULL AND ${args.ean} IS NULL ) ) ORDER BY 2 `, }; }, detalhe: (args) => { return { sql: /*sql*/ ` select /*+ FIRST_ROWS(10) */ pemp.nroempresa, tcomp.comprador, nvl(mff.fornecedor, 'N/A') fornecedor, consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, pro.seqproduto, initcap(pro.desccompleta) Descricao, nvl(mapi.urlecommerceimg,'') ImagemUrl, case when trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2) = 0 then trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) else trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2) end PrecoAtacado, trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) PrecoVarejo, trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) Margem, case when trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) = trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2 ) then nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) else nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) end MargemAtacado, nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, emb.embalagem DescricaoEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, case 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)) end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, 0 EstoqueTransito, 0 EstoqueFuturo, NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, ROUND(nvl(case 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) end, 0), 3) DDV, nvl(pemp.estqminimodv,0) DDVMinimo, nvl(pemp.estqmaximodv, 0) DDVMaximo, case WHEN (select count(1) from consinco.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 = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' when pemp.formaabastecimento = 'E' then 'LOJA-EDL' when pemp.formaabastecimento is null then gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao) end FormaAbastecimento, case when pes.precovalidpromoc > 0.00 then 'PROMOCAO' when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, pempcd.qtdpendpedcompra EstoqueFuturoCD, consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, 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, --case when (pemp.statuscompra='A') then 1 else 0 end 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, nvl(pro.seqprodutobase,0) IdBase, case when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' ELSE case when mff.indindenizavaria = 'S' then case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then 'SEM TROCA' else 'TROCA FINANC' end when mff.indindenizavaria = 'N' then 'NF DEVOL' else 'SEM TROCA' end END TIPOTROCA, mfdv.padraoembcompra QUANTIDADECOMPRA, pemp.qtdreservadavda RESERVA, NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, mfdv.margemlucrodivisao, nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, case when pes3.precovalidpromoc > 0 then nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) else 0 end MargemMeuMambo, nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, vncto.dtavalidade from max_divisao md inner join max_empresa me on me.nrodivisao = md.nrodivisao and me.nroempresa not in (104,200,291,298,910,911,920,930,931,940,980) and me.dtainiciomovestoque <= trunc(sysdate) and me.status = 'A' inner join mad_segmento seg on md.nrodivisao = me.nrodivisao and me.nrosegmentoprinc = seg.nrosegmento inner join mrl_produtoempresa pemp on pemp.nroempresa = me.nroempresa left join mrl_produtoempresa pempcd on pempcd.seqproduto = pemp.seqproduto and pempcd.nroempresa in (979) left join map_classeabastec mcab on mcab.classeabastqtd = pemp.classeabastqtd and mcab.nroempresa = pemp.nroempresa and mcab.classeabastvlr = pemp.classeabastvlr inner join map_produto pro on pro.seqproduto = pemp.seqproduto inner join map_famdivisao mfdv on mfdv.seqfamilia = pro.seqfamilia and mfdv.nrodivisao = me.nrodivisao inner join max_comprador mco on mco.seqcomprador = mfdv.seqcomprador left join tb_comprador tcomp on tcomp.COMPRADOR = mco.comprador left join map_produtoimagem mapi on mapi.seqproduto = pro.seqproduto and mapi.indpricipal = 'S' inner join mrl_prodempseg pes on pes.seqproduto = pemp.seqproduto and pes.nroempresa = pemp.nroempresa and pes.nrosegmento = seg.nrosegmento and pes.qtdembalagem = 1 inner join mrl_prodempseg pes2 on pes2.nroempresa = pes.nroempresa and pes2.seqproduto = pes.seqproduto and pes2.nrosegmento = pes.nrosegmento left join mrl_prodempseg pes3 on pes3.seqproduto = pemp.seqproduto and pes3.nroempresa = pemp.nroempresa and pes3.nrosegmento = 15 and pes3.qtdembalagem = 1 inner join map_famembalagem emb on emb.seqfamilia = pro.seqfamilia and emb.qtdembalagem = 1 left join (select mffTemp.Seqfamilia, mfdvTemp.Nrodivisao, mffTemp.indindenizavaria, mfdvTemp.pzomedvisitarep, mfdvTemp.pzomedentrega, mfdvTemp.pzomedatraso, gp.fantasia fornecedor from map_famfornec mffTemp inner join ge_pessoa gp on gp.seqpessoa = mffTemp.Seqfornecedor left join maf_fornecdivisao mfdvTemp on mfdvTemp.Seqfornecedor = mffTemp.Seqfornecedor and mffTemp.Principal = 'S' ) mff on mff.seqfamilia = pro.seqfamilia and mff.nrodivisao = md.nrodivisao left join (select pvencto.nroempresa, pvencto.seqproduto, min(pvencto.vlrpreco) vlrprecovenctoprox, min(pvencto.dtavalidade) dtavalidade from consinco.mrl_prodempvencimento pvencto where 1=1 and pvencto.dtavalidade >= trunc(sysdate) and pvencto.qtdembalagem = 1 group by pvencto.nroempresa, pvencto.seqproduto ) vncto ON vncto.nroempresa = pemp.nroempresa and vncto.seqproduto = pemp.seqproduto where 1=1 --and pemp.SEQPRODUTO = 136011 --and pemp.nroempresa = 202 and md.nrodivisao in (2,4) and pemp.seqproduto = ${args.codproduto} and me.nroempresa in (${args.ctx_user_companies_for_module}) 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') `, }; }, detalhe_preco: (args) => { return { sql: /*sql*/ ` select ora_hash(mgmp.SEQPRODUTO||mgmp.NROEMPRESA||mgmp.QTDEMBALAGEM||mgmp.NROSEGMENTO) chave, mgmp.SEQPRODUTO, mgmp.NROEMPRESA, mgmp.NROSEGMENTO, mgmp.QTDEMBALAGEM || ' ' || mgmp.EMBVENDA embalagem, mgmp.PRECOVALIDNORMAL preco_embalagem, mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, trunc(mgmp.MGMPRECOVALIDO,2) margem from maxv_mgmbaseprodseg mgmp inner join max_empresa me on me.nroempresa = mgmp.NROEMPRESA and me.status = 'A' and me.dtainiciomovestoque <= trunc(sysdate)-1 and me.nrodivisao in (2,4) and me.nroempresa not in (291,298,910,911,920,930,931,940,980) AND mgmp.NROSEGMENTO IN (2,7) where 1=1 and mgmp.seqproduto = ${args.codproduto} and mgmp.nroempresa = ${args.nrempresa} AND mgmp.NROSEGMENTO NOT IN (22,23,26) and mgmp.STATUSVENDA = 'A' `, }; }, detalhe_mdv: (args) => { return { sql: /*sql*/ ` select mcdia.dtaentradasaida data, mcdia.nroempresa, mcdia.seqproduto, Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, mcdia.qtdvda qtd, mcdia.qtdestqinicial qtd_inicial from mrl_custodia mcdia inner join max_empresa me on mcdia.nroempresa = me.nroempresa where 1=1 and mcdia.qtdvda > 0 and mcdia.dtaentradasaida >= trunc(sysdate)-365 AND mcdia.nroempresa = ${args.nrempresa} AND mcdia.seqproduto = ${args.codproduto} order by dtaentradasaida desc `, }; }, detalhe_situacao_vigente: (args) => { return { sql: /*sql*/ ` select mrl_prodempseg.nroempresa, mrl_prodempseg.seqproduto, mrl_promocao.dtainicio, mrl_promocao.dtafim, mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, mrl_promocaoitem.precopromocional preco from mrl_promocaoitem, mrl_promocao, mrl_prodempseg, map_produto mp, map_famembalagem mfe, max_empresa me where 1=1 and me.nroempresa = mrl_promocao.nroempresa and me.status = 'A' and me.nrodivisao = 2 and me.dtainiciomovestoque <= trunc(sysdate)-1 and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao and mrl_promocao.centralloja = mrl_promocaoitem.centralloja and mrl_promocao.nrosegmento = mrl_promocaoitem.nrosegmento and mrl_promocaoitem.seqproduto = mrl_prodempseg.seqproduto and mrl_promocao.nrosegmento = mrl_prodempseg.nrosegmento and mrl_promocao.nroempresa = mrl_prodempseg.nroempresa and mrl_promocaoitem.qtdembalagem = mrl_prodempseg.qtdembalagem and mp.seqproduto = mrl_prodempseg.seqproduto and mfe.seqfamilia = mp.seqfamilia and mfe.qtdembalagem = mrl_prodempseg.qtdembalagem and nvl(mrl_promocao.tipopromoc, 'N') in ('N', 'F', 'A', 'S') and mrl_promocao.dtainicio >= trunc(sysdate)-90--365 AND mrl_prodempseg.nroempresa = ${args.nrempresa} AND mrl_prodempseg.seqproduto = ${args.codproduto} order by mrl_promocao.dtainicio desc `, }; }, detalhe_custo_liquido: (args) => { return { sql: /*sql*/ ` select mcdiafam.dtaentradasaida, mcdiafam.nroempresa, PROD.SEQPRODUTO, mcdiafam.seqfamilia, mcdiafam.qtdestqinicial estqinicial, qtdestqinicial + qtdentrada - qtdsaida estqfinal, --trunc(cmdiavlrnf,2) custo cmdiavlrnf custo from mrl_custodiafam mcdiafam INNER JOIN MAP_PRODUTO PROD ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA inner join max_empresa me on me.nroempresa = mcdiafam.nroempresa and me.status = 'A' and me.dtainiciomovestoque <= trunc(sysdate)-1 and me.nrodivisao in (2,4) where 1=1 and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 AND mcdiafam.nroempresa = ${args.nrempresa} AND PROD.SEQPRODUTO = ${args.codproduto} order by mcdiafam.dtaentradasaida desc `, }; }, detalhe_estoque_disponivel: (args) => { return { sql: /*sql*/ ` select cdia.dtaentradasaida, cdia.nroempresa, cdia.seqproduto, cdia.qtdentrada, cdia.qtdsaida, cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo from mrl_custodia cdia join max_empresa me on me.nroempresa = cdia.nroempresa and me.status = 'A' and me.dtainiciomovestoque < trunc(sysdate) and me.nrodivisao = 2 where cdia.dtaentradasaida >= sysdate - 365 and cdia.seqproduto = ${args.codproduto} and cdia.nroempresa = ${args.nrempresa} union all select mle.dtaentradasaida, mle.nroempresa, mle.seqproduto, sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) qtdentrada, sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaida, cdia.qtdestqinicial + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo from mrl_lanctoestoque mle join max_empresa me on me.nroempresa = mle.nroempresa and me.status = 'A' and me.dtainiciomovestoque < trunc(sysdate) and me.nrodivisao = 4 join mrl_custodia cdia on cdia.dtaentradasaida = mle.dtaentradasaida and cdia.nroempresa = mle.nroempresa and cdia.seqproduto = mle.seqproduto where mle.dtaentradasaida >= sysdate - 365 and mle.codgeraloper not in (301,302) and mle.seqproduto = ${args.codproduto} and mle.nroempresa = ${args.nrempresa} group by mle.dtaentradasaida, mle.nroempresa, mle.seqproduto, cdia.qtdestqinicial order by dtaentradasaida desc `, }; }, detalhe_estoque_transito: (args) => { return { sql: /*sql*/ ` SELECT a.nroempresa, b.seqproduto, INITCAP(C.NOMERAZAO) FORNECEDOR, A.NUMERONF, A.SERIENF, A.DTAEMISSAO, A.DTAENTRADA, B.QUANTIDADE, B.VLRITEM VALOR from MLF_AUXNOTAFISCAL A, MLF_AUXNFITEM B, GE_PESSOA C, MAP_PRODUTO D WHERE 1=1 and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL AND C.SEQPESSOA = A.SEQPESSOA AND D.SEQPRODUTO = B.SEQPRODUTO AND A.DTAEMISSAO >= SYSDATE-365 AND a.nroempresa = ${args.nrempresa} AND b.seqproduto = ${args.codproduto} order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF `, }; }, produto_detalhe_preco_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_estoque_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_custo_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_margem_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_mdv_ai: (args) => { return { sql: /*sql*/ ` ` } }, }, C5_big: { consulta: (args) => { return { sql: /*sql*/ ` SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, p.DESCCOMPLETA AS title FROM CONSINCO.MAP_PRODUTO p WHERE 1 = 1 AND ( -- Bloco 1 - Filtro por Código Interno ou Descrição ( ${args.filtro} IS NOT NULL AND ( p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') ) ) OR -- Bloco 2 - Filtro por EAN (Código de Barras) ( ${args.ean} IS NOT NULL AND EXISTS ( SELECT 1 FROM CONSINCO.MAP_PRODCODIGO A WHERE A.SEQPRODUTO = p.SEQPRODUTO AND REGEXP_LIKE(A.CODACESSO, '^[0-9]+$') AND A.CODACESSO = ${args.ean} ) ) OR -- Bloco 3 - Caso ambos os filtros estejam nulos (Traz tudo) ( ${args.filtro} IS NULL AND ${args.ean} IS NULL ) ) ORDER BY 2 `, }; }, detalhe: (args) => { return { sql: /*sql*/ ` select /*+ FIRST_ROWS(10) */ DISTINCT pemp.nroempresa, --(SELECT COMPRADOR FROM tb_comprador tcomp WHERE tcomp.COMPRADOR = mco.comprador) AS comprador, 'BIG' AS comprador, nvl(mff.fornecedor, 'N/A') fornecedor, (select max(b_cat.caminhocompleto) from consinco.map_famdivcateg a_cat, consinco.map_categoria b_cat where a_cat.seqcategoria = b_cat.seqcategoria and a_cat.nrodivisao = b_cat.nrodivisao and a_cat.seqfamilia = pro.seqfamilia and a_cat.nrodivisao = me.nrodivisao and b_cat.statuscategor = 'A' and a_cat.status = 'A' and b_cat.nivelhierarquia = 1 and b_cat.tipcategoria = nvl('M', 'M')) categoria, pro.seqproduto, initcap(pro.desccompleta) Descricao, nvl(mapi.urlecommerceimg,'') ImagemUrl, case when trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2) = 0 then trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) else trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2) end PrecoAtacado, trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) PrecoVarejo, trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg.nrosegmentoprinc, seg_mg.qtdembalagem, (round( ( pe_mg.CMULTVLRNF + pe_mg.CMULTIPI - decode( 'L', 'L', pe_mg.CMULTCREDICMS + decode(nvl(fam_mg.indmonopiscofins, 'N')|| nvl(emp_mg.indfaturaipi, 'N')||nvl(emp_mg.indimportadora, 'N'), 'SNN', 0, nvl(pe_mg.cmultcredpis, 0) + nvl(pe_mg.cmultcredcofins, 0)), 0) + pe_mg.CMULTICMSST + pe_mg.CMULTDESPNF + pe_mg.CMULTDESPFORANF - pe_mg.CMULTDCTOFORANF - nvl( consinco.fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA ), 0 ) + nvl( consinco.fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg.qtdembalagem, 4 ) * case when (pr_mg.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg.percacresccustorelacvig,1) else 1 end ),decode(seg_mg.precovalidpromoc,0,seg_mg.precovalidnormal,seg_mg.precovalidpromoc))),2) from consinco.max_Empresa emp_mg join consinco.mrl_prodempseg seg_mg on seg_mg.nroempresa = emp_mg.nroempresa and seg_mg.nrosegmento = emp_mg.nrosegmentoprinc and seg_mg.qtdembalagem = 1 and seg_mg.seqproduto = pemp.seqproduto join consinco.map_produto pr_mg on pr_mg.seqproduto = seg_mg.seqproduto join consinco.mrl_produtoempresa pe_mg on pe_mg.nroempresa = emp_mg.nroempresa and pe_mg.seqproduto = nvl(pr_mg.seqprodutobase, pr_mg.seqproduto) join consinco.map_familia fam_mg on fam_mg.seqfamilia = pr_mg.seqfamilia where emp_mg.nroempresa = pemp.nroempresa),0) Margem, case when trunc(case when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) end, 2) = trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2 ) then nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg2.nrosegmentoprinc, seg_mg2.qtdembalagem, (round( ( pe_mg2.CMULTVLRNF + pe_mg2.CMULTIPI - decode( 'L', 'L', pe_mg2.CMULTCREDICMS + decode(nvl(fam_mg2.indmonopiscofins, 'N')|| nvl(emp_mg2.indfaturaipi, 'N')||nvl(emp_mg2.indimportadora, 'N'), 'SNN', 0, nvl(pe_mg2.cmultcredpis, 0) + nvl(pe_mg2.cmultcredcofins, 0)), 0) + pe_mg2.CMULTICMSST + pe_mg2.CMULTDESPNF + pe_mg2.CMULTDESPFORANF - pe_mg2.CMULTDCTOFORANF - nvl( consinco.fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA ), 0 ) + nvl( consinco.fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg2.qtdembalagem, 4 ) * case when (pr_mg2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg2.percacresccustorelacvig,1) else 1 end ),decode(seg_mg2.precovalidpromoc,0,seg_mg2.precovalidnormal,seg_mg2.precovalidpromoc))),2) from consinco.max_Empresa emp_mg2 join consinco.mrl_prodempseg seg_mg2 on seg_mg2.nroempresa = emp_mg2.nroempresa and seg_mg2.nrosegmento = emp_mg2.nrosegmentoprinc and seg_mg2.qtdembalagem = 1 and seg_mg2.seqproduto = pemp.seqproduto join consinco.map_produto pr_mg2 on pr_mg2.seqproduto = seg_mg2.seqproduto join consinco.mrl_produtoempresa pe_mg2 on pe_mg2.nroempresa = emp_mg2.nroempresa and pe_mg2.seqproduto = nvl(pr_mg2.seqprodutobase, pr_mg2.seqproduto) join consinco.map_familia fam_mg2 on fam_mg2.seqfamilia = pr_mg2.seqfamilia where emp_mg2.nroempresa = pemp.nroempresa),0) else nvl((select case when at2_q.precovalidpromoc > 0 then round(at2_q.mgmprecovdapromoc,2) when at2_q.precovalidnormal > 0 then round(at2_q.mgmprecominvdaempresa,2) end from ( SELECT x_at2.precovalidnormal, x_at2.precovalidpromoc, decode (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem), 0, 0, ((((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) - ( (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 else decode(m_at2.metodoprecificacao, 'B', 0, 'I', 0, decode(h_at2.pericmsestimativa, 0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) end / 100)) + (((b_at2.cmultvlrnf + b_at2.cmultipi - decode(m_at2.metodoprecificacao, 'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 'I', DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf - nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then nvl((consinco.fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa, 0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) else 0 end) * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)) + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + decode(m_at2.metodoprecificacao,'B', 0, nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) - decode(m_at2.metodocalcrentab,'L', ( (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 else decode(m_at2.metodoprecificacao,'B',0,'I',0, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) end / 100)) + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) from mrl_prodempseg a_fp where a_fp.seqproduto = x_at2.seqproduto and a_fp.nroempresa = x_at2.nroempresa and a_fp.nrosegmento = o_at2.nrosegmento and a_fp.precovalidnormal > 0 and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * decode(m_at2.metodoprecificacao,'B',0, nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) )) * 100) as mgmprecominvdaempresa, decode(round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2), 0, 0, ((round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - ( (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * (decode(m_at2.metodoprecificacao,'B',0,'I',0, case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) end) / 100)) + (((b_at2.cmultvlrnf + b_at2.cmultipi - decode(m_at2.metodoprecificacao,'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 'I', DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf - nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then nvl((consinco.fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) else 0 end) * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaopromfs, nvl(n_at2.percomissaopromoc,0)), nvl(n_at2.percomissaopromoc,0)) + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + decode(m_at2.metodoprecificacao,'B',0, nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - decode(m_at2.metodocalcrentab,'L', ( (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * (decode(m_at2.metodoprecificacao,'B',0,'I',0, case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) end) / 100)) + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * decode(m_at2.metodoprecificacao,'B',0, nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) )) * 100) as mgmprecovdapromoc from consinco.max_empresa h_at2, consinco.map_produto a_at2, consinco.mrl_produtoempresa b_at2, consinco.map_famdivisao c_at2, consinco.map_famdivcateg d_at2, consinco.map_categoria e_at2, consinco.map_famembalagem i_at2, consinco.map_famembalagem j_at2, consinco.map_famembalagem k_at2, consinco.map_famembalagem tr_at2, consinco.map_tributacaouf f_at2, consinco.map_familia l_at2, consinco.mrl_prodempseg x_at2, consinco.max_divisao m_at2, consinco.mad_famsegmento o_at2, consinco.map_classifabc n_at2, consinco.mad_segmento p_at2, consinco.mad_parametro q_at2, consinco.map_famfornec r_at2, consinco.map_regimetributacao t_at2, consinco.max_parametro pd_at2 where 1=1 and b_at2.nroempresa = h_at2.nroempresa and a_at2.seqproduto = b_at2.seqproduto and c_at2.seqfamilia = a_at2.seqfamilia and c_at2.nrodivisao = h_at2.nrodivisao and d_at2.seqfamilia = a_at2.seqfamilia and d_at2.nrodivisao = h_at2.nrodivisao and d_at2.status = 'A' and e_at2.seqcategoria = d_at2.seqcategoria and e_at2.tipcategoria = 'M' and e_at2.actfamilia = 'S' and e_at2.nrodivisao = h_at2.nrodivisao and f_at2.nrotributacao = c_at2.nrotributacao and f_at2.ufempresa = nvl(h_at2.ufformacaopreco, h_at2.uf) and f_at2.ufclientefornec = h_at2.uf and f_at2.nroregtributacao = nvl(h_at2.nroregtributacao, 0) and f_at2.tiptributacao = decode(m_at2.tipdivisao,'A','SC','SN') and i_at2.seqfamilia = a_at2.seqfamilia and i_at2.qtdembalagem = nvl(r_at2.padraoembcomprafornec, c_at2.padraoembcompra) and j_at2.seqfamilia = o_at2.seqfamilia and j_at2.qtdembalagem = o_at2.padraoembvenda and k_at2.seqfamilia = a_at2.seqfamilia and k_at2.qtdembalagem = x_at2.qtdembalagem and tr_at2.seqfamilia = a_at2.seqfamilia and tr_at2.qtdembalagem = nvl(c_at2.padraoembtransf, o_at2.padraoembvenda) and l_at2.seqfamilia = a_at2.seqfamilia and x_at2.seqproduto = a_at2.seqproduto and x_at2.nroempresa = h_at2.nroempresa and m_at2.nrodivisao = h_at2.nrodivisao and o_at2.seqfamilia = a_at2.seqfamilia and o_at2.nrosegmento = x_at2.nrosegmento and n_at2.nrosegmento = o_at2.nrosegmento and n_at2.classifcomercabc = o_at2.classifcomercabc and x_at2.nrosegmento = p_at2.nrosegmento and q_at2.nroempresa = h_at2.nroempresa and r_at2.seqfamilia = a_at2.seqfamilia and t_at2.nroregtributacao = f_at2.nroregtributacao and h_at2.nrosegmentoprinc = o_at2.nrosegmento and pd_at2.grupo = 'PRODUTO' and pd_at2.parametro = 'UTIL_FORMA_ABASTEC_PROD' and pd_at2.nroempresa = 0 and x_at2.statusvenda = 'A' and x_at2.qtdembalagem = 1 and b_at2.nroempresa = pemp.nroempresa and b_at2.seqproduto = pemp.seqproduto and r_at2.rowid = decode((select min(id) from maxx_selecrowid where maxx_selecrowid.sequencia = 4 and maxx_selecrowid.seqfamilia = r_at2.seqfamilia), null, (select min(mfr2.rowid) from consinco.map_famfornec mfr2 where mfr2.seqfamilia = r_at2.seqfamilia and mfr2.principal = 'S'), (select min(id) from maxx_selecrowid where maxx_selecrowid.sequencia = 4 and maxx_selecrowid.seqfamilia = r_at2.seqfamilia)) ) at2_q),0) end MargemAtacado, nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, emb.embalagem DescricaoEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, case 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)) end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, 0 EstoqueTransito, 0 EstoqueFuturo, NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, ROUND(nvl(case 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) end, 0), 3) DDV, nvl(pemp.estqminimodv,0) DDVMinimo, nvl(pemp.estqmaximodv, 0) DDVMaximo, case 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 = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' when pemp.formaabastecimento = 'E' then 'LOJA-EDL' when pemp.formaabastecimento is null then ( select case when mfd_fa.formaabastecimento = 'I' then 'ARMAZENAGEM' when mfd_fa.formaabastecimento = 'C' then 'CROSS' when mfd_fa.formaabastecimento = 'N' then 'CENTRAL-EDL' when mfd_fa.formaabastecimento = 'E' then 'LOJA-EDL' when mfd_fa.formaabastecimento = 'F' then 'FRACIONADO' end from consinco.map_famdivisao mfd_fa where mfd_fa.seqfamilia = pro.seqfamilia and mfd_fa.nrodivisao = md.nrodivisao) end FormaAbastecimento, case when pes.precovalidpromoc > 0.00 then 'PROMOCAO' when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, (select max(mnf_de.Dtaentrada) from mlf_notafiscal mnf_de inner join mlf_nfitem mnfi_de on mnfi_de.NUMERONF = mnf_de.NUMERONF and mnfi_de.SEQPESSOA = mnf_de.SEQPESSOA and mnfi_de.SERIENF = mnf_de.SERIENF and mnfi_de.TIPNOTAFISCAL = mnf_de.TIPNOTAFISCAL and mnfi_de.NROEMPRESA = mnf_de.NROEMPRESA inner join consinco.max_parametro mp_de on mp_de.nroempresa = mnf_de.nroempresa and mp_de.parametro = 'CGO_ENTR_BONIF_NFCOMPRA' where mnf_de.tipnotafiscal = 'E' and mnf_de.statusnf <> 'C' and mnfi_de.tipitem = 'R' and mnf_de.dtaentrada >= trunc(sysdate - 365) and mnf_de.dtaentrada <= trunc(sysdate - 1) and mnf_de.nroempresa = pemp.nroempresa and mnfi_de.seqproduto = pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, CASE WHEN (select count(*) from consinco.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, pemp.statuscompra, nvl((select min(qtdembalagem) from consinco.mrl_prodempseg where nroempresa = me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, nvl(pro.seqprodutobase,0) IdBase, case when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' ELSE case when mff.indindenizavaria = 'N' then 'NF DEVOL' else 'SEM TROCA' end END TIPOTROCA, mfdv.padraoembcompra QUANTIDADECOMPRA, pemp.qtdreservadavda RESERVA, NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, mfdv.margemlucrodivisao, nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, case when pes3.precovalidpromoc > 0 then nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 15, seg_mbo1.qtdembalagem, (round( ( pe_mbo1.CMULTVLRNF + pe_mbo1.CMULTIPI - decode( 'L', 'L', pe_mbo1.CMULTCREDICMS + decode(nvl(fam_mbo1.indmonopiscofins, 'N')|| nvl(emp_mbo1.indfaturaipi, 'N')||nvl(emp_mbo1.indimportadora, 'N'), 'SNN', 0, nvl(pe_mbo1.cmultcredpis, 0) + nvl(pe_mbo1.cmultcredcofins, 0)), 0) + pe_mbo1.CMULTICMSST + pe_mbo1.CMULTDESPNF + pe_mbo1.CMULTDESPFORANF - pe_mbo1.CMULTDCTOFORANF - nvl( consinco.fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA ), 0 ) + nvl( consinco.fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo1.qtdembalagem, 4 ) * case when (pr_mbo1.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo1.percacresccustorelacvig,1) else 1 end ),decode(seg_mbo1.precovalidpromoc,0,seg_mbo1.precovalidnormal,seg_mbo1.precovalidpromoc))),2) from consinco.max_Empresa emp_mbo1 join consinco.mrl_prodempseg seg_mbo1 on seg_mbo1.nroempresa = emp_mbo1.nroempresa and seg_mbo1.qtdembalagem = 1 and seg_mbo1.nrosegmento = 15 and seg_mbo1.seqproduto = pemp.seqproduto join consinco.map_produto pr_mbo1 on pr_mbo1.seqproduto = seg_mbo1.seqproduto join consinco.mrl_produtoempresa pe_mbo1 on pe_mbo1.nroempresa = emp_mbo1.nroempresa and pe_mbo1.seqproduto = nvl(pr_mbo1.seqprodutobase, pr_mbo1.seqproduto) join consinco.map_familia fam_mbo1 on fam_mbo1.seqfamilia = pr_mbo1.seqfamilia where emp_mbo1.nroempresa = pemp.nroempresa),0) else 0 end MargemMeuMambo, nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 2, seg_mbo2.qtdembalagem, (round( ( pe_mbo2.CMULTVLRNF + pe_mbo2.CMULTIPI - decode( 'L', 'L', pe_mbo2.CMULTCREDICMS + decode(nvl(fam_mbo2.indmonopiscofins, 'N')|| nvl(emp_mbo2.indfaturaipi, 'N')||nvl(emp_mbo2.indimportadora, 'N'), 'SNN', 0, nvl(pe_mbo2.cmultcredpis, 0) + nvl(pe_mbo2.cmultcredcofins, 0)), 0) + pe_mbo2.CMULTICMSST + pe_mbo2.CMULTDESPNF + pe_mbo2.CMULTDESPFORANF - pe_mbo2.CMULTDCTOFORANF - nvl( consinco.fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA ), 0 ) + nvl( consinco.fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo2.qtdembalagem, 4 ) * case when (pr_mbo2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo2.percacresccustorelacvig,1) else 1 end ),seg_mbo2.precovalidnormal)),2) from consinco.max_Empresa emp_mbo2 join consinco.mrl_prodempseg seg_mbo2 on seg_mbo2.nroempresa = emp_mbo2.nroempresa and seg_mbo2.qtdembalagem = 1 and seg_mbo2.nrosegmento = 2 and seg_mbo2.seqproduto = pemp.seqproduto join consinco.map_produto pr_mbo2 on pr_mbo2.seqproduto = seg_mbo2.seqproduto join consinco.mrl_produtoempresa pe_mbo2 on pe_mbo2.nroempresa = emp_mbo2.nroempresa and pe_mbo2.seqproduto = nvl(pr_mbo2.seqprodutobase, pr_mbo2.seqproduto) join consinco.map_familia fam_mbo2 on fam_mbo2.seqfamilia = pr_mbo2.seqfamilia where emp_mbo2.nroempresa = pemp.nroempresa),0) MargemNormal, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, vncto.dtavalidade from consinco.max_divisao md inner join consinco.max_empresa me on me.nrodivisao = md.nrodivisao and me.dtainiciomovestoque <= trunc(sysdate) and me.status = 'A' inner join consinco.mad_segmento seg on md.nrodivisao = me.nrodivisao and me.nrosegmentoprinc = seg.nrosegmento inner join consinco.mrl_produtoempresa pemp on pemp.nroempresa = me.nroempresa left join consinco.mrl_produtoempresa pempcd on pempcd.seqproduto = pemp.seqproduto left join consinco.map_classeabastec mcab on mcab.classeabastqtd = pemp.classeabastqtd and mcab.nroempresa = pemp.nroempresa and mcab.classeabastvlr = pemp.classeabastvlr inner join consinco.map_produto pro on pro.seqproduto = pemp.seqproduto inner join consinco.map_famdivisao mfdv on mfdv.seqfamilia = pro.seqfamilia and mfdv.nrodivisao = me.nrodivisao inner join consinco.max_comprador mco on mco.seqcomprador = mfdv.seqcomprador left join consinco.map_produtoimagem mapi on mapi.seqproduto = pro.seqproduto and mapi.indpricipal = 'S' inner join consinco.mrl_prodempseg pes on pes.seqproduto = pemp.seqproduto and pes.nroempresa = pemp.nroempresa and pes.nrosegmento = seg.nrosegmento and pes.qtdembalagem = 1 inner join consinco.mrl_prodempseg pes2 on pes2.nroempresa = pes.nroempresa and pes2.seqproduto = pes.seqproduto and pes2.nrosegmento = pes.nrosegmento left join consinco.mrl_prodempseg pes3 on pes3.seqproduto = pemp.seqproduto and pes3.nroempresa = pemp.nroempresa --and pes3.nrosegmento = 15 and pes3.qtdembalagem = 1 inner join consinco.map_famembalagem emb on emb.seqfamilia = pro.seqfamilia and emb.qtdembalagem = 1 left join (select mffTemp.Seqfamilia, mfdvTemp.Nrodivisao, mffTemp.indindenizavaria, mfdvTemp.pzomedvisitarep, mfdvTemp.pzomedentrega, mfdvTemp.pzomedatraso, gp.fantasia fornecedor from consinco.map_famfornec mffTemp inner join ge_pessoa gp on gp.seqpessoa = mffTemp.Seqfornecedor left join maf_fornecdivisao mfdvTemp on mfdvTemp.Seqfornecedor = mffTemp.Seqfornecedor and mffTemp.Principal = 'S' ) mff on mff.seqfamilia = pro.seqfamilia and mff.nrodivisao = md.nrodivisao left join (select pvencto.nroempresa, pvencto.seqproduto, min(pvencto.vlrpreco) vlrprecovenctoprox, min(pvencto.dtavalidade) dtavalidade from consinco.mrl_prodempvencimento pvencto where 1=1 and pvencto.dtavalidade >= trunc(sysdate) and pvencto.qtdembalagem = 1 group by pvencto.nroempresa, pvencto.seqproduto ) vncto ON vncto.nroempresa = pemp.nroempresa and vncto.seqproduto = pemp.seqproduto where 1=1 --and pemp.SEQPRODUTO = 136011 --and pemp.nroempresa = 202 and md.nrodivisao in (1) and pemp.seqproduto = ${args.codproduto} and me.nroempresa in (${args.ctx_user_companies_for_module}) and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) from consinco.mrl_prodempseg pes3 where pes3.nroempresa = pes.nroempresa and pes3.seqproduto = pes.seqproduto and pes3.nrosegmento = pes.nrosegmento and pes3.statusvenda = 'A') `, }; }, detalhe_preco: (args) => { return { sql: /*sql*/ ` select ora_hash(mgmp.SEQPRODUTO||mgmp.NROEMPRESA||mgmp.QTDEMBALAGEM||mgmp.NROSEGMENTO) chave, mgmp.SEQPRODUTO, mgmp.NROEMPRESA, mgmp.NROSEGMENTO, mgmp.QTDEMBALAGEM || ' ' || mgmp.EMBVENDA embalagem, mgmp.PRECOVALIDNORMAL preco_embalagem, mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, trunc(mgmp.MGMPRECOVALIDO,2) margem from consinco.maxv_mgmbaseprodseg mgmp inner join consinco.max_empresa me on me.nroempresa = mgmp.NROEMPRESA and me.status = 'A' and me.dtainiciomovestoque <= trunc(sysdate)-1 --and me.nrodivisao in (2,4) --and me.nroempresa not in (291,298,910,911,920,930,931,940,980) --AND mgmp.NROSEGMENTO IN (2,7) where 1=1 and mgmp.seqproduto = ${args.codproduto} and mgmp.nroempresa = ${args.nrempresa} --AND mgmp.NROSEGMENTO NOT IN (22,23,26) and mgmp.STATUSVENDA = 'A' `, }; }, /** SEM RETORNO DE INFORMAÇÕES */ detalhe_mdv: (args) => { return { sql: /*sql*/ ` select mcdia.dtaentradasaida data, mcdia.nroempresa, mcdia.seqproduto, Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, mcdia.qtdvda qtd, mcdia.qtdestqinicial qtd_inicial from consinco.mrl_custodia mcdia inner join consinco.max_empresa me on mcdia.nroempresa = me.nroempresa where 1=1 and mcdia.qtdvda > 0 and mcdia.dtaentradasaida >= trunc(sysdate)-365 AND mcdia.nroempresa = ${args.nrempresa} AND mcdia.seqproduto = ${args.codproduto} order by dtaentradasaida desc `, }; }, detalhe_situacao_vigente: (args) => { return { sql: /*sql*/ ` select mrl_prodempseg.nroempresa, mrl_prodempseg.seqproduto, mrl_promocao.dtainicio, mrl_promocao.dtafim, mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, mrl_promocaoitem.precopromocional preco from consinco.mrl_promocaoitem, consinco.mrl_promocao, consinco.mrl_prodempseg, consinco.map_produto mp, consinco.map_famembalagem mfe, consinco.max_empresa me where 1=1 and me.nroempresa = mrl_promocao.nroempresa and me.status = 'A' --and me.nrodivisao = 2 and me.dtainiciomovestoque <= trunc(sysdate)-1 and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao and mrl_promocao.centralloja = mrl_promocaoitem.centralloja and mrl_promocao.nrosegmento = mrl_promocaoitem.nrosegmento and mrl_promocaoitem.seqproduto = mrl_prodempseg.seqproduto and mrl_promocao.nrosegmento = mrl_prodempseg.nrosegmento and mrl_promocao.nroempresa = mrl_prodempseg.nroempresa and mrl_promocaoitem.qtdembalagem = mrl_prodempseg.qtdembalagem and mp.seqproduto = mrl_prodempseg.seqproduto and mfe.seqfamilia = mp.seqfamilia and mfe.qtdembalagem = mrl_prodempseg.qtdembalagem and nvl(mrl_promocao.tipopromoc, 'N') in ('N', 'F', 'A', 'S') and mrl_promocao.dtainicio >= trunc(sysdate)-90--365 AND mrl_prodempseg.nroempresa = ${args.nrempresa} AND mrl_prodempseg.seqproduto = ${args.codproduto} order by mrl_promocao.dtainicio desc `, }; }, /** SEM RETORNO DE INFORMAÇÕES */ detalhe_custo_liquido: (args) => { return { sql: /*sql*/ ` select mcdiafam.dtaentradasaida, mcdiafam.nroempresa, PROD.SEQPRODUTO, mcdiafam.seqfamilia, mcdiafam.qtdestqinicial estqinicial, qtdestqinicial + qtdentrada - qtdsaida estqfinal, --trunc(cmdiavlrnf,2) custo cmdiavlrnf custo from consinco.mrl_custodiafam mcdiafam INNER JOIN consinco.MAP_PRODUTO PROD ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA inner join consinco.max_empresa me on me.nroempresa = mcdiafam.nroempresa and me.status = 'A' and me.dtainiciomovestoque <= trunc(sysdate)-1 --and me.nrodivisao in (2,4) where 1=1 and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 AND mcdiafam.nroempresa = ${args.nrempresa} AND PROD.SEQPRODUTO = ${args.codproduto} order by mcdiafam.dtaentradasaida desc `, }; }, /** SEM RETORNO DE INFORMAÇÕES */ detalhe_estoque_disponivel: (args) => { return { sql: /*sql*/ ` select cdia.dtaentradasaida, cdia.nroempresa, cdia.seqproduto, cdia.qtdentrada, cdia.qtdsaida, cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo from consinco.mrl_custodia cdia join consinco.max_empresa me on me.nroempresa = cdia.nroempresa and me.status = 'A' and me.dtainiciomovestoque < trunc(sysdate) and me.nrodivisao = 2 where cdia.dtaentradasaida >= sysdate - 365 and cdia.seqproduto = ${args.codproduto} and cdia.nroempresa = ${args.nrempresa} union all select mle.dtaentradasaida, mle.nroempresa, mle.seqproduto, sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) qtdentrada, sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaida, cdia.qtdestqinicial + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo from consinco.mrl_lanctoestoque mle join consinco.max_empresa me on me.nroempresa = mle.nroempresa and me.status = 'A' and me.dtainiciomovestoque < trunc(sysdate) --and me.nrodivisao = 4 join consinco.mrl_custodia cdia on cdia.dtaentradasaida = mle.dtaentradasaida and cdia.nroempresa = mle.nroempresa and cdia.seqproduto = mle.seqproduto where mle.dtaentradasaida >= sysdate - 365 --and mle.codgeraloper not in (301,302) and mle.seqproduto = ${args.codproduto} and mle.nroempresa = ${args.nrempresa} group by mle.dtaentradasaida, mle.nroempresa, mle.seqproduto, cdia.qtdestqinicial order by dtaentradasaida desc `, }; }, /** SEM RETORNO DE INFORMAÇÕES */ detalhe_estoque_transito: (args) => { return { sql: /*sql*/ ` SELECT a.nroempresa, b.seqproduto, INITCAP(C.NOMERAZAO) FORNECEDOR, A.NUMERONF, A.SERIENF, A.DTAEMISSAO, A.DTAENTRADA, B.QUANTIDADE, B.VLRITEM VALOR from consinco.MLF_AUXNOTAFISCAL A, consinco.MLF_AUXNFITEM B, consinco.GE_PESSOA C, consinco.MAP_PRODUTO D WHERE 1=1 and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL AND C.SEQPESSOA = A.SEQPESSOA AND D.SEQPRODUTO = B.SEQPRODUTO AND A.DTAEMISSAO >= SYSDATE-365 AND a.nroempresa = ${args.nrempresa} AND b.seqproduto = ${args.codproduto} order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF `, }; }, produto_detalhe_preco_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_custo_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_margem_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_mdv_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_estoque_ai: (args) => { return { sql: /*sql*/ ` ` } } }, Verdemar: { consulta: (args) => { return { sql: /*sql*/ ` SELECT CAST(p.codigo AS NUMBER(15)) AS code, p.nome AS title FROM produtos p WHERE 1 = 1 AND p.inativo = 'N' AND ( ( ${args.filtro} IS NOT NULL AND ( CAST(p.codigo AS VARCHAR2(15)) LIKE '%' || ${args.filtro} || '%' OR UPPER(p.nome) LIKE UPPER('%' || ${args.filtro} || '%') ) ) OR ( ${args.ean} IS NOT NULL AND EXISTS ( SELECT 1 FROM produtos_ean ean WHERE ean.CODIGO = p.codigo AND ean.CODBARRA = ${args.ean} ) ) OR ( ${args.filtro} IS NULL AND ${args.ean} IS NULL ) ) ORDER BY p.nome ` } }, detalhe: (args) => { return { 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} AND ent.loja IN (${args.ctx_user_companies_for_module}) ) SELECT l.codigo AS idempresa, l.codigo AS nroempresa, 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 AND pm.data >= TRUNC(SYSDATE) - 50 -- limita o scan ) 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.vendapadrao = '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) => { return { sql: /*sql*/ ` SELECT CAST(p.codigo AS VARCHAR2(15)) || CAST(l.codigo AS VARCHAR2(10)) || CAST(ean.quantidade AS VARCHAR2(10)) || '0' AS chave, p.codigo AS SEQPRODUTO, l.codigo AS NROEMPRESA, 0 AS NROSEGMENTO, ean.quantidade || ' ' || ean.embalagem AS embalagem, pp.precovenda AS preco_embalagem, pp.precovenda / GREATEST(ean.quantidade, 1) AS preco_unidade, ROUND(pp.sugestao, 2) AS margem 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 INNER JOIN verdemar.produtos_ean ean ON ean.codigo = p.codigo AND ean.vendapadrao = 'S' WHERE p.codigo = ${args.codproduto} AND l.codigo = ${args.nrempresa} AND p.inativo = 'N' ` } }, detalhe_mdv: (args) => { return { sql: /*sql*/ ` WITH cte_extrato AS ( SELECT /*+ MATERIALIZE */ TRUNC(pe.datamovimento) AS dia, MAX(pe.saldo + pe.quantidade) KEEP (DENSE_RANK FIRST ORDER BY pe.integradorflaginc) AS estoque_inicial FROM verdemar.produtos_extrato pe WHERE pe.codigo = :codproduto AND pe.loja = :nrempresa AND pe.tipoorigem = 0 AND pe.datamovimento >= TRUNC(SYSDATE) - 365 -- mesma janela do movimento GROUP BY TRUNC(pe.datamovimento) ) SELECT TRUNC(pm.data) AS data, pm.loja AS nroempresa, pm.codigo AS seqproduto, DECODE(TO_CHAR(TRUNC(pm.data), 'D'), '1', 'Domingo', '2', 'Segunda', '3', 'Terça', '4', 'Quarta', '5', 'Quinta', '6', 'Sexta', '7', 'Sábado' ) AS diasemana, SUM(pm.quantidade) AS qtd, NVL(ext.estoque_inicial, 0) AS qtd_inicial FROM verdemar.produtos_movimento pm LEFT JOIN cte_extrato ext ON ext.dia = TRUNC(pm.data) WHERE pm.quantidade > 0 AND TRUNC(pm.data) >= TRUNC(SYSDATE) - 365 AND pm.loja = :nrempresa AND pm.codigo = :codproduto GROUP BY TRUNC(pm.data), pm.loja, pm.codigo, NVL(ext.estoque_inicial, 0) ORDER BY TRUNC(pm.data) DESC ` } }, detalhe_situacao_vigente: (args) => { return { sql: /*sql*/ ` SELECT l.codigo AS nroempresa, p.codigo AS seqproduto, prom.datainicial AS dtainicio, prom.datafinal AS dtafim, ean.quantidade || ' ' || ean.embalagem AS embalagem, prom.precopromocao AS preco FROM promocao prom INNER JOIN produtos p ON p.codigo = prom.codigo INNER JOIN produtos_loja pl ON pl.codigo = p.codigo INNER JOIN loja l ON l.codigo = pl.loja AND l.codigo = prom.loja LEFT JOIN produtos_ean ean ON ean.codigo = p.codigo AND ean.vendapadrao = 'S' WHERE prom.datainicial >= TRUNC(SYSDATE) - 90 AND prom.loja = ${args.nrempresa} AND prom.codigo = ${args.codproduto} ORDER BY prom.datainicial DESC ` } }, detalhe_custo_liquido: (args) => { return { sql: /*sql*/ ` SELECT e.dataentrada AS dtaentradasaida, e.loja AS nroempresa, ei.codigo AS SEQPRODUTO, 0 AS seqfamilia, 0 AS estqinicial, 0 AS estqfinal, ei.custoliquido AS custo FROM entradas e INNER JOIN entradas_itens ei ON ei.chaveentrada = e.chave INNER JOIN operacoes_entradas oe ON oe.codigo = e.operacao WHERE e.dataentrada >= TRUNC(SYSDATE) - 50 AND e.status = 'S' AND e.loja = ${args.nrempresa} AND ei.codigo = ${args.codproduto} ORDER BY e.dataentrada DESC ` } }, detalhe_estoque_disponivel: (args) => { return { sql: /*sql*/ ` WITH cte_extrato AS ( SELECT /*+ MATERIALIZE */ TRUNC(pe.datamovimento) AS dia, MAX(pe.saldo + pe.quantidade) KEEP (DENSE_RANK FIRST ORDER BY pe.integradorflaginc) AS estoque_inicial, MAX(pe.saldo) KEEP (DENSE_RANK LAST ORDER BY pe.integradorflaginc) AS estoque_final, SUM(CASE WHEN pe.tipoorigem IN (1, 3, 4, 5) THEN pe.quantidade ELSE 0 END) AS qtdentrada, SUM(CASE WHEN pe.tipoorigem IN (0, 2) THEN pe.quantidade ELSE 0 END) AS qtdsaida FROM verdemar.produtos_extrato pe WHERE pe.codigo = ${args.codproduto} AND pe.loja = ${args.nrempresa} AND pe.datamovimento >= TRUNC(SYSDATE) - 50 GROUP BY TRUNC(pe.datamovimento) ) SELECT ext.dia AS dtaentradasaida, ${args.nrempresa} AS nroempresa, ${args.codproduto} AS seqproduto, NVL(ext.qtdentrada, 0) AS qtdentrada, NVL(ext.qtdsaida, 0) AS qtdsaida, NVL(ext.estoque_final, 0) AS qtdsaldo FROM cte_extrato ext ORDER BY ext.dia DESC ` } }, detalhe_estoque_transito: (args) => { return { sql: /*sql*/ ` SELECT e.loja AS nroempresa, ei.codigo AS seqproduto, FNC_NOMEPESSOAS(e.codigo) AS fornecedor, e.numeronota AS numeronf, e.serienota AS serienf, e.dataemissao AS dtaemissao, e.dataentrada AS dtaentrada, ei.quantidade * ean.quantidade AS quantidade, ei.custoliquido * ei.quantidade AS valor FROM verdemar.entradas e INNER JOIN verdemar.entradas_itens ei ON ei.chaveentrada = e.chave INNER JOIN verdemar.operacoes_entradas oe ON oe.codigo = e.operacao INNER JOIN verdemar.produtos_ean ean ON ean.chave = ei.embalagem WHERE e.status <> 'S' AND e.dataentrada >= ADD_MONTHS(TRUNC(SYSDATE), -3) AND e.loja = ${args.nrempresa} AND ei.codigo = ${args.codproduto} AND e.codigo IN (SELECT codigo FROM verdemar.vi_loja_estoque) AND EXISTS ( SELECT 1 FROM verdemar.pedidos ped WHERE ped.chave = e.pedidoorigem ) ORDER BY e.dataemissao ASC, e.numeronota, e.serienota ` } }, produto_detalhe_preco_ai: (args) => { return { sql: /*sql*/ ` SELECT CAST(p.codigo AS VARCHAR2(15)) || CAST(l.codigo AS VARCHAR2(10)) || CAST(ean.quantidade AS VARCHAR2(10)) || '0' AS chave, p.codigo AS SEQPRODUTO, l.codigo AS NROEMPRESA, 0 AS NROSEGMENTO, ean.quantidade || ' ' || ean.embalagem AS embalagem, pp.precovenda AS preco_embalagem, pp.precovenda / GREATEST(ean.quantidade, 1) AS preco_unidade, ROUND(pp.sugestao, 2) AS margem 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 INNER JOIN verdemar.produtos_ean ean ON ean.codigo = p.codigo AND ean.vendapadrao = 'S' WHERE 1=1 AND p.inativo = 'N' --FILTROS-- ` } }, produto_detalhe_custo_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_margem_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_mdv_ai: (args) => { return { sql: /*sql*/ ` ` } }, produto_detalhe_estoque_ai: (args) => { return { sql: /*sql*/ ` ` } } } });