This commit is contained in:
gabriel 2026-02-21 12:47:21 -03:00
parent 3ec3b7896d
commit 2bf5460c17
6 changed files with 4369 additions and 0 deletions

1082
Categoria_clientes.sql Normal file

File diff suppressed because it is too large Load Diff

162
DITO-original(luiz).sql Normal file
View File

@ -0,0 +1,162 @@
SELECT
VENDAS.CODFILIAL CODIGO_FILIAL
,PCCLIENT.CLIENTE NOME_CLIENTE
,PCCLIENT.EMAIL EMAIL_CLIENTE
,REGEXP_REPLACE(PCCLIENT.CGCENT, '[^0-9]', '') CPF
,PCCLIENT.CODCLI CODIGO_CLIENTE
,PCCLIENT.TIPOFJ TIPO_PESSOA
,PCCLIENT.SEXO
,PCCLIENT.DTNASC DATA_NASCIMENTO
,PCCIDADE.NOMECIDADE
,PCCLIENT.TELENT TELEFONE
,PCCLIENT.ENDERENT ENDERECO
,PCCLIENT.NUMEROENT NUMERO
,PCCLIENT.BAIRROENT BAIRRO
,PCCLIENT.ESTENT ESTADO
,PCCLIENT.DTCADASTRO DATA_CADASTO
,PCCLIENT.DTPRIMCOMPRA DATA_PRIMEIRA_COMPRA
,PCCLIENT.DTULTCOMP DATA_ULTIMA_COMPRA
,PCPEDC.DATA DATA_COMPRA
,PCPEDC.NUMPED NUMERO_PEDIDO
,PCSUPERV.NOME NOME_LOJA
,PCPEDC.CODSUPERVISOR CODIGO_SUPERVISOR
,PCUSUARI.NOME NOME_VENDEDOR
,PCPEDC.CODUSUR CODIGO_VENDEDOR
,PCCOB.COBRANCA METODO_PAGAMENTO
,PCPLPAG.DESCRICAO PLANO_DE_PAGAMENTO
,( SELECT SUM(P.QT*P.PVENDA)
FROM PCPEDI P
WHERE P.NUMPED = PCPEDC.NUMPED ) TOTAL_COMPRA
,( SELECT COUNT(1)
FROM PCPEDI P
WHERE P.NUMPED
= PCPEDC.NUMPED ) QTD_TOTAL_PRODUTO
,GREATEST(
(PCPEDC.VLTABELA -
( SELECT SUM(P.QT*P.PVENDA)
FROM PCPEDI P
WHERE P.NUMPED = PCPEDC.NUMPED ) ),0) TOTAL_DESCONTO
,( SELECT SUM(P.QT*P.PVENDA)
FROM PCPEDI P
WHERE P.NUMPED = PCPEDC.NUMPED
AND P.CODPROD = 48500 ) TOTAL_FRETE
,VENDAS.CODPROD ID_PRODUTO
,PCPRODUT.DESCRICAO NOME_PRODUTO
,VENDAS.QT QTDE_PRODUTO
,( VENDAS.VLVENDA / DECODE(VENDAS.QT,0,1,VENDAS.QT) ) PRECO_PRODUTO
,'VENDA' TIPO_FATURAMENTO
,VENDAS.VLVENDA SUB_TOTAL
,PCCATEGORIA.CATEGORIA CATEGORIA_PRODUTO
,PCSECAO.DESCRICAO SECAO_PRODUTO
,PCDEPTO.DESCRICAO DEPARTAMENTO_PRODUTO
,ESTPARCEIRO.nome NOME_PARCEIRO
,ESTPARCEIRO.ID CODIGO_PARCEIRO
,ESTPARCEIRO.TELEFONE TELEFONE_PARCEIRO
FROM view_vendas_resumo_faturamento VENDAS, PCPRODUT, PCCLIENT, PCUSUARI, PCSUPERV, PCCOB, PCPLPAG,
ESTPARCEIRO, PCDEPTO, PCSECAO, PCCATEGORIA, PCCIDADE, PCPEDC
WHERE VENDAS.CODPROD = PCPRODUT.CODPROD
AND VENDAS.CODCLI = PCCLIENT.CODCLI
AND VENDAS.NUMPED = PCPEDC.NUMPED
AND PCCLIENT.CODCIDADE = PCCIDADE.CODCIDADE (+)
AND VENDAS.CODUSUR = PCUSUARI.CODUSUR
AND PCPEDC.CODSUPERVISOR = PCSUPERV.CODSUPERVISOR
AND VENDAS.CODCOB = PCCOB.CODCOB
AND VENDAS.CODPLPAG = PCPLPAG.CODPLPAG
AND PCPEDC.CODUSUR3 = ESTPARCEIRO.ID (+)
AND PCPRODUT.CODEPTO = PCDEPTO.CODEPTO
AND PCPRODUT.CODSEC = PCSECAO.CODSEC
AND PCPRODUT.CODSEC = PCCATEGORIA.CODSEC (+)
AND PCPRODUT.CODCATEGORIA = PCCATEGORIA.CODCATEGORIA (+)
AND VENDAS.CONDVENDA IN (1, 7)
AND VENDAS.CODCLI NOT IN (1)
AND VENDAS.DTSAIDA >= TRUNC(SYSDATE) - (365*4)
UNION ALL
SELECT
DEVOLUCAO.CODFILIAL CODIGO_FILIAL
,PCCLIENT.CLIENTE NOME_CLIENTE
,PCCLIENT.EMAIL EMAIL_CLIENTE
,REGEXP_REPLACE(PCCLIENT.CGCENT, '[^0-9]', '') CPF
,PCCLIENT.CODCLI CODIGO_CLIENTE
,PCCLIENT.TIPOFJ TIPO_PESSOA
,PCCLIENT.SEXO
,PCCLIENT.DTNASC DATA_NASCIMENTO
,PCCIDADE.NOMECIDADE
,PCCLIENT.TELENT TELEFONE
,PCCLIENT.ENDERENT ENDERECO
,PCCLIENT.NUMEROENT NUMERO
,PCCLIENT.BAIRROENT BAIRRO
,PCCLIENT.ESTENT ESTADO
,PCCLIENT.DTCADASTRO DATA_CADASTO
,PCCLIENT.DTPRIMCOMPRA DATA_PRIMEIRA_COMPRA
,PCCLIENT.DTULTCOMP DATA_ULTIMA_COMPRA
,DEVOLUCAO.DTENT DATA_COMPRA
,DEVOLUCAO.NUMPED NUMERO_PEDIDO
,PCSUPERV.NOME NOME_LOJA
,PCPEDC.CODSUPERVISOR CODIGO_SUPERVISOR
,PCUSUARI.NOME NOME_VENDEDOR
,DEVOLUCAO.CODUSUR CODIGO_VENDEDOR
,PCCOB.COBRANCA METODO_PAGAMENTO
,PCPLPAG.DESCRICAO PLANO_DE_PAGAMENTO
,DEVOLUCAO.VLDEVOLUCAO * (-1) TOTAL_COMPRA
,( SELECT COUNT(1)
FROM PCMOV M
WHERE M.NUMTRANSENT
= DEVOLUCAO.NUMTRANSENT ) QTD_TOTAL_PRODUTO
,( ( SELECT SUM(M.QT * M.PTABELA)
FROM PCMOV M
WHERE M.NUMTRANSENT = DEVOLUCAO.NUMTRANSENT ) - DEVOLUCAO.VLDEVOLUCAO ) * (-1) TOTAL_DESCONTO
,0 TOTAL_FRETE
,DEVOLUCAO.CODPROD ID_PRODUTO
,PCPRODUT.DESCRICAO NOME_PRODUTO
,DEVOLUCAO.QT * (-1) QTDE_PRODUTO
,( DEVOLUCAO.VLDEVOLUCAO / DECODE(DEVOLUCAO.QT,0,1,DEVOLUCAO.QT) ) * (-1) PRECO_PRODUTO
,'DEVOLUCAO' TIPO_FATURAMENTO
,DEVOLUCAO.VLDEVOLUCAO * (-1) SUB_TOTAL
,PCCATEGORIA.CATEGORIA CATEGORIA_PRODUTO
,PCSECAO.DESCRICAO SECAO_PRODUTO
,PCDEPTO.DESCRICAO DEPARTAMENTO_PRODUTO
,ESTPARCEIRO.nome NOME_PARCEIRO
,ESTPARCEIRO.ID CODIGO_PARCEIRO
,ESTPARCEIRO.TELEFONE TELEFONE_PARCEIRO
FROM view_devol_resumo_faturamento DEVOLUCAO, PCPEDC, PCPRODUT, PCCLIENT, PCUSUARI, PCSUPERV, PCCOB, PCPLPAG,
PCDEPTO, PCSECAO, PCCATEGORIA, PCCIDADE, ESTPARCEIRO
WHERE DEVOLUCAO.NUMPED = PCPEDC.NUMPED
AND PCPEDC.CODUSUR3 = ESTPARCEIRO.ID (+)
AND DEVOLUCAO.CODPROD = PCPRODUT.CODPROD
AND DEVOLUCAO.CODCLI = PCCLIENT.CODCLI
AND PCCLIENT.CODCIDADE = PCCIDADE.CODCIDADE (+)
AND DEVOLUCAO.CODUSUR = PCUSUARI.CODUSUR
AND PCPEDC.CODSUPERVISOR = PCSUPERV.CODSUPERVISOR
AND DEVOLUCAO.CODCOB = PCCOB.CODCOB
AND DEVOLUCAO.CODPLPAG = PCPLPAG.CODPLPAG
AND PCPRODUT.CODEPTO = PCDEPTO.CODEPTO
AND PCPRODUT.CODSEC = PCSECAO.CODSEC
AND PCPRODUT.CODSEC = PCCATEGORIA.CODSEC (+)
AND PCPRODUT.CODCATEGORIA = PCCATEGORIA.CODCATEGORIA (+)
AND DEVOLUCAO.CONDVENDA IN (1, 7, 8)
AND DEVOLUCAO.CODCLI NOT IN (1)
AND DEVOLUCAO.DTENT >= TRUNC(SYSDATE) - (365*4)
-- batendo valores
SELECT
'QUERY CONFERÊNCIA' AS ORIGEM,
(SELECT SUM(VLVENDA) FROM VIEW_VENDAS_RESUMO_FATURAMENTO
WHERE CONDVENDA IN (1,7) AND CODCLI NOT IN (1) AND EXTRACT(YEAR FROM DTSAIDA) = 2025) AS VENDA_BRUTA,
(SELECT SUM(VLDEVOLUCAO) FROM VIEW_DEVOL_RESUMO_FATURAMENTO
WHERE DTCANCEL IS NULL AND EXTRACT(YEAR FROM DTENT) = 2025) AS DEVOLUCAO
FROM DUAL
UNION ALL
SELECT
'VIEW DITO (SOMA DIRETA)' AS ORIGEM,
SUM(CASE WHEN TIPO_FATURAMENTO = 'VENDA' THEN SUB_TOTAL ELSE 0 END) AS VENDA_BRUTA,
SUM(CASE WHEN TIPO_FATURAMENTO = 'DEVOLUCAO' THEN ABS(SUB_TOTAL) ELSE 0 END) AS DEVOLUCAO
FROM SEVEN.ESV_DITO_BASE_COMPRA
WHERE EXTRACT(YEAR FROM DATA_COMPRA) = 2025

