-- 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'