Files
app-dono-modulos/src/products/products.module.ts
T
sarah.magalhaes 66ed503d5b
davinTI/app-dono-modulos/pipeline/head This commit looks good
Adicionando esqueleto dos restantes assuntos de produtos ai
2026-06-10 17:06:05 -03:00

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*/ `
`
}
}
}
});