Files
app-dono-modulos/src/products/products.module.ts
T
Sarah Magalhães 728b1f0870
davinTI/app-dono-modulos/pipeline/head There was a failure building this commit
Ajustando detalhe_mdv
2026-06-03 16:21:38 -03:00

3036 lines
165 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,
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"],
},
},
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
`,
};
},
},
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
`,
};
},
},
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
`,
};
},
},
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*/ `
SELECT
l.codigo AS idempresa,
FNC_NOMEPESSOAS(l.codigo) AS nomeempresa,
cat.nome AS categoria,
(
SELECT MAX(e.dataentrada)
FROM verdemar.entradas e
INNER JOIN verdemar.entradas_itens ei ON ei.chaveentrada = e.chave
WHERE ei.codigo = p.codigo
AND e.loja = l.codigo
AND e.status = 'S'
) AS dataultimaentrada,
pm.ultimavenda AS dataultimavenda,
NULL AS precoatacado,
pp.precovenda AS precovarejo,
COALESCE(prom.precopromocao, 0) AS precopromoc,
pp.precovenda AS preconormal,
(
SELECT pf.precofidelidade
FROM verdemar.produtos_fidelidade pf
WHERE pf.codigo = p.codigo
AND TRUNC(SYSDATE) BETWEEN pf.datainicial AND pf.datafinal
AND (pf.codigo_tipo = 0 OR pf.codigo_tipo = 2)
AND pf.loja = l.codigo
AND ROWNUM = 1
) AS precomeuMambo,
0 AS vlrprecovenctoprox,
pp.custoliquido AS custoliquido,
pp.sugestao AS margem,
0 AS margematacado,
pp.lucro AS margemnormal,
(
SELECT api.margemprecopromocao_clubevm
FROM verdemar.produtos_fidelidade pf
INNER JOIN verdemar.autorizacao_promocao_itens api
ON api.codigo = pf.codigo
AND api.chave = pf.chaveorigem
WHERE pf.codigo = p.codigo
AND api.datafinal >= SYSDATE
AND api.datainicial <= SYSDATE
AND pf.loja = l.codigo
AND ROWNUM = 1
) AS margemmeuMambo,
subg.sugestao AS margemlucrodivisao,
est.quantidade AS estoqueDisponivel,
(
SELECT est2.quantidade
FROM verdemar.loja l2
INNER JOIN verdemar.produtos_estoque est2 ON est2.loja = l2.codigo
WHERE l2.lojanota = l.codigo
AND l2.statusloja = 3
AND est2.codigo = p.codigo
AND ROWNUM = 1
) AS estoquetroca,
FNC_QTD_EMTRANSITO(p.codigo, l.codigo) AS estoquetransito,
0 AS estoquefuturo,
0 AS estoquereservado,
0 AS reserva,
pew.estoque AS estoquedisponivelcd,
0 AS estoquefuturocd,
pvm.mediasempromocao AS mdv,
pvm.mediacompromocao AS mdvpromoc,
pvm.diasestoque AS ddv,
NULL AS ddvminimo,
NULL AS ddvmaximo,
NULL AS dtavalidade,
p.numerodiasvalidade AS validadedias,
NULL AS classeabastecimento,
p.tipoabastecimento AS formaabastecimento,
ean.embalagem AS descricaoembalagem,
ean.quantidade AS quantidadeembalagem,
(
SELECT ean2.quantidade
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 eit.codigo = p.codigo
AND ent.loja = l.codigo
AND op.atualizacusto = 'S'
AND op.tiponota NOT IN ('B', 'T', 'L')
AND ent.status = 'S'
AND ent.dataentrada <= TRUNC(SYSDATE)
AND eit.quantidade * ean2.quantidade > NVL(eit.quantidadedevolvida, 0)
AND ent.dataentrada = (
SELECT MAX(ent2.dataentrada)
FROM verdemar.entradas ent2
INNER JOIN verdemar.entradas_itens eit2 ON ent2.chave = eit2.chaveentrada
INNER JOIN verdemar.operacoes_entradas op2 ON ent2.operacao = op2.codigo
INNER JOIN verdemar.produtos_ean ean3 ON eit2.embalagem = ean3.chave
WHERE eit2.codigo = p.codigo
AND ent2.loja = l.codigo
AND op2.atualizacusto = 'S'
AND op2.tiponota NOT IN ('B', 'T', 'L')
AND ent2.status = 'S'
AND ent2.dataentrada <= TRUNC(SYSDATE)
AND eit2.quantidade * ean3.quantidade > NVL(eit2.quantidadedevolvida, 0)
)
AND ROWNUM = 1
) AS quantidadecompra,
0 AS qtdeatacado,
CASE
WHEN COALESCE(prom.precopromocao, 0) > 0 THEN 'PROMOCAO'
ELSE 'NORMAL'
END AS situacao,
CASE WHEN p.inativo = 'N' THEN 'A' ELSE 'I' END AS statusvenda,
NULL AS statuscompra,
p.paicomposto AS idbase,
NULL AS tipotroca,
p.codigo AS seqproduto,
p.nome AS Descricao
FROM 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 (
SELECT codigo,
loja,
MAX(data) AS ultimavenda
FROM verdemar.produtos_movimento
GROUP BY codigo, loja
) pm
ON pm.codigo = p.codigo
AND pm.loja = l.codigo
LEFT JOIN (
SELECT pr.codigo,
pr.loja,
pr.precopromocao
FROM verdemar.promocao pr
WHERE pr.datafinal >= TRUNC(SYSDATE)
OR pr.indeterminada = 'S'
) prom
ON prom.codigo = p.codigo
AND prom.loja = l.codigo
LEFT JOIN verdemar.produtos_ean ean
ON ean.codigo = p.codigo
AND ean.comprapadrao = 'S'
LEFT JOIN verdemar.categoria cat
ON cat.codigo = p.categoria
LEFT JOIN verdemar.subgrupo subg
ON subg.codigo = p.subgrupo
AND subg.setor = p.setor
AND subg.grupo = p.grupo
LEFT JOIN verdemar.produtos_estoque_wms pew
ON pew.produto = p.codigo
AND pew.cd = 892605
WHERE p.codigo = ${args.codproduto}
AND l.participageradorlojas = 'S'
AND p.inativo = 'N'
`
}
},
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.comprapadrao = 'S'
WHERE p.codigo = ${args.codproduto}
AND l.codigo = ${args.nrempresa}
AND p.inativo = 'N'
`
}
},
detalhe_mdv: (args) => {
return {
sql: /*sql*/ `
SELECT
pm.data AS dtaentradasaida,
pm.loja AS nroempresa,
pm.codigo AS seqproduto,
DECODE(TO_CHAR(pm.data, 'D'),
'1', 'Domingo',
'2', 'Segunda',
'3', 'Tera',
'4', 'Quarta',
'5', 'Quinta',
'6', 'Sexta',
'7', 'Sbado'
) AS diasemana,
SUM(pm.quantidade) AS qtd,
0 AS qtd_inicial
FROM verdemar.produtos_movimento pm
WHERE pm.quantidade > 0
AND pm.data >= TRUNC(SYSDATE) - 365
AND pm.loja = ${args.nrempresa}
AND pm.codigo = ${args.codproduto}
GROUP BY
pm.data,
pm.loja,
pm.codigo
ORDER BY 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.comprapadrao = '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) - 365
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*/ `
SELECT
e.dataentrada AS dtaentradasaida,
e.loja AS nroempresa,
ei.codigo AS seqproduto,
SUM(CASE WHEN oe.tiponota = 'E' OR oe.tiponota IS NULL
THEN ei.quantidade ELSE 0 END) AS qtdentrada,
SUM(CASE WHEN oe.tiponota = 'S'
THEN ei.quantidade ELSE 0 END) AS qtdsaida,
SUM(CASE WHEN oe.tiponota = 'E' OR oe.tiponota IS NULL
THEN ei.quantidade ELSE 0 END)
- SUM(CASE WHEN oe.tiponota = 'S'
THEN ei.quantidade ELSE 0 END) AS qtdsaldo
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) - 365
AND e.status = 'S'
AND e.loja = ${args.nrempresa}
AND ei.codigo = ${args.codproduto}
GROUP BY
e.dataentrada,
e.loja,
ei.codigo
ORDER BY e.dataentrada DESC
`
}
},
detalhe_estoque_transito: (args) => {
return {
sql: /*sql*/ `
SELECT
e.loja AS nroempresa,
ei.codigo AS seqproduto,
FNC_NOMEPESSOAS(e.fornecedor) AS FORNECEDOR,
e.numero AS NUMERONF,
e.serie AS SERIENF,
e.dataemissao AS DTAEMISSAO,
e.dataentrada AS DTAENTRADA,
ei.quantidade AS QUANTIDADE,
ei.custoliquido * ei.quantidade AS VALOR
FROM entradas e
INNER JOIN entradas_itens ei
ON ei.chaveentrada = e.chave
WHERE e.status <> 'S'
AND e.dataemissao >= TRUNC(SYSDATE) - 365
AND e.loja = ${args.nrempresa}
AND ei.codigo = ${args.codproduto}
ORDER BY e.dataemissao ASC, e.numero, e.serie
`
}
}
}
});