-- SEVEN.VB_VENDA fonte

CREATE OR REPLACE FORCE EDITIONABLE VIEW "SEVEN"."VB_VENDA" ("TIPOFAT", "NUMTRANSVENDA", "DTVENDA", "NUMNOTA", "NUMPED", "CODFILIAL", "CODRCA", "CODCLI", "CODPROD", "NUMREGIAO", "CAIXA", "VENDAASSISTIDA", "VLDESCONTO", "VLVENDA", "VLVENDA_TABELA", "QT_VENDIDA_UND", "QT_VENDIDA_CX", "PESO", "VLCMV", "CODSUPERVISOR", "CODPLPAG", "NUMPARCELAS", "DTREC", "CODPARCEIRO", "CODCOB", "CODDEVOL", "CLASSEVENDA", "CLASSEESTOQUE", "CLASSEFREQUENCIA", "CLASSEFATURAMENTO", "CLASSERENTABILIDADE", "HORA") AS 
  SELECT 'venda' tipofat,
       f.numtransvenda,
       f.dtsaida dtvenda,
       f.numnota,
       f.numped,
       f.codfilial,
       f.codusur codrca,
       f.codcli,
       f.codprod,
       f.numregiao,
       f.caixa,
       f.vendaassistida,
       TO_NUMBER(SUM(NVL(f.vldesconto, 0))) vldesconto,
       TO_NUMBER(SUM(NVL(f.vlvenda, 0))) vlvenda,
       TO_NUMBER(SUM(NVL(f.vltabela, 0))) vlvenda_tabela,
       TO_NUMBER(SUM(NVL(f.qt, 0))) qt_vendida_und,
       TO_NUMBER(SUM(NVL(f.qt / x.qtunitcx, 0))) qt_vendida_cx,
       TO_NUMBER(SUM(NVL(f.pesobruto, 0))) peso,
       TO_NUMBER(SUM(NVL(f.vlcustofinb, 0))) vlcmv,
       F.CODSUPERVISOR,
       F.CODPLPAG,
       Z.NUMPARCELAS,
       TRUNC(F.DTSAIDA + Z.NUMPARCELAS * 30) DTREC,
       A.CODPARCEIRO,
       F.CODCOB,
       0 coddevol,
       ABCVENDA.CLASSEVENDA,
       ABCESTOQUE.CLASSEESTOQUE,
       SYSTOCK.CLASSEFREQUENCIA,
       SYSTOCK.CLASSEFATURAMENTO,
       SYSTOCK.CLASSERENTABILIDADE,
       (SELECT NVL(PCPEDC.HORAFAT, PCPEDC.HORA) HORA FROM PCPEDC WHERE PCPEDC.NUMTRANSVENDA = F.NUMTRANSVENDA AND ROWNUM =1) HORA
  FROM VIEW_VENDAS_RESUMO_FATURAMENTO f
  LEFT JOIN (SELECT codprod, qtunitcx FROM pcprodut) x
    on f.codprod = x.codprod
  LEFT JOIN PCNFSAID S
    ON S.NUMTRANSVENDA = f.NUMTRANSVENDA
  LEFT JOIN PCPLPAG Z
    ON Z.CODPLPAG = F.CODPLPAG
  LEFT JOIN (SELECT DISTINCT tipo, numped, codparceiro
               FROM ESVCOMISSAOPARCEIRO) A
    ON A.NUMPED = F.NUMPED
     AND A.TIPO = 'VENDA'
  LEFT JOIN (SELECT ESTABCPRODUTO.CODPROD, ESTABCPRODUTO.CLASSEVENDA
               FROM ESTABCPRODUTO
              WHERE ESTABCPRODUTO.CODFILIAL = '99'
                AND ESTABCPRODUTO.tipo = 'V' ) ABCVENDA
    ON ABCVENDA.CODPROD = F.CODPROD

  LEFT JOIN ESTSYSTOCKPRODUTO SYSTOCK
    ON SYSTOCK.CODPROD = F.CODPROD AND SYSTOCK.CODFILIAL = F.CODFILIAL
  LEFT JOIN (SELECT ESTABCPRODUTO.CODPROD, ESTABCPRODUTO.CLASSEESTOQUE
               FROM ESTABCPRODUTO
              WHERE ESTABCPRODUTO.CODFILIAL = '99'
                AND ESTABCPRODUTO.tipo = 'R' ) ABCESTOQUE
    ON ABCESTOQUE.CODPROD = F.CODPROD
 WHERE f.DTSAIDA >= '01/01/2023'
   AND f.CODFISCAL IN (512, 612)
   AND f.CONDVENDA in (1,7,5)
 GROUP BY f.numtransvenda,
          f.dtsaida,
          f.numnota,
          f.numped,
          f.codfilial,
          f.codusur,
          f.codcli,
          f.codprod,
          f.numregiao,
          f.caixa,
          f.vendaassistida,
          F.CODSUPERVISOR,
          F.CODPLPAG,
          Z.NUMPARCELAS,
          A.CODPARCEIRO,
          F.CODCOB,
          ABCVENDA.CLASSEVENDA,
          ABCESTOQUE.CLASSEESTOQUE,
          SYSTOCK.CLASSEFREQUENCIA,
          SYSTOCK.CLASSEFATURAMENTO,
          SYSTOCK.CLASSERENTABILIDADE

