Descrição: 


Tela de Fechamento de Cupom>>Pre Validação>> Inserir o filtro>>Vendas Duplicadas


O que verificar? 


Verificar através do banco de dados se as vendas são realmente duplicadas. Aplicando o script:

SELECT V.NRNOTAFISCALCE, V.DTVENDA, V.NRSEQVENDA, V.CDFILIAL, V.CDCAIXA

     FROM VENDA V

    WHERE V.CDFILIAL    = '0032'

      AND V.CDCAIXA  = '001'

       V.DTENTRVENDA between '01/01/2018' AND '31/01/2018'

      AND (EXISTS (SELECT NRNOTAFISCALCE

             FROM VENDA

            WHERE CDFILIAL       = V.CDFILIAL

              AND CDCAIXA        = V.CDCAIXA

              AND DTENTRVENDA    = V.DTENTRVENDA

              AND NRNOTAFISCALCE = V.NRNOTAFISCALCE

              AND NRSEQVENDA    <> V.NRSEQVENDA) OR EXISTS (SELECT DTVENDA

       FROM VENDA

WHERE CDFILIAL    = V.CDFILIAL

 AND CDCAIXA     = V.CDCAIXA

 AND DTENTRVENDA = V.DTENTRVENDA

 AND DTVENDA     = V.DTVENDA

 AND NRSEQVENDA <> V.NRSEQVENDA))

   MINUS

   SELECT V.NRNOTAFISCALCE, V.DTVENDA, MIN(V.NRSEQVENDA) AS NRSEQVENDA, V.CDFILIAL, V.CDCAIXA

     FROM VENDA V

    WHERE V.CDFILIAL    = '0032'

      AND V.CDCAIXA  = '001'

       V.DTENTRVENDA between '01/01/2018' AND '31/01/2018'

      AND (EXISTS (SELECT NRNOTAFISCALCE

               FROM VENDA

              WHERE CDFILIAL       = V.CDFILIAL

                AND CDCAIXA        = V.CDCAIXA

                AND DTENTRVENDA    = V.DTENTRVENDA

                AND NRNOTAFISCALCE = V.NRNOTAFISCALCE

                AND NRSEQVENDA    <> V.NRSEQVENDA) OR EXISTS (SELECT DTVENDA

         FROM VENDA

WHERE CDFILIAL    = V.CDFILIAL

 AND CDCAIXA     = V.CDCAIXA

 AND DTENTRVENDA = V.DTENTRVENDA

 AND DTVENDA     = V.DTVENDA

 AND NRSEQVENDA <> V.NRSEQVENDA))

   GROUP BY V.NRNOTAFISCALCE, V.DTVENDA, V.CDFILIAL, V.CDCAIXA

   ORDER BY 1, 2 

usando como filtro (filial, caixa,data)

Solução: *

BEGIN

FOR VENDA_DUP IN

  (SELECT V.NRNOTAFISCALCE, V.DTVENDA, V.NRSEQVENDA, V.CDFILIAL, V.CDCAIXA

     FROM VENDA V

    WHERE V.CDFILIAL    = '0032'

      AND V.CDCAIXA  = '001'

       V.DTENTRVENDA between '01/01/2018' AND '31/01/2018'

      AND (EXISTS (SELECT NRNOTAFISCALCE

             FROM VENDA

            WHERE CDFILIAL       = V.CDFILIAL

              AND CDCAIXA        = V.CDCAIXA

              AND DTENTRVENDA    = V.DTENTRVENDA

              AND NRNOTAFISCALCE = V.NRNOTAFISCALCE

              AND NRSEQVENDA    <> V.NRSEQVENDA) OR EXISTS (SELECT DTVENDA

       FROM VENDA

WHERE CDFILIAL    = V.CDFILIAL

 AND CDCAIXA     = V.CDCAIXA

 AND DTENTRVENDA = V.DTENTRVENDA

 AND DTVENDA     = V.DTVENDA

 AND NRSEQVENDA <> V.NRSEQVENDA))

   MINUS

SELECT V.NRNOTAFISCALCE, V.DTVENDA, MIN(V.NRSEQVENDA) AS NRSEQVENDA, V.CDFILIAL, V.CDCAIXA

     FROM VENDA V

    WHERE V.CDFILIAL    = '0032'

      AND V.CDCAIXA  = '001'

       V.DTENTRVENDA between '01/01/2018' AND '31/01/2018'

      AND (EXISTS (SELECT NRNOTAFISCALCE

               FROM VENDA

              WHERE CDFILIAL       = V.CDFILIAL

                AND CDCAIXA        = V.CDCAIXA

                AND DTENTRVENDA    = V.DTENTRVENDA

                AND NRNOTAFISCALCE = V.NRNOTAFISCALCE

                AND NRSEQVENDA    <> V.NRSEQVENDA) OR EXISTS (SELECT DTVENDA

         FROM VENDA

WHERE CDFILIAL    = V.CDFILIAL

AND CDCAIXA     = V.CDCAIXA

AND DTENTRVENDA = V.DTENTRVENDA

AND DTVENDA     = V.DTVENDA

AND NRSEQVENDA <> V.NRSEQVENDA))

   GROUP BY V.NRNOTAFISCALCE, V.DTVENDA, V.CDFILIAL, V.CDCAIXA

   ORDER BY 1, 2) LOOP

   DELETE

     FROM ITVENDAIMPOS

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM ITVENDACAN

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM ITEMVENDAEST

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM ITEMVENDA

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM EXTRATOCONS

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM MOVICLIE

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM MOVCAIXA

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM ARQXMLNFCE

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM ESTORNOVND

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

   DELETE

     FROM VENDA

    WHERE CDFILIAL   = VENDA_DUP.CDFILIAL

      AND CDCAIXA    = VENDA_DUP.CDCAIXA

      AND NRSEQVENDA = VENDA_DUP.NRSEQVENDA;

END LOOP;

COMMIT;

END;

; /





Contribuído por Amanda Silva  - Revisado por Barbara Silva - Odhen
Atualizado em 07/03/2018