293
DITO-reformulado.sql Normal file
View File

@ -0,0 +1,293 @@
-- 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'

267
TABLE_HIST_BLOQ_SEMANAL.sql Normal file
View File

@ -0,0 +1,267 @@
-- Table HIST_BLOQUEIO_SEMANAL
-- CREATE TABLE
CREATE TABLE HIST_BLOQUEIO_SABADO (
DATA_SABADO DATE NOT NULL,
TIPO_BLOQUEIO VARCHAR2(30) NOT NULL,
CODFILIAL VARCHAR2(10) NOT NULL,
CODPROD NUMBER NOT NULL,
DESCRICAO VARCHAR2(200),
MARCA VARCHAR2(80),
QTESTGER NUMBER(18,4),
QT NUMBER(18,4),
CUSTOFIN NUMBER(18,6),
VALOR NUMBER(18,2),
DATA_TIPO DATE, -- (DADOS.DATA)
CODMOTIVO NUMBER,
MOTIVO VARCHAR2(200),
CODFUNC NUMBER,
FUNCIONARIO VARCHAR2(120),
HISTORICO VARCHAR2(4000),
FAIXA_PRIM VARCHAR2(30),
DT_CARGA TIMESTAMP DEFAULT SYSTIMESTAMP NOT NULL,
CONSTRAINT PK_HIST_BLOQ_SAB PRIMARY KEY
(DATA_SABADO, CODFILIAL, CODPROD, TIPO_BLOQUEIO)
);
CREATE INDEX IX_HIST_BLOQ_SAB_01
ON HIST_BLOQUEIO_SABADO (CODFILIAL, CODPROD, DATA_SABADO);
CREATE INDEX IX_HIST_BLOQ_SAB_02
ON HIST_BLOQUEIO_SABADO (DATA_SABADO, TIPO_BLOQUEIO, FAIXA_PRIM);
-- CREATE PROCEDURE
CREATE OR REPLACE PROCEDURE PRC_SNAPSHOT_BLOQUEIO_SABADO (
P_DATA_BASE IN DATE DEFAULT SYSDATE
) AS
V_SABADO DATE;
BEGIN
V_SABADO := TRUNC(P_DATA_BASE,'IW') + 5; -- sábado
DELETE FROM HIST_BLOQUEIO_SABADO
WHERE DATA_SABADO = V_SABADO;
INSERT INTO HIST_BLOQUEIO_SABADO (
DATA_SABADO, TIPO_BLOQUEIO, CODFILIAL, CODPROD,
DESCRICAO, MARCA, QTESTGER,
QT, CUSTOFIN, VALOR,
DATA_TIPO, CODMOTIVO, MOTIVO, CODFUNC, FUNCIONARIO, HISTORICO,
FAIXA_PRIM, DT_CARGA
)
WITH
/* ---------------------------------------------------------
BASE ESTOQUE (fonte de quantidades da 9871)
--------------------------------------------------------- */
BASE_EST AS (
SELECT
E.CODFILIAL,
E.CODPROD,
NVL(E.QTBLOQUEADA,0) AS QT_BLOQ_TOTAL,
NVL(E.QTINDENIZ,0) AS QT_AVARIA,
NVL(E.QTEXPOSICAO,0) AS QT_EXPOSICAO,
E.QTESTGER,
NVL(E.CUSTOFIN,0) AS CUSTOFIN
FROM PCEST E
),
/* ---------------------------------------------------------
ÚLTIMO MOV 53 ( para DATA/CODMOTIVO/CODFUNC/HIST)
--------------------------------------------------------- */
MOV53 AS (
SELECT
CODFILIAL, CODPROD,
TRUNC(DTINCLUSAO) AS DATA_EXPO,
CODMOTIVO,
CODFUNC,
HISTORICO
FROM (
SELECT
M.*,
ROW_NUMBER() OVER (
PARTITION BY M.CODFILIAL, M.CODPROD
ORDER BY M.DTINCLUSAO DESC, M.ROWID DESC
) RN
FROM ESTMOVBLOQESTOQUE M
WHERE M.CODMOTIVO IN (53)
)
WHERE RN = 1
),
/* ---------------------------------------------------------
ÚLTIMO EA (AVARIA) para DATA/CODMOTIVO/CODFUNC/HIST
--------------------------------------------------------- */
EA AS (
SELECT
CODFILIAL, CODPROD,
TRUNC(DATA) AS DATA_EA,
CODMOTIVO,
CODFUNC,
HISTORICO
FROM (
SELECT
M.*,
ROW_NUMBER() OVER (
PARTITION BY M.CODFILIAL, M.CODPROD
ORDER BY TRUNC(M.DATA) DESC, M.ROWID DESC
) RN
FROM ESTMOVBLOQESTOQUE M
WHERE M.TIPO = 'EA'
)
WHERE RN = 1
),
/* ---------------------------------------------------------
Data ENTRADA (último B no log, exceto 9871) igual 8189
--------------------------------------------------------- */
DT_ENTRADA AS (
SELECT CODFILIAL, CODPROD, MAX(TRUNC(DATA)) AS DATA_ENT
FROM ESTLOGBLOQESTOQUE
WHERE PROGRAMA NOT LIKE '%9871%'
AND TIPOBLOQUEIO = 'B'
GROUP BY CODFILIAL, CODPROD
),
/* ---------------------------------------------------------
EXPOSIÇÃO (lógica 9871)
--------------------------------------------------------- */
EXPOSICAO AS (
SELECT
'BLOQUEIO EXPOSICAO' AS TIPO_BLOQUEIO,
B.QT_EXPOSICAO AS QUANTIDADE,
M53.DATA_EXPO AS DATA,
B.CODPROD,
B.CODFILIAL,
M53.CODMOTIVO,
M53.CODFUNC,
M53.HISTORICO
FROM BASE_EST B
LEFT JOIN MOV53 M53
ON M53.CODFILIAL = B.CODFILIAL
AND M53.CODPROD = B.CODPROD
WHERE B.QT_EXPOSICAO > 0
),
/* ---------------------------------------------------------
MANUAL (lógica 9871) = QTBLOQMANUAL - QTEXPOSICAO
--------------------------------------------------------- */
MANUAL AS (
SELECT
'BLOQUEIO MANUAL' AS TIPO_BLOQUEIO,
GREATEST(NVL(EBP.QTBLOQMANUAL,0) - B.QT_EXPOSICAO, 0) AS QUANTIDADE,
TRUNC(EBP.DTPRIMBLOQUEIO) AS DATA,
B.CODPROD,
B.CODFILIAL,
CAST(NULL AS NUMBER) AS CODMOTIVO,
CAST(NULL AS NUMBER) AS CODFUNC,
CAST(NULL AS VARCHAR2(4000)) AS HISTORICO
FROM BASE_EST B
LEFT JOIN ESTBLOQUEIOPRODUTO EBP
ON EBP.CODFILIAL = B.CODFILIAL
AND EBP.CODPROD = B.CODPROD
WHERE GREATEST(NVL(EBP.QTBLOQMANUAL,0) - B.QT_EXPOSICAO, 0) > 0
),
/* ---------------------------------------------------------
ENTRADA (lógica 9871 = 8189)
Entrada = QTBLOQUEADA - QTINDENIZ - QTBLOQMANUAL
--------------------------------------------------------- */
ENTRADA AS (
SELECT
'BLOQUEIO ENTRADA' AS TIPO_BLOQUEIO,
GREATEST(B.QT_BLOQ_TOTAL - B.QT_AVARIA - NVL(EBP.QTBLOQMANUAL,0), 0) AS QUANTIDADE,
X.DATA_ENT AS DATA,
B.CODPROD,
B.CODFILIAL,
CAST(NULL AS NUMBER) AS CODMOTIVO,
CAST(NULL AS NUMBER) AS CODFUNC,
CAST(NULL AS VARCHAR2(4000)) AS HISTORICO
FROM BASE_EST B
LEFT JOIN ESTBLOQUEIOPRODUTO EBP
ON EBP.CODFILIAL = B.CODFILIAL
AND EBP.CODPROD = B.CODPROD
INNER JOIN DT_ENTRADA X
ON X.CODFILIAL = B.CODFILIAL
AND X.CODPROD = B.CODPROD
WHERE GREATEST(B.QT_BLOQ_TOTAL - B.QT_AVARIA - NVL(EBP.QTBLOQMANUAL,0), 0) > 0
),
/* ---------------------------------------------------------
AVARIA (quantidade vem do PCEST.QTINDENIZ)
--------------------------------------------------------- */
AVARIA AS (
SELECT
'BLOQUEIO AVARIA' AS TIPO_BLOQUEIO,
B.QT_AVARIA AS QUANTIDADE,
EA.DATA_EA AS DATA,
B.CODPROD,
B.CODFILIAL,
EA.CODMOTIVO,
EA.CODFUNC,
EA.HISTORICO
FROM BASE_EST B
LEFT JOIN EA
ON EA.CODFILIAL = B.CODFILIAL
AND EA.CODPROD = B.CODPROD
WHERE B.QT_AVARIA > 0
),
DADOS AS (
SELECT * FROM EXPOSICAO
UNION ALL
SELECT * FROM MANUAL
UNION ALL
SELECT * FROM ENTRADA
UNION ALL
SELECT * FROM AVARIA
)
SELECT
V_SABADO AS DATA_SABADO,
DADOS.TIPO_BLOQUEIO,
TO_CHAR(DADOS.CODFILIAL) AS CODFILIAL,
DADOS.CODPROD,
P.DESCRICAO,
M.MARCA,
E.QTESTGER,
DADOS.QUANTIDADE AS QT,
ROUND(E.CUSTOFIN, 2) AS CUSTOFIN,
ROUND(DADOS.QUANTIDADE * E.CUSTOFIN, 2) AS VALOR,
DADOS.DATA AS DATA_TIPO,
DADOS.CODMOTIVO,
TD.MOTIVO,
DADOS.CODFUNC,
F.NOME AS FUNCIONARIO,
DADOS.HISTORICO,
CASE
WHEN DADOS.DATA IS NULL THEN '?'
WHEN V_SABADO - TRUNC(DADOS.DATA) <= 3 THEN '1 - 0 A 3 DIAS'
WHEN V_SABADO - TRUNC(DADOS.DATA) <= 7 THEN '2 - 4 A 7 DIAS'
WHEN V_SABADO - TRUNC(DADOS.DATA) <= 14 THEN '3 - 8 A 14 DIAS'
WHEN V_SABADO - TRUNC(DADOS.DATA) <= 30 THEN '4 - 15 A 30 DIAS'
WHEN V_SABADO - TRUNC(DADOS.DATA) <= 60 THEN '5 - 30 A 60 DIAS'
ELSE '6 - 60 + DIAS'
END AS FAIXA_PRIM,
SYSTIMESTAMP AS DT_CARGA
FROM DADOS
JOIN PCPRODUT P
ON P.CODPROD = DADOS.CODPROD
JOIN PCEST E
ON E.CODPROD = DADOS.CODPROD
AND E.CODFILIAL = DADOS.CODFILIAL
LEFT JOIN PCMARCA M
ON M.CODMARCA = P.CODMARCA
LEFT JOIN PCTABDEV TD
ON TD.CODDEVOL = DADOS.CODMOTIVO
LEFT JOIN PCEMPR F
ON F.MATRICULA = DADOS.CODFUNC;
COMMIT;
END;
/
-- job (todo sábado)
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'JOB_SNAPSHOT_BLOQUEIO_SABADO',
job_type => 'STORED_PROCEDURE',
job_action => 'PRC_SNAPSHOT_BLOQUEIO_SABADO',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=WEEKLY;BYDAY=SAT;BYHOUR=23;BYMINUTE=55;BYSECOND=0',
enabled => TRUE
);
END;
/

2366
qryProdutos9930.sql Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,199 @@
-- 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');