UNION

SELECT 'devol' tipofat,
       f.numtransvenda,
       f.dtent dtvenda,
       f.numnota,
       f.numped,
       f.codfilial,
       f.codusur codrca,
       f.codcli,
       f.codprod,
       f.numregiao,
       f.caixa,
       f.vendaassistida,
       0 vldesconto,
       TO_NUMBER(SUM(NVL(f.vldevolucao, 0))) * -1 vlvenda,
       0 vlvenda_tabela,
       TO_NUMBER(SUM(NVL(f.qt, 0))) * -1 qt_vendida_und,
       TO_NUMBER(SUM(NVL(f.qt / x.qtunitcx, 0))) * -1 qt_vendida_cx,
       TO_NUMBER(SUM(NVL(f.qt * x.pesobruto, 0))) * -1 peso,
       TO_NUMBER(SUM(NVL(f.vlcmvdevol, 0))) * -1 vlcmv,
       s.CODSUPERVISOR,
       F.CODPLPAG,
       Z.NUMPARCELAS,
       TRUNC(F.DTENT + Z.NUMPARCELAS * 30) DTREC,
       A.CODPARCEIRO,
       F.CODCOB,
       f.coddevol,
       ABCVENDA.CLASSEVENDA,
       ABCESTOQUE.CLASSEESTOQUE,
       SYSTOCK.CLASSEFREQUENCIA,
       SYSTOCK.CLASSEFATURAMENTO,
       SYSTOCK.CLASSERENTABILIDADE,
       (SELECT NVL(PCPEDC.HORAFAT, PCPEDC.HORA) HORA FROM PCPEDC WHERE PCPEDC.NUMTRANSVENDA = F.NUMTRANSVENDA AND ROWNUM =1) HORA
  FROM VIEW_DEVOL_RESUMO_FATURAMENTO f
  LEFT JOIN (SELECT codprod, qtunitcx, pesobruto FROM pcprodut) x
    on f.codprod = x.codprod
  LEFT JOIN PCNFSAID S
    ON S.NUMTRANSVENDA = f.NUMTRANSVENDA
  LEFT JOIN PCPLPAG Z
    ON Z.CODPLPAG = F.CODPLPAG
  LEFT JOIN (SELECT DISTINCT tipo, numped, codparceiro
               FROM ESVCOMISSAOPARCEIRO) A
    ON A.NUMPED = F.NUMPED
       AND A.TIPO = 'DEVOLUÇÃO'
  LEFT JOIN (SELECT ESTABCPRODUTO.CODPROD, ESTABCPRODUTO.CLASSEVENDA
               FROM ESTABCPRODUTO
              WHERE ESTABCPRODUTO.CODFILIAL = '99'
                AND ESTABCPRODUTO.tipo = 'V' ) ABCVENDA ON ABCVENDA.CODPROD = F.CODPROD
  LEFT JOIN ESTSYSTOCKPRODUTO SYSTOCK
    ON SYSTOCK.CODPROD = F.CODPROD AND SYSTOCK.CODFILIAL = F.CODFILIAL
  LEFT JOIN (SELECT ESTABCPRODUTO.CODPROD, ESTABCPRODUTO.CLASSEESTOQUE
               FROM ESTABCPRODUTO
              WHERE ESTABCPRODUTO.CODFILIAL = '99'
                AND ESTABCPRODUTO.tipo = 'R' ) ABCESTOQUE
     ON ABCESTOQUE.CODPROD = F.CODPROD
 WHERE f.DTENT >= '01/01/2023'
 GROUP BY f.numtransvenda,
          f.dtent,
          f.numnota,
          f.numped,
          f.codfilial,
          f.codusur,
          f.codcli,
          f.codprod,
          f.numregiao,
          f.caixa,
          f.vendaassistida,
          s.CODSUPERVISOR,
          F.CODPLPAG,
          Z.NUMPARCELAS,
          A.CODPARCEIRO,
          F.CODCOB,
          f.coddevol,
          ABCVENDA.CLASSEVENDA,
          ABCESTOQUE.CLASSEESTOQUE,
          SYSTOCK.CLASSEFREQUENCIA,
          SYSTOCK.CLASSEFATURAMENTO,
          SYSTOCK.CLASSERENTABILIDADE
;

GRANT SELECT ON "SEVEN"."VB_VENDA" TO "SEVENCONSULTA";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "SYSTOCK";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "SARRAF";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "CONSULTA";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "READ_GROUP";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "CONSULTA2COM";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "POSITIVA";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "BEATRIZ";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "LUIZ";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "KACIO";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "API";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "DOUGLAS";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "FELIPE";
  GRANT DELETE ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT INSERT ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT SELECT ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT UPDATE ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT READ ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT ON COMMIT REFRESH ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT QUERY REWRITE ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT DEBUG ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT FLASHBACK ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";
  GRANT MERGE VIEW ON "SEVEN"."VB_VENDA" TO "ADMIN_GROUP";