3505 lines
184 KiB
TypeScript
3505 lines
184 KiB
TypeScript
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*/ `
|
|
|
|
`
|
|
}
|
|
}
|
|
}
|
|
});
|