Script/query Controle de Perdas_da...

200 lines
4.7 KiB
SQL

-- Tabelas Controle de Perdas_dataset
CREATE OR REPLACE VIEW DIM_FILIAL AS
-- DIM_FILIAL
SELECT
CODIGO AS CODFILIAL,
FANTASIA AS NOME_FILIAL,
CODIGO || ' - ' || REGEXP_REPLACE(FANTASIA, '^JURUNENSE[[:space:]]*', '') AS FILIAL_COMPLETA
FROM PCFILIAL;
-- DIM_DEPARTAMENTO
SELECT
CODEPTO,
DESCRICAO AS NOME_DEPARTAMENTO,
CODEPTO || ' - ' || DESCRICAO AS DEPTO_COMPLETO
FROM PCDEPTO;
-- DIM_MARCA
SELECT
CODMARCA,
MARCA AS NOME_MARCA,
CODMARCA || ' - ' || MARCA AS MARCA_COMPLETA
FROM PCMARCA;
-- DIM_PRODUTO
SELECT
P.CODPROD,
P.DESCRICAO AS NOME_PRODUTO,
P.CODEPTO,
P.CODMARCA,
P.CODPROD || ' - ' || P.DESCRICAO AS PRODUTO_COMPLETO
FROM PCPRODUT P;
-- DIM_CALENDARIO
SELECT DISTINCT
DATA,
EXTRACT(YEAR FROM DATA) AS ANO,
EXTRACT(MONTH FROM DATA) AS MES,
EXTRACT(DAY FROM DATA) AS DIA
FROM (
SELECT TRUNC(DTSAIDA) AS DATA FROM VIEW_VENDAS_RESUMO_FATURAMENTO
UNION
SELECT TRUNC(DTENT) AS DATA FROM VIEW_DEVOL_RESUMO_FATURAMENTO
UNION
SELECT TRUNC(DTMOV) AS DATA FROM PCMOV
);
-- DIM_TIPO_BLOQUEIO
SELECT 1 AS TIPO_BLOQUEIO_ID, 'BLOQUEIO EXPOSICAO' AS TIPO_BLOQUEIO, 1 AS ORDEM, 'S' AS ATIVO FROM DUAL
UNION ALL
SELECT 2, 'BLOQUEIO MANUAL', 2, 'S' FROM DUAL
UNION ALL
SELECT 3, 'BLOQUEIO ENTRADA', 3, 'S' FROM DUAL
UNION ALL
SELECT 4, 'BLOQUEIO AVARIA', 4, 'S' FROM DUAL;
-- DIM_MOTIVO_BLOQUEIO
SELECT
CODDEVOL AS CODMOTIVO,
MOTIVO,
'S' AS ATIVO
FROM PCTABDEV;
-- DIM_FAIXA_PRIM
SELECT 1 AS FAIXA_ID, '1 - 0 A 3 DIAS' AS FAIXA_PRIM, 0 AS DIAS_INICIO, 3 AS DIAS_FIM, 1 AS ORDEM FROM DUAL
UNION ALL
SELECT 2, '2 - 4 A 7 DIAS', 4, 7, 2 FROM DUAL
UNION ALL
SELECT 3, '3 - 8 A 14 DIAS', 8, 14, 3 FROM DUAL
UNION ALL
SELECT 4, '4 - 15 A 30 DIAS',15, 30, 4 FROM DUAL
UNION ALL
SELECT 5, '5 - 30 A 60 DIAS',31, 60, 5 FROM DUAL
UNION ALL
SELECT 6, '6 - 60 + DIAS', 61, 9999,6 FROM DUAL;
-- FATO_FATURAMENTO-filial
SELECT
NF.CODFILIAL,
TRUNC(NF.DTSAIDA) AS DATA,
NF.CODPROD,
SUM(NF.VLVENDA) AS FATURAMENTO_BRUTO,
SUM(NF.VLCUSTOFIN) AS CUSTO_TOTAL
FROM VIEW_VENDAS_RESUMO_FATURAMENTO NF
WHERE NF.CONDVENDA IN (1,7)
AND NF.DTCANCEL IS NULL
GROUP BY
NF.CODFILIAL,
TRUNC(NF.DTSAIDA),
NF.CODPROD;
-- FATO_DEVOLUCAO-filial
SELECT
DV.CODFILIAL,
TRUNC(DV.DTENT) AS DATA,
DV.CODPROD,
SUM(DV.VLDEVOLUCAO) AS DEVOLUCAO,
SUM(DV.VLCUSTOFIN) AS CUSTO_DEVOLUCAO
FROM VIEW_DEVOL_RESUMO_FATURAMENTO DV
WHERE DV.CONDVENDA IN (1,7,8)
AND DV.DTCANCEL IS NULL
GROUP BY
DV.CODFILIAL,
TRUNC(DV.DTENT),
DV.CODPROD;
-- FATO_FATURAMENTO-supervmov
SELECT
NF.CODSUPERVMOV,
TRUNC(NF.DTSAIDA) AS DATA,
NF.CODPROD,
SUM(NF.VLVENDA) AS FATURAMENTO_BRUTO,
SUM(NF.VLCUSTOFIN) AS CUSTO_TOTAL
FROM VIEW_VENDAS_RESUMO_FATURAMENTO NF
WHERE NF.CONDVENDA IN (1,7)
AND NF.DTCANCEL IS NULL
GROUP BY
NF.CODSUPERVMOV,
TRUNC(NF.DTSAIDA),
NF.CODPROD;
-- FATO_DEVOLUCAO-supervmov
SELECT
DV.CODSUPERVMOV,
TRUNC(DV.DTENT) AS DATA,
DV.CODPROD,
SUM(DV.VLDEVOLUCAO) AS DEVOLUCAO,
SUM(DV.VLCUSTOFIN) AS CUSTO_DEVOLUCAO
FROM VIEW_DEVOL_RESUMO_FATURAMENTO DV
WHERE DV.CONDVENDA IN (1,7,8)
AND DV.DTCANCEL IS NULL
GROUP BY
DV.CODSUPERVMOV,
TRUNC(DV.DTENT),
DV.CODPROD;
-- FatoAjusteEstoque
SELECT
M.CODFILIAL,
TRUNC(M.DTMOV) AS DATA,
M.CODPROD,
SUM(
CASE
WHEN M.CODOPER IN ('EA','EI') THEN M.QT * ROUND(M.PUNIT,2)
WHEN M.CODOPER IN ('SA','SI') THEN (M.QT * -1) * ROUND(M.PUNIT,2)
ELSE 0
END
) AS VALOR_AJUSTE
FROM PCMOV M
WHERE M.CODOPER IN ('EA','EI','SA','SI')
GROUP BY
M.CODFILIAL,
TRUNC(M.DTMOV),
M.CODPROD;
-- FatoAjusteDetalhe
SELECT
M.CODFILIAL,
TRUNC(M.DTMOV) AS DATA,
M.CODPROD,
COALESCE(L1.NOMEFUNC, L2.NOMEFUNC) AS RESPONSAVEL_AJUSTE,
COALESCE(L1.HISTORICO, L2.HISTORICO) AS HISTORICO,
COALESCE(L1.HISTORICO2, L2.HISTORICO2) AS HISTORICO2,
DECODE(M.CODOPER,
'EA','ENTRADA AJUSTE',
'EI','ENTRADA INVENTARIO',
'SA','SAIDA AJUSTE',
'SI','SAIDA INVENTARIO'
select * from pcpedc ) AS TIPO_OPERACAO,
CASE
WHEN M.CODOPER IN ('EA','EI') THEN M.QT
WHEN M.CODOPER IN ('SA','SI') THEN (M.QT * -1)
ELSE 0
END AS QT_AJUSTE,
CASE
WHEN M.CODOPER IN ('EA','EI') THEN M.QT * ROUND(M.PUNIT,2)
WHEN M.CODOPER IN ('SA','SI') THEN (M.QT * -1) * ROUND(M.PUNIT,2)
ELSE 0
END AS VALOR_AJUSTE
FROM PCMOV M
LEFT JOIN PCLANC L1
ON M.CODOPER IN ('EA','EI')
AND L1.NUMTRANSENT = M.NUMTRANSENT
LEFT JOIN PCLANC L2
ON M.CODOPER IN ('SA','SI')
AND L2.NUMTRANSVENDA = M.NUMTRANSVENDA
WHERE M.CODOPER IN ('EA','EI','SA','SI');