Atualiza atualização de valores do flash de vendas.
davinTI/app-dono-modulos/pipeline/head This commit looks good

This commit is contained in:
2026-05-25 16:55:46 -03:00
parent 25ff6c14df
commit aa32a80fcc
4 changed files with 148 additions and 164 deletions
@@ -3,7 +3,9 @@
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_VENDA (
p_data_inicial IN DATE,
p_data_final IN DATE,
p_empresa IN NUMBER
p_empresa IN NUMBER,
p_divisao IN VARCHAR2 DEFAULT NULL,
p_cgos IN VARCHAR2 DEFAULT NULL
) AS
v_id_empresa NUMBER;
v_id_cat1 NUMBER;
@@ -83,6 +85,33 @@ BEGIN
AND cod_empresa = p_empresa;
FOR r IN (
WITH pg AS (
SELECT MAX(indutilicmstaresugprabc) AS indutilicmstaresugprabc
FROM consinco.max_paramgeral
),
cat AS (
SELECT dc.nrodivisao,
dc.seqfamilia,
MAX(CASE WHEN cc.nivelhierarquia = 1 THEN dc.seqcategoria END) AS codcatn1,
MAX(CASE WHEN cc.nivelhierarquia = 1 THEN cc.categoria END) AS nomecatn1,
MAX(CASE WHEN cc.nivelhierarquia = 2 THEN dc.seqcategoria END) AS codcatn2,
MAX(CASE WHEN cc.nivelhierarquia = 2 THEN cc.categoria END) AS nomecatn2,
MAX(CASE WHEN cc.nivelhierarquia = 3 THEN dc.seqcategoria END) AS codcatn3,
MAX(CASE WHEN cc.nivelhierarquia = 3 THEN cc.categoria END) AS nomecatn3,
MAX(CASE WHEN cc.nivelhierarquia = 4 THEN dc.seqcategoria END) AS codcatn4,
MAX(CASE WHEN cc.nivelhierarquia = 4 THEN cc.categoria END) AS nomecatn4,
MAX(CASE WHEN cc.nivelhierarquia = 5 THEN dc.seqcategoria END) AS codcatn5,
MAX(CASE WHEN cc.nivelhierarquia = 5 THEN cc.categoria END) AS nomecatn5
FROM consinco.map_famdivcateg dc
JOIN consinco.map_categoria cc
ON cc.seqcategoria = dc.seqcategoria
AND cc.nrodivisao = dc.nrodivisao
AND cc.statuscategor = 'A'
AND cc.tipcategoria = 'M'
AND cc.nivelhierarquia BETWEEN 1 AND 5
WHERE dc.status = 'A'
GROUP BY dc.nrodivisao, dc.seqfamilia
)
SELECT dv.nrodivisao,
seg1.nrosegmento,
seg1.descsegmento,
@@ -92,84 +121,122 @@ BEGIN
a.seqprodutobase,
a.desccompleta AS descricao,
z.dtaentradasaida AS data_referencia,
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'D')) AS dia_semana,
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'DD')) AS dia,
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'MM')) AS mes,
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'YYYY')) AS ano,
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'D')) AS dia_semana,
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'DD')) AS dia,
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'MM')) AS mes,
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'YYYY')) AS ano,
0 AS nro_tickets,
SUM(DECODE(y.qtdvda, 0, 0,
((y.vlrimpostovda +
NVL(DECODE(pg.indutilicmstaresugprabc,
'S', COALESCE(y.vlricmsvdasolicit, y.vlricmsvda),
y.vlricmsvda), 0)
+ NVL(y.vlrpisvda, 0)
+ NVL(y.vlrcofinsvda, 0)) / y.qtdvda)) * z.qtdvda)
SUM(
DECODE(y.qtdvda, 0, 0,
(
y.vlrimpostovda
+ NVL(
DECODE(pg.indutilicmstaresugprabc,
'S', COALESCE(y.vlricmsvdasolicit, y.vlricmsvda),
y.vlricmsvda
), 0
)
+ NVL(y.vlrpisvda, 0)
+ NVL(y.vlrcofinsvda, 0)
) / y.qtdvda
) * z.qtdvda
)
+
SUM(DECODE(NVL(y.qtddevol, 0), 0, 0,
((NVL(y.vlrimpostodevol, 0) +
NVL(DECODE(pg.indutilicmstaresugprabc,
'S',
DECODE(y.qtdvda, 0, 0,
COALESCE((y.vlricmsvdasolicit / y.qtdvda) * y.qtddevol,
y.vlricmsdevol)),
((z.vlricmsvda / GREATEST(z.qtdvda, 1)) * NVL(z.qtddevol, 0))),
0)
+ NVL(y.vlrpisdevol, 0)
+ NVL(y.vlrcofinsdevol, 0)) / y.qtddevol)) * (0 - NVL(z.qtddevol, 0))
SUM(
DECODE(NVL(y.qtddevol, 0), 0, 0,
(
NVL(y.vlrimpostodevol, 0)
+ NVL(
DECODE(pg.indutilicmstaresugprabc,
'S',
DECODE(y.qtdvda, 0, 0,
COALESCE(
(y.vlricmsvdasolicit / y.qtdvda) * y.qtddevol,
y.vlricmsdevol
)
),
((z.vlricmsvda / GREATEST(z.qtdvda, 1)) * NVL(z.qtddevol, 0))
), 0
)
+ NVL(y.vlrpisdevol, 0)
+ NVL(y.vlrcofinsdevol, 0)
) / y.qtddevol
) * (0 - NVL(z.qtddevol, 0))
) AS vlr_imp_venda,
SUM((z.qtdvda - NVL(z.qtddevol, 0)) / k.qtdembalagem) AS qtde_venda,
(SUM(z.vlrtotalvda) - SUM(NVL(z.vlrtotaldevol, 0))) AS vlr_venda,
SUM(z.vlrtotalvda) - SUM(NVL(z.vlrtotaldevol, 0)) AS vlr_venda,
0 AS vl_ticket_medio,
a.propqtdprodutobase,
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 1 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn1,
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 1 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn1,
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 2 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn2,
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 2 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn2,
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 3 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn3,
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 3 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn3,
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 4 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn4,
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 4 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn4,
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 5 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn5,
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 5 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn5
FROM maxv_categoria g, map_famdivcateg u, map_produto a, map_famdivisao d,
map_famembalagem k, mad_segmento seg1, mrl_produtoempresa c,
mad_famsegmento h, max_empresa e, mrl_custodia y, mrl_custodia z,
mrlv_descontoregra re, max_divisao dv, max_paramgeral pg
WHERE z.dtaentradasaida BETWEEN p_data_inicial AND p_data_final
AND z.nroempresa = p_empresa
AND e.nroempresa = z.nroempresa
AND e.nrodivisao = d.nrodivisao
AND z.seqproduto = c.seqproduto
AND e.nroempresa = c.nroempresa
AND y.seqproduto = z.seqproduto
cat.codcatn1,
cat.nomecatn1,
cat.codcatn2,
cat.nomecatn2,
cat.codcatn3,
cat.nomecatn3,
cat.codcatn4,
cat.nomecatn4,
cat.codcatn5,
cat.nomecatn5
FROM consinco.mrl_custodia z
JOIN consinco.max_empresa e
ON e.nroempresa = z.nroempresa
JOIN consinco.mrl_custodia y
ON y.seqproduto = z.seqproduto
AND y.dtaentradasaida = z.dtaentradasaida
AND y.nroempresa = z.nroempresa
AND (z.vlrtotalvda > 0 OR z.vlrtotaldevol > 0)
AND seg1.nrodivisao = d.nrodivisao
AND h.seqfamilia = z.seqfamilia
JOIN consinco.map_famdivisao d
ON d.seqfamilia = z.seqfamilia
AND d.nrodivisao = e.nrodivisao
JOIN consinco.max_divisao dv
ON dv.nrodivisao = d.nrodivisao
JOIN consinco.mad_segmento seg1
ON seg1.nrodivisao = d.nrodivisao
JOIN consinco.mad_famsegmento h
ON h.seqfamilia = z.seqfamilia
AND h.nrosegmento = e.nrosegmentoprinc
AND h.nrosegmento = seg1.nrosegmento
AND d.seqfamilia = z.seqfamilia
AND d.nrodivisao IN (1)
AND dv.nrodivisao = d.nrodivisao
AND k.seqfamilia = h.seqfamilia
JOIN consinco.map_famembalagem k
ON k.seqfamilia = h.seqfamilia
AND k.qtdembalagem = 1
AND z.seqproduto = re.seqproduto(+)
AND z.dtaentradasaida = re.datafaturamento(+)
AND z.nroempresa = re.nroempresa(+)
AND g.nrodivisao = u.nrodivisao
AND g.nivelhierarquia = 1
AND g.tipcategoria = 'M'
AND g.statuscategor != 'I'
AND u.seqfamilia = d.seqfamilia
AND u.nrodivisao = d.nrodivisao
AND u.seqcategoria = g.seqcategoria
AND u.status = 'A'
AND a.seqproduto = z.seqproduto
JOIN consinco.map_produto a
ON a.seqproduto = z.seqproduto
AND a.seqfamilia = d.seqfamilia
GROUP BY dv.nrodivisao, seg1.nrosegmento, seg1.descsegmento, e.nroempresa, e.nomereduzido,
a.seqproduto, a.seqprodutobase, a.desccompleta, z.dtaentradasaida,
a.propqtdprodutobase, e.nrodivisao, a.seqfamilia
JOIN cat
ON cat.nrodivisao = d.nrodivisao
AND cat.seqfamilia = d.seqfamilia
CROSS JOIN pg
WHERE z.dtaentradasaida BETWEEN p_data_inicial AND p_data_final
AND z.nroempresa = p_empresa
AND (p_divisao IS NULL OR INSTR(',' || p_divisao || ',', ',' || TO_CHAR(d.nrodivisao) || ',') > 0)
AND (z.vlrtotalvda > 0 OR z.vlrtotaldevol > 0)
AND EXISTS (
SELECT 1
FROM consinco.maxv_abcdistribbase b
WHERE b.seqproduto = z.seqproduto
AND b.nroempresa = z.nroempresa
AND b.dtavda = z.dtaentradasaida
AND (p_cgos IS NULL OR INSTR(',' || p_cgos || ',', ',' || TO_CHAR(b.codgeraloper) || ',') > 0)
)
GROUP BY dv.nrodivisao,
seg1.nrosegmento,
seg1.descsegmento,
e.nroempresa,
e.nomereduzido,
a.seqproduto,
a.seqprodutobase,
a.desccompleta,
z.dtaentradasaida,
a.propqtdprodutobase,
cat.codcatn1,
cat.nomecatn1,
cat.codcatn2,
cat.nomecatn2,
cat.codcatn3,
cat.nomecatn3,
cat.codcatn4,
cat.nomecatn4,
cat.codcatn5,
cat.nomecatn5
) LOOP
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.empresa), r.nomeempresa, 1, r.empresa);