Primeiro commit do projeto
davinTI/app-dono-modulos/pipeline/head There was a failure building this commit
davinTI/app-dono-modulos/pipeline/head There was a failure building this commit
This commit is contained in:
@@ -0,0 +1,300 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE PRC_CARREGA_FLASH_PERDAS (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE,
|
||||
p_reprocessar IN VARCHAR2 DEFAULT 'S'
|
||||
)
|
||||
IS
|
||||
BEGIN
|
||||
IF p_reprocessar = 'S' THEN
|
||||
DELETE FROM TB_FLASH_PERDAS
|
||||
WHERE DATA_PERDA BETWEEN p_data_inicial AND p_data_final;
|
||||
END IF;
|
||||
|
||||
INSERT INTO TB_FLASH_PERDAS (
|
||||
ID,
|
||||
NUMERO_LOJA,
|
||||
NOME_LOJA,
|
||||
CODIGO_CATEGORIA_N1,
|
||||
NOME_CATEGORIA_N1,
|
||||
CODIGO_CATEGORIA_N2,
|
||||
NOME_CATEGORIA_N2,
|
||||
CODIGO_CATEGORIA_N3,
|
||||
NOME_CATEGORIA_N3,
|
||||
CODIGO_CATEGORIA_N4,
|
||||
NOME_CATEGORIA_N4,
|
||||
CODIGO_CATEGORIA_N5,
|
||||
NOME_CATEGORIA_N5,
|
||||
CODIGO_PRODUTO,
|
||||
NOME_PRODUTO,
|
||||
DATA_PERDA,
|
||||
ANO,
|
||||
MES,
|
||||
DIA,
|
||||
DIA_SEMANA,
|
||||
VALOR_PERDA,
|
||||
CUSTO,
|
||||
QTD_PERDA,
|
||||
DATAINC,
|
||||
DATAALT
|
||||
)
|
||||
WITH cat_base AS (
|
||||
SELECT
|
||||
pc.seqproduto,
|
||||
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_produto pc
|
||||
JOIN consinco.map_familia fc
|
||||
ON fc.seqfamilia = pc.seqfamilia
|
||||
JOIN consinco.map_famdivcateg dc
|
||||
ON dc.seqfamilia = fc.seqfamilia
|
||||
AND dc.nrodivisao = 1
|
||||
AND dc.status = 'A'
|
||||
JOIN consinco.map_categoria cc
|
||||
ON cc.nrodivisao = dc.nrodivisao
|
||||
AND cc.seqcategoria = dc.seqcategoria
|
||||
AND cc.tipcategoria = 'M'
|
||||
AND cc.statuscategor = 'A'
|
||||
AND cc.nivelhierarquia BETWEEN 1 AND 5
|
||||
GROUP BY pc.seqproduto
|
||||
),
|
||||
custo_base AS (
|
||||
SELECT
|
||||
cd.seqproduto,
|
||||
cd.nroempresa,
|
||||
cd.dtaentradasaida,
|
||||
(cd.cmdiavlrnf
|
||||
+ cd.cmdiaipi
|
||||
+ cd.cmdiaicmsst
|
||||
+ cd.cmdiadespnf
|
||||
+ cd.cmdiadespforanf
|
||||
- cd.cmdiacredicms
|
||||
- cd.cmdiacredicmspresum
|
||||
- cd.cmdiacredicmsantecip
|
||||
- cd.cmdiacredpis
|
||||
- cd.cmdiacredcofins
|
||||
- cd.cmdiadctoforanf) AS custo_dia
|
||||
FROM consinco.mrl_custodia cd
|
||||
),
|
||||
inner_query AS (
|
||||
SELECT
|
||||
e.nroempresa AS empresa,
|
||||
e.nomereduzido AS nomeempresa,
|
||||
cat.codcatn1,
|
||||
cat.nomecatn1,
|
||||
cat.codcatn2,
|
||||
cat.nomecatn2,
|
||||
cat.codcatn3,
|
||||
cat.nomecatn3,
|
||||
cat.codcatn4,
|
||||
cat.nomecatn4,
|
||||
cat.codcatn5,
|
||||
cat.nomecatn5,
|
||||
c.seqproduto AS cod_produto,
|
||||
a.desccompleta AS descricao,
|
||||
a.seqprodutobase,
|
||||
vw.dtaentradasaida AS data_venda,
|
||||
SUM(vw.vlrctoliquido) AS custo_liq_na_loja,
|
||||
SUM(vw.valorlancto) AS perda,
|
||||
SUM(vw.qtdlancto) AS qtde_perda_unit,
|
||||
(
|
||||
SUM((vw.qtdlancto / c3.qtdembalagem) * c3.precovalidnormal *
|
||||
(e.pericmsestimativa + e.peroutroimposto + e.percpmf + e.perir +
|
||||
DECODE(e.indfaturaiss, 'S', e.perciss, 0) +
|
||||
DECODE(e.indfaturaipi || b.indcalcipisaida, 'SS', b.peraliquotaipi, 0)) / 100)
|
||||
+ SUM((vw.qtdlancto / c3.qtdembalagem) * c3.precovalidnormal *
|
||||
(t3.peraliquota * t3.pertributado / 100) / 100)
|
||||
+ SUM((vw.qtdlancto / c3.qtdembalagem) * c3.precovalidnormal *
|
||||
DECODE(b.indisentopis, 'S', 0,
|
||||
DECODE(b.indisentodebpiscofins, 'S', 0, e.perpis)) / 100)
|
||||
+ SUM((vw.qtdlancto / c3.qtdembalagem) * c3.precovalidnormal *
|
||||
DECODE(b.indisentopis, 'S', 0,
|
||||
DECODE(b.indisentodebpiscofins, 'S', 0, e.percofins)) / 100)
|
||||
) AS vlrimpostovda,
|
||||
CASE
|
||||
WHEN cat.codcatn2 IN (15458, 18080)
|
||||
AND cat.codcatn3 NOT IN (17696, 18007, 17182)
|
||||
THEN
|
||||
SUM(
|
||||
vw.qtdlancto * (
|
||||
SELECT cx.custo_dia
|
||||
FROM custo_base cx
|
||||
WHERE cx.seqproduto = COALESCE(a.seqprodutobase, c.seqproduto)
|
||||
AND cx.nroempresa = 301
|
||||
AND cx.dtaentradasaida = (
|
||||
SELECT MAX(cx2.dtaentradasaida)
|
||||
FROM custo_base cx2
|
||||
WHERE cx2.seqproduto = cx.seqproduto
|
||||
AND cx2.nroempresa = 301
|
||||
AND cx2.dtaentradasaida <= vw.dtaentradasaida
|
||||
)
|
||||
)
|
||||
)
|
||||
ELSE SUM(vw.valorlancto)
|
||||
END AS perda_novo
|
||||
FROM
|
||||
maxv_categoria gs,
|
||||
map_famdivcateg us,
|
||||
map_famdivcateg w,
|
||||
map_famdivisao d,
|
||||
max_empresa e,
|
||||
max_divisao i2,
|
||||
map_classifabc z2,
|
||||
maxv_abcperdabase vw,
|
||||
map_tributacaouf t3,
|
||||
map_familia b,
|
||||
mad_famsegmento h,
|
||||
map_famembalagem k,
|
||||
mrl_produtoempresa c,
|
||||
mrl_prodempseg c3,
|
||||
map_produto a,
|
||||
mad_segmento se,
|
||||
map_produto pr,
|
||||
cat_base cat,
|
||||
(
|
||||
SELECT
|
||||
a.seqproduto,
|
||||
a.nroempresa,
|
||||
SUM(a.estqloja) AS estqloja,
|
||||
SUM(a.estqdeposito) AS estqdeposito,
|
||||
SUM(a.estqtroca) AS estqtroca,
|
||||
SUM(a.estqalmoxarifado) AS estqalmoxarifado,
|
||||
SUM(a.estqoutro) AS estqoutro,
|
||||
SUM(
|
||||
NVL(a.cmultvlrdescpistransf, 0) +
|
||||
NVL(a.cmultvlrdesccofinstransf, 0) +
|
||||
NVL(a.cmultvlrdescicmstransf, 0) +
|
||||
NVL(a.cmultvlrdescipitransf, 0) +
|
||||
NVL(a.cmultvlrdesclucrotransf, 0) +
|
||||
NVL(a.cmultvlrdescverbatransf, 0) +
|
||||
NVL(a.cmultvlrdescdiferencatransf, 0)
|
||||
) AS vlrdesctransfcb
|
||||
FROM mrl_produtoempresa a
|
||||
GROUP BY a.seqproduto, a.nroempresa
|
||||
) sx,
|
||||
(
|
||||
SELECT MAX(dx.utilacresccustprodrelac) AS utilacresccustprodrelac
|
||||
FROM max_divisao dx
|
||||
JOIN max_empresa ex
|
||||
ON ex.nrodivisao = dx.nrodivisao
|
||||
) i3
|
||||
WHERE
|
||||
e.nroempresa = vw.nroempresa
|
||||
AND e.nrodivisao = d.nrodivisao
|
||||
AND h.seqfamilia = vw.seqfamilia
|
||||
AND h.nrosegmento = e.nrosegmentoprinc
|
||||
AND h.nrosegmento = se.nrosegmento
|
||||
AND d.seqfamilia = vw.seqfamilia
|
||||
AND d.nrodivisao IN (1)
|
||||
AND b.seqfamilia = vw.seqfamilia
|
||||
AND i2.nrodivisao = d.nrodivisao
|
||||
AND z2.nrosegmento = h.nrosegmento
|
||||
AND z2.classifcomercabc = h.classifcomercabc
|
||||
AND k.seqfamilia = h.seqfamilia
|
||||
AND a.seqproduto = c.seqproduto
|
||||
AND k.qtdembalagem = h.padraoembvenda
|
||||
AND c.seqproduto = vw.seqproduto
|
||||
AND c.nroempresa = NVL(e.nroempcustoabc, e.nroempresa)
|
||||
AND c3.nroempresa = vw.nroempresa
|
||||
AND c3.seqproduto = vw.seqproduto
|
||||
AND c3.nrosegmento = e.nrosegmentoprinc
|
||||
AND c3.qtdembalagem = h.padraoembvenda
|
||||
AND t3.nrotributacao = d.nrotributacao
|
||||
AND t3.ufempresa = e.uf
|
||||
AND t3.ufclientefornec = e.uf
|
||||
AND t3.tiptributacao = DECODE(i2.tipdivisao, 'V', 'SN', 'SC')
|
||||
AND t3.nroregtributacao = NVL(e.nroregtributacao, 0)
|
||||
AND pr.seqproduto = vw.seqproduto
|
||||
AND sx.seqproduto = vw.seqproduto
|
||||
AND sx.nroempresa = vw.nroempresa
|
||||
AND cat.seqproduto = vw.seqproduto
|
||||
AND vw.dtaentradasaida BETWEEN p_data_inicial AND p_data_final
|
||||
AND vw.nroempresa IN (
|
||||
SELECT CODIGO
|
||||
FROM VITRUVIO.vi_lojas
|
||||
WHERE codigo NOT IN (301, 401, 500)
|
||||
)
|
||||
AND vw.tipclassinterno IN ('P', 'R', 'C', 'A')
|
||||
AND vw.tiplancto IN ('S')
|
||||
AND gs.nrodivisao = us.nrodivisao
|
||||
AND gs.nivelhierarquia = 2
|
||||
AND gs.tipcategoria = 'M'
|
||||
AND gs.statuscategor != 'I'
|
||||
AND us.seqfamilia = d.seqfamilia
|
||||
AND us.nrodivisao = d.nrodivisao
|
||||
AND us.seqcategoria = gs.seqcategoria
|
||||
AND us.status = 'A'
|
||||
AND w.seqfamilia = d.seqfamilia
|
||||
AND w.nrodivisao = d.nrodivisao
|
||||
AND w.status = 'A'
|
||||
AND w.seqcategoria IN (14772, 15450)
|
||||
GROUP BY
|
||||
e.nroempresa,
|
||||
e.nomereduzido,
|
||||
gs.seqcategoria,
|
||||
gs.caminhocompleto,
|
||||
SUBSTR(e.nomereduzido || ' : ' || gs.caminhocompleto, 1, 250),
|
||||
c.seqproduto,
|
||||
a.seqprodutobase,
|
||||
a.desccompleta,
|
||||
vw.dtaentradasaida,
|
||||
cat.codcatn1, cat.nomecatn1,
|
||||
cat.codcatn2, cat.nomecatn2,
|
||||
cat.codcatn3, cat.nomecatn3,
|
||||
cat.codcatn4, cat.nomecatn4,
|
||||
cat.codcatn5, cat.nomecatn5,
|
||||
TO_NUMBER(NULL),
|
||||
NULL
|
||||
)
|
||||
SELECT
|
||||
SEQ_FLASH_PERDAS.NEXTVAL,
|
||||
iq.empresa,
|
||||
iq.nomeempresa,
|
||||
TO_CHAR(iq.codcatn1),
|
||||
iq.nomecatn1,
|
||||
TO_CHAR(iq.codcatn2),
|
||||
iq.nomecatn2,
|
||||
TO_CHAR(iq.codcatn3),
|
||||
iq.nomecatn3,
|
||||
TO_CHAR(iq.codcatn4),
|
||||
iq.nomecatn4,
|
||||
TO_CHAR(iq.codcatn5),
|
||||
iq.nomecatn5,
|
||||
TO_CHAR(iq.cod_produto),
|
||||
iq.descricao,
|
||||
iq.data_venda,
|
||||
EXTRACT(YEAR FROM iq.data_venda),
|
||||
EXTRACT(MONTH FROM iq.data_venda),
|
||||
EXTRACT(DAY FROM iq.data_venda),
|
||||
(TRUNC(iq.data_venda) - TRUNC(iq.data_venda, 'IW') + 1),
|
||||
iq.perda_novo,
|
||||
iq.custo_liq_na_loja,
|
||||
iq.qtde_perda_unit,
|
||||
SYSDATE,
|
||||
SYSDATE
|
||||
FROM inner_query iq;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_CARREGA_FLASH_PERDAS';
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
IF SQLCODE != -4043 THEN
|
||||
RAISE;
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
Reference in New Issue
Block a user