Script/DITO-reformulado.sql

293 lines
12 KiB
SQL

-- DITO - reformulado
WITH TOTAIS_PEDIDO AS (
/* Agrega os totais por pedido */
SELECT
NUMPED,
SUM(QT * PVENDA) AS TOTAL_BRUTO,
COUNT(DISTINCT CODPROD) AS QTD_SKUS,
SUM(CASE WHEN CODPROD = 48500 THEN (QT * PVENDA) ELSE 0 END) AS TOTAL_FRETE_PED
FROM PCPEDI
GROUP BY NUMPED
)
/* --- BLOCO DE VENDAS --- */
SELECT
V.CODFILIAL AS CODIGO_FILIAL,
C.CLIENTE AS NOME_CLIENTE,
C.EMAIL AS EMAIL_CLIENTE,
REGEXP_REPLACE(C.CGCENT, '[^0-9]', '') AS CPF,
C.CODCLI AS CODIGO_CLIENTE,
C.TIPOFJ AS TIPO_PESSOA,
C.SEXO,
C.DTNASC AS DATA_NASCIMENTO,
CID.NOMECIDADE,
C.TELENT AS TELEFONE,
C.ENDERENT AS ENDERECO,
C.NUMEROENT AS NUMERO,
C.BAIRROENT AS BAIRRO,
C.ESTENT AS ESTADO,
C.DTCADASTRO AS DATA_CADASTO,
C.DTPRIMCOMPRA AS DATA_PRIMEIRA_COMPRA,
C.DTULTCOMP AS DATA_ULTIMA_COMPRA,
V.DTSAIDA AS DATA_COMPRA,
V.NUMPED AS NUMERO_PEDIDO,
S.NOME AS NOME_LOJA,
P.CODSUPERVISOR AS CODIGO_SUPERVISOR,
U.NOME AS NOME_VENDEDOR,
V.CODUSUR AS CODIGO_VENDEDOR,
COB.COBRANCA AS METODO_PAGAMENTO,
PL.DESCRICAO AS PLANO_DE_PAGAMENTO,
TP.TOTAL_BRUTO AS TOTAL_COMPRA,
TP.QTD_SKUS AS QTD_TOTAL_PRODUTO,
GREATEST(NVL(P.VLTABELA, 0) - NVL(TP.TOTAL_BRUTO, 0), 0) AS TOTAL_DESCONTO,
NVL(TP.TOTAL_FRETE_PED, 0) AS TOTAL_FRETE,
V.CODPROD AS ID_PRODUTO,
PROD.DESCRICAO AS NOME_PRODUTO,
V.QT AS QTDE_PRODUTO,
(V.VLVENDA / DECODE(V.QT, 0, 1, V.QT)) AS PRECO_PRODUTO,
'VENDA' AS TIPO_FATURAMENTO,
V.VLVENDA AS SUB_TOTAL,
CAT.CATEGORIA AS CATEGORIA_PRODUTO,
SEC.DESCRICAO AS SECAO_PRODUTO,
DEP.DESCRICAO AS DEPARTAMENTO_PRODUTO,
PARC.NOME AS NOME_PARCEIRO,
PARC.ID AS CODIGO_PARCEIRO,
PARC.TELEFONE AS TELEFONE_PARCEIRO
FROM view_vendas_resumo_faturamento V
INNER JOIN PCPRODUT PROD ON V.CODPROD = PROD.CODPROD
INNER JOIN PCCLIENT C ON V.CODCLI = C.CODCLI
INNER JOIN PCPEDC P ON V.NUMPED = P.NUMPED
INNER JOIN PCUSUARI U ON V.CODUSUR = U.CODUSUR
INNER JOIN PCCOB COB ON V.CODCOB = COB.CODCOB
INNER JOIN PCPLPAG PL ON V.CODPLPAG = PL.CODPLPAG
INNER JOIN PCDEPTO DEP ON PROD.CODEPTO = DEP.CODEPTO
INNER JOIN PCSECAO SEC ON PROD.CODSEC = SEC.CODSEC
INNER JOIN PCSUPERV S ON P.CODSUPERVISOR = S.CODSUPERVISOR
LEFT JOIN TOTAIS_PEDIDO TP ON V.NUMPED = TP.NUMPED
LEFT JOIN PCCIDADE CID ON C.CODCIDADE = CID.CODCIDADE
LEFT JOIN ESTPARCEIRO PARC ON P.CODUSUR3 = PARC.ID
LEFT JOIN PCCATEGORIA CAT ON (PROD.CODSEC = CAT.CODSEC AND PROD.CODCATEGORIA = CAT.CODCATEGORIA)
WHERE V.CONDVENDA IN (1, 7)
AND V.CODCLI NOT IN (1)
AND V.CODPROD NOT IN (48500) -- REMOVE O PRODUTO FRETE
AND V.DTSAIDA >= TRUNC(SYSDATE) - (365*4)
UNION ALL
/* --- BLOCO DE DEVOLUÇÃO --- */
SELECT
D.CODFILIAL,
C.CLIENTE,
C.EMAIL,
REGEXP_REPLACE(C.CGCENT, '[^0-9]', ''),
C.CODCLI,
C.TIPOFJ,
C.SEXO,
C.DTNASC,
CID.NOMECIDADE,
C.TELENT,
C.ENDERENT,
C.NUMEROENT,
C.BAIRROENT,
C.ESTENT,
C.DTCADASTRO,
C.DTPRIMCOMPRA,
C.DTULTCOMP,
D.DTENT,
D.NUMPED,
S.NOME,
P.CODSUPERVISOR,
U.NOME,
D.CODUSUR,
COB.COBRANCA,
PL.DESCRICAO,
D.VLDEVOLUCAO * -1,
1,
0,
0,
D.CODPROD,
PROD.DESCRICAO,
D.QT * -1,
(D.VLDEVOLUCAO / DECODE(D.QT, 0, 1, D.QT)) * -1,
'DEVOLUCAO',
D.VLDEVOLUCAO * -1,
CAT.CATEGORIA,
SEC.DESCRICAO,
DEP.DESCRICAO,
PARC.NOME,
PARC.ID,
PARC.TELEFONE
FROM view_devol_resumo_faturamento D
INNER JOIN PCPEDC P ON D.NUMPED = P.NUMPED
INNER JOIN PCPRODUT PROD ON D.CODPROD = PROD.CODPROD
INNER JOIN PCCLIENT C ON D.CODCLI = C.CODCLI
INNER JOIN PCUSUARI U ON D.CODUSUR = U.CODUSUR
INNER JOIN PCCOB COB ON D.CODCOB = COB.CODCOB
INNER JOIN PCPLPAG PL ON D.CODPLPAG = PL.CODPLPAG
INNER JOIN PCDEPTO DEP ON PROD.CODEPTO = DEP.CODEPTO
INNER JOIN PCSECAO SEC ON PROD.CODSEC = SEC.CODSEC
INNER JOIN PCSUPERV S ON P.CODSUPERVISOR = S.CODSUPERVISOR
LEFT JOIN PCCIDADE CID ON C.CODCIDADE = CID.CODCIDADE
LEFT JOIN ESTPARCEIRO PARC ON P.CODUSUR3 = PARC.ID
LEFT JOIN PCCATEGORIA CAT ON (PROD.CODSEC = CAT.CODSEC AND PROD.CODCATEGORIA = CAT.CODCATEGORIA)
WHERE D.CONDVENDA IN (1, 7, 8)
AND D.CODCLI NOT IN (1)
AND D.CODPROD NOT IN (48500) -- REMOVE O PRODUTO FRETE
AND D.DTCANCEL IS NULL
AND D.DTENT >= TRUNC(SYSDATE) - (365*4);
-- batendo valores
SELECT
'QUERY_2' AS ORIGEM,
SUM(CASE
WHEN TIPO_FATURAMENTO = 'VENDA'
THEN SUB_TOTAL
ELSE 0
END) AS FATURAMENTO_BRUTO,
SUM(CASE
WHEN TIPO_FATURAMENTO = 'DEVOLUCAO'
THEN SUB_TOTAL
ELSE 0
END) AS DEVOLUCAO,
SUM(SUB_TOTAL) AS FATURAMENTO_LIQUIDO
FROM (
WITH TOTAIS_PEDIDO AS (
/* Agrega os totais por pedido */
SELECT
NUMPED,
SUM(QT * PVENDA) AS TOTAL_BRUTO,
COUNT(DISTINCT CODPROD) AS QTD_SKUS,
SUM(CASE WHEN CODPROD = 48500 THEN (QT * PVENDA) ELSE 0 END) AS TOTAL_FRETE_PED
FROM PCPEDI
GROUP BY NUMPED
)
/* --- BLOCO DE VENDAS --- */
SELECT
V.CODSUPERVMOV AS CODIGO_FILIAL,
C.CLIENTE AS NOME_CLIENTE,
C.EMAIL AS EMAIL_CLIENTE,
REGEXP_REPLACE(C.CGCENT, '[^0-9]', '') AS CPF,
C.CODCLI AS CODIGO_CLIENTE,
C.TIPOFJ AS TIPO_PESSOA,
C.SEXO,
C.DTNASC AS DATA_NASCIMENTO,
CID.NOMECIDADE,
C.TELENT AS TELEFONE,
C.ENDERENT AS ENDERECO,
C.NUMEROENT AS NUMERO,
C.BAIRROENT AS BAIRRO,
C.ESTENT AS ESTADO,
C.DTCADASTRO AS DATA_CADASTO,
C.DTPRIMCOMPRA AS DATA_PRIMEIRA_COMPRA,
C.DTULTCOMP AS DATA_ULTIMA_COMPRA,
V.DTSAIDA AS DATA_COMPRA,
V.NUMPED AS NUMERO_PEDIDO,
S.NOME AS NOME_LOJA,
P.CODSUPERVISOR AS CODIGO_SUPERVISOR,
U.NOME AS NOME_VENDEDOR,
V.CODUSUR AS CODIGO_VENDEDOR,
COB.COBRANCA AS METODO_PAGAMENTO,
PL.DESCRICAO AS PLANO_DE_PAGAMENTO,
TP.TOTAL_BRUTO AS TOTAL_COMPRA,
TP.QTD_SKUS AS QTD_TOTAL_PRODUTO,
GREATEST(NVL(P.VLTABELA, 0) - NVL(TP.TOTAL_BRUTO, 0), 0) AS TOTAL_DESCONTO,
NVL(TP.TOTAL_FRETE_PED, 0) AS TOTAL_FRETE,
V.CODPROD AS ID_PRODUTO,
PROD.DESCRICAO AS NOME_PRODUTO,
V.QT AS QTDE_PRODUTO,
(V.VLVENDA / DECODE(V.QT, 0, 1, V.QT)) AS PRECO_PRODUTO,
'VENDA' AS TIPO_FATURAMENTO,
V.VLVENDA AS SUB_TOTAL,
CAT.CATEGORIA AS CATEGORIA_PRODUTO,
SEC.DESCRICAO AS SECAO_PRODUTO,
DEP.DESCRICAO AS DEPARTAMENTO_PRODUTO,
PARC.NOME AS NOME_PARCEIRO,
PARC.ID AS CODIGO_PARCEIRO,
PARC.TELEFONE AS TELEFONE_PARCEIRO
FROM view_vendas_resumo_faturamento V
INNER JOIN PCPRODUT PROD ON V.CODPROD = PROD.CODPROD
INNER JOIN PCCLIENT C ON V.CODCLI = C.CODCLI
INNER JOIN PCPEDC P ON V.NUMPED = P.NUMPED
INNER JOIN PCUSUARI U ON V.CODUSUR = U.CODUSUR
INNER JOIN PCCOB COB ON V.CODCOB = COB.CODCOB
INNER JOIN PCPLPAG PL ON V.CODPLPAG = PL.CODPLPAG
INNER JOIN PCDEPTO DEP ON PROD.CODEPTO = DEP.CODEPTO
INNER JOIN PCSECAO SEC ON PROD.CODSEC = SEC.CODSEC
INNER JOIN PCSUPERV S ON P.CODSUPERVISOR = S.CODSUPERVISOR
LEFT JOIN TOTAIS_PEDIDO TP ON V.NUMPED = TP.NUMPED
LEFT JOIN PCCIDADE CID ON C.CODCIDADE = CID.CODCIDADE
LEFT JOIN ESTPARCEIRO PARC ON P.CODUSUR3 = PARC.ID
LEFT JOIN PCCATEGORIA CAT ON (PROD.CODSEC = CAT.CODSEC AND PROD.CODCATEGORIA = CAT.CODCATEGORIA)
WHERE V.CONDVENDA IN (1, 7)
--AND V.CODCLI NOT IN (1)
--AND V.CODPROD NOT IN (48500) -- REMOVE O PRODUTO FRETE
AND V.DTSAIDA >= TRUNC(SYSDATE) - (365*4)
UNION ALL
/* --- BLOCO DE DEVOLUÇÃO --- */
SELECT
D.CODSUPERVMOV,
C.CLIENTE,
C.EMAIL,
REGEXP_REPLACE(C.CGCENT, '[^0-9]', ''),
C.CODCLI,
C.TIPOFJ,
C.SEXO,
C.DTNASC,
CID.NOMECIDADE,
C.TELENT,
C.ENDERENT,
C.NUMEROENT,
C.BAIRROENT,
C.ESTENT,
C.DTCADASTRO,
C.DTPRIMCOMPRA,
C.DTULTCOMP,
D.DTENT,
D.NUMPED,
S.NOME,
P.CODSUPERVISOR,
U.NOME,
D.CODUSUR,
COB.COBRANCA,
PL.DESCRICAO,
D.VLDEVOLUCAO * -1,
1,
0,
0,
D.CODPROD,
PROD.DESCRICAO,
D.QT * -1,
(D.VLDEVOLUCAO / DECODE(D.QT, 0, 1, D.QT)) * -1,
'DEVOLUCAO',
D.VLDEVOLUCAO * -1,
CAT.CATEGORIA,
SEC.DESCRICAO,
DEP.DESCRICAO,
PARC.NOME,
PARC.ID,
PARC.TELEFONE
FROM view_devol_resumo_faturamento D
INNER JOIN PCPEDC P ON D.NUMPED = P.NUMPED
INNER JOIN PCPRODUT PROD ON D.CODPROD = PROD.CODPROD
INNER JOIN PCCLIENT C ON D.CODCLI = C.CODCLI
INNER JOIN PCUSUARI U ON D.CODUSUR = U.CODUSUR
INNER JOIN PCCOB COB ON D.CODCOB = COB.CODCOB
INNER JOIN PCPLPAG PL ON D.CODPLPAG = PL.CODPLPAG
INNER JOIN PCDEPTO DEP ON PROD.CODEPTO = DEP.CODEPTO
INNER JOIN PCSECAO SEC ON PROD.CODSEC = SEC.CODSEC
INNER JOIN PCSUPERV S ON P.CODSUPERVISOR = S.CODSUPERVISOR
LEFT JOIN PCCIDADE CID ON C.CODCIDADE = CID.CODCIDADE
LEFT JOIN ESTPARCEIRO PARC ON P.CODUSUR3 = PARC.ID
LEFT JOIN PCCATEGORIA CAT ON (PROD.CODSEC = CAT.CODSEC AND PROD.CODCATEGORIA = CAT.CODCATEGORIA)
WHERE D.CONDVENDA IN (1, 7, 8)
--AND D.CODCLI NOT IN (1)
--AND D.CODPROD NOT IN (48500) -- REMOVE O PRODUTO FRETE
AND D.DTCANCEL IS NULL
AND D.DTENT >= TRUNC(SYSDATE) - (365*4)
)
WHERE DATA_COMPRA >= DATE '2025-01-01'
AND DATA_COMPRA < DATE '2026-01-01'