CREATE OR REPLACE PROCEDURE LIMPEZA_VENDAS(
   P_NRLISTA       IN VARCHAR2,
   P_DTFINAL       IN DATE,
   P_DSSISTLIMPEZ  IN VARCHAR2,
   P_NMOPERLIMPEZ  IN VARCHAR2,
   P_IDSISTEMA     IN VARCHAR2)
AS
   V_ERROR             VARCHAR2(2000);
   V_NRORDEM           VARCHAR2(03);
   V_DSIP              VARCHAR2(50);
   V_DSUSUARIO         VARCHAR2(50);
   V_DSRDM             VARCHAR2(50);
   V_DSMETODO          VARCHAR2(250);
   V_DSOPERADOR        VARCHAR2(12);
   V_EXCLUTURCAIXA     NUMBER := 0;
   V_EXCLUMOVCAIXA     NUMBER := 0;
   V_EXCLUMOVICLIE     NUMBER := 0;
   V_EXCLUVENDA        NUMBER := 0;
   V_EXCLUITEMVENDA    NUMBER := 0;
   V_PASSO             NUMBER := 0;
   V_AUX               NUMBER := 0;

   V_CDFILIAL          VARCHAR2(4);

   V_DTHRFINLIMPEZA  DATE;

   CURSOR C_LISTA IS (SELECT CDFILIAL
                      FROM TRABLIMPFILIAL
                      WHERE IDLIMPEZA = P_IDSISTEMA);

   PROCEDURE VERIFTIMEOUT(DTLIMITE IN DATE)
   IS
   BEGIN
      IF SYSDATE > DTLIMITE THEN
         COMMIT;
         RAISE_APPLICATION_ERROR(-20001,'TIMEOUT - EXCECAO PROPOSITAL TEKNISA');
      END IF;
   END;

BEGIN

   WEBTUNNING(V_DSIP, V_DSUSUARIO, V_DSRDM, V_DSMETODO, V_DSOPERADOR);

   V_NRORDEM := '0';

   DELETE FROM TRABPROCLIMPEZA
   WHERE IDLIMPEZA = P_IDSISTEMA;

   UPDATE TRABLIMPEZA
      SET IDSTATUSLIMPEZA = 'A'
    WHERE IDLIMPEZA = P_IDSISTEMA;

   --PEGA A DATA INICIAL E FINAL DA EXECUCAO
   SELECT TO_DATE(TO_CHAR(SYSDATE,'DDMMYYYY') || HRFINLIMPEZA||'00','DDMMYYYYHH24MISS')
   INTO V_DTHRFINLIMPEZA
   FROM TRABLIMPEZA
   WHERE IDLIMPEZA = P_IDSISTEMA;

   IF V_DTHRFINLIMPEZA <= SYSDATE THEN
      V_DTHRFINLIMPEZA := V_DTHRFINLIMPEZA + 1;
   END IF;

   COMMIT;

   /* TABELA SOLICITA  */
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

   UPDATE TABLIMPEZA
      SET NRORDEMLIMPEZA = V_NRORDEM
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'TURCAIXA';

   IF NOT(SQL%ROWCOUNT > 0) THEN
      INSERT INTO TABLIMPEZA
      (IDLIMPEZA, NMTABELALIMP, NRORDEMLIMPEZA)
      VALUES
      (P_IDSISTEMA, 'TURCAIXA', V_NRORDEM);
   END IF;

   INSERT INTO TRABPROCLIMPEZA
     (IDLIMPEZA, NMTABELALIMP, IDSITUPROCLIMP)
   VALUES
      (P_IDSISTEMA, 'TURCAIXA', 'A');

   COMMIT;
   V_PASSO := 1;
   OPEN C_LISTA;
   LOOP
      FETCH C_LISTA INTO V_CDFILIAL;
      EXIT WHEN C_LISTA%NOTFOUND;
      V_PASSO := 2;
      FOR C_TURCAIXA IN (SELECT CDFILIAL, CDCAIXA, DTABERCAIX, ROWID AS LINHA
                           FROM TURCAIXA
                          WHERE TURCAIXA.DTMOVTURCAIX < P_DTFINAL
                            AND TURCAIXA.CDFILIAL = V_CDFILIAL)
      LOOP
          V_PASSO := 3;
          FOR C_FECHACAIXA IN
             (SELECT ROWID
               FROM FECHACAIXA
              WHERE CDFILIAL = C_TURCAIXA.CDFILIAL
                AND CDCAIXA = C_TURCAIXA.CDCAIXA
                AND DTABERCAIX = C_TURCAIXA.DTABERCAIX)
          LOOP
             DELETE FROM FECHACAIXA
             WHERE ROWID = C_FECHACAIXA.ROWID;
             COMMIT;
             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          END LOOP;

          /*Verifica se a procedure estourou o tempo limite*/
          VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          V_PASSO := 4;
          FOR C_EXTRATOCONS IN
             (SELECT ROWID
               FROM EXTRATOCONS
              WHERE CDFILIAL = C_TURCAIXA.CDFILIAL AND
                   CDCAIXA = C_TURCAIXA.CDCAIXA AND
                   DTABERCAIX = C_TURCAIXA.DTABERCAIX)
          LOOP
             DELETE FROM EXTRATOCONS
              WHERE ROWID = C_EXTRATOCONS.ROWID;
             COMMIT;
             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          END LOOP;

          /*Verifica se a procedure estourou o tempo limite*/
          VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          V_PASSO := 5;
          FOR C_TURCAIXATMP IN
             (SELECT ROWID
                FROM TURCAIXATMP
               WHERE CDFILIAL = C_TURCAIXA.CDFILIAL
                 AND CDCAIXA = C_TURCAIXA.CDCAIXA
                 AND DTABERCAIX = C_TURCAIXA.DTABERCAIX)
          LOOP
             DELETE FROM TURCAIXATMP
              WHERE TURCAIXATMP.ROWID = C_TURCAIXATMP.ROWID;
             COMMIT;
             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          END LOOP;

          /*Verifica se a procedure estourou o tempo limite*/
          VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          V_PASSO := 6;
          /*Movimentacao do caixa*/
          FOR C_MOVCAIXA IN (SELECT CDFILIAL, CDCAIXA, DTABERCAIX, NRSEQUMOVI, ROWID AS LINHA
                               FROM MOVCAIXA
                              WHERE CDFILIAL   = C_TURCAIXA.CDFILIAL AND
                                    CDCAIXA    = C_TURCAIXA.CDCAIXA  AND
                                    DTABERCAIX = C_TURCAIXA.DTABERCAIX)
          LOOP
             /*Movimentacao do cliente*/
             V_AUX := 0;
             V_PASSO := 7;
             FOR C_MOVICLIE IN
                (SELECT ROWID
                   FROM MOVICLIE
                  WHERE CDFILIAL = C_MOVCAIXA.CDFILIAL
                    AND CDCAIXA = C_MOVCAIXA.CDCAIXA
                    AND DTABERCAIX = C_MOVCAIXA.DTABERCAIX
                    AND NRSEQUMOVI = C_MOVCAIXA.NRSEQUMOVI)
             LOOP
                IF V_AUX <= 0 THEN
                   V_AUX := SQL%ROWCOUNT;
                END IF;
                DELETE FROM MOVICLIE
                 WHERE MOVICLIE.ROWID = C_MOVICLIE.ROWID;

                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;

             V_EXCLUMOVICLIE := V_AUX + V_EXCLUMOVICLIE;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             V_PASSO := 8;
             DELETE FROM MOVCAIXA
             WHERE ROWID = C_MOVCAIXA.LINHA;
             V_EXCLUMOVCAIXA := SQL%ROWCOUNT + V_EXCLUMOVCAIXA;
             V_PASSO := 9;
             COMMIT;
             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          END LOOP;

          /*Verifica se a procedure estourou o tempo limite*/
          VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          V_PASSO := 10;
          /*Vendas*/
          FOR C_VENDA IN (SELECT CDFILIAL, CDCAIXA, NRSEQVENDA, ROWID AS LINHA
                            FROM VENDA
                           WHERE CDFILIAL = C_TURCAIXA.CDFILIAL AND
                                 CDCAIXA = C_TURCAIXA.CDCAIXA  AND
                                 DTABERTUR = C_TURCAIXA.DTABERCAIX)
          LOOP
             /*Movimentacao do caixa*/
             V_AUX := 0;
             V_PASSO := 11;
             FOR C_MOVCAIXA IN
                (SELECT ROWID
                   FROM MOVCAIXA
                  WHERE CDFILIAL = C_VENDA.CDFILIAL
                    AND CDCAIXA = C_VENDA.CDCAIXA
                    AND NRSEQVENDA = C_VENDA.NRSEQVENDA)
             LOOP
                IF V_AUX <= 0 THEN
                   V_AUX := SQL%ROWCOUNT;
                END IF;

                DELETE FROM MOVCAIXA
                 WHERE MOVCAIXA.ROWID = C_MOVCAIXA.ROWID;
                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;

             V_EXCLUMOVCAIXA := V_AUX + V_EXCLUMOVCAIXA;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             V_PASSO := 12;
             /*Imposto dos itens */
             FOR C_ITVENDAIMPOS IN
                (SELECT ROWID
                   FROM ITVENDAIMPOS
                  WHERE CDFILIAL = C_VENDA.CDFILIAL
                    AND CDCAIXA = C_VENDA.CDCAIXA
                    AND NRSEQVENDA = C_VENDA.NRSEQVENDA)
             LOOP
                DELETE FROM ITVENDAIMPOS
                 WHERE ITVENDAIMPOS.ROWID = C_ITVENDAIMPOS.ROWID;

                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             V_PASSO := 13;
             /*Itens da venda*/
             V_AUX := 0;
             FOR C_ITEMVENDA IN
                (SELECT ROWID
                   FROM ITEMVENDA
                  WHERE CDFILIAL = C_VENDA.CDFILIAL
                    AND CDCAIXA = C_VENDA.CDCAIXA
                    AND NRSEQVENDA = C_VENDA.NRSEQVENDA)
             LOOP
                IF V_AUX <= 0 THEN
                   V_AUX := SQL%ROWCOUNT;
                END IF;
                DELETE FROM ITEMVENDA
                 WHERE ROWID = C_ITEMVENDA.ROWID;
                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;
             V_EXCLUITEMVENDA := V_AUX + V_EXCLUITEMVENDA;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);

             V_PASSO := 14;
             /*Movimentacao do cliente*/
             V_AUX := 0;
             FOR C_MOVICLIE IN
                (SELECT ROWID
                   FROM MOVICLIE
                   WHERE CDFILIAL = C_VENDA.CDFILIAL
                     AND CDCAIXA = C_VENDA.CDCAIXA
                     AND NRSEQVENDA = C_VENDA.NRSEQVENDA)
             LOOP
                IF V_AUX <= 0 THEN
                   V_AUX := SQL%ROWCOUNT;
                END IF;
                DELETE FROM MOVICLIE
                 WHERE MOVICLIE.ROWID = C_MOVICLIE.ROWID;
                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;
             V_EXCLUMOVICLIE := V_AUX + V_EXCLUMOVICLIE;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             V_PASSO := 15;
             /* PARCELA VENDAS*/
             FOR C_PARCELAVENDA IN
                (SELECT ROWID
                   FROM PARCELAVENDA
                  WHERE CDFILIAL = C_VENDA.CDFILIAL
                    AND CDCAIXA = C_VENDA.CDCAIXA
                    AND NRSEQVENDA = C_VENDA.NRSEQVENDA)
             LOOP
                DELETE FROM PARCELAVENDA
                 WHERE PARCELAVENDA.ROWID = C_PARCELAVENDA.ROWID;
                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             V_PASSO := 16;
             FOR C_COMPITVENDA IN
                (SELECT ROWID
                   FROM COMPITVENDA
                  WHERE CDFILIAL = C_VENDA.CDFILIAL
                    AND CDCAIXA = C_VENDA.CDCAIXA
                    AND NRSEQVENDA = C_VENDA.NRSEQVENDA)
             LOOP
                DELETE FROM COMPITVENDA
                 WHERE COMPITVENDA.ROWID = C_COMPITVENDA.ROWID;
                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             V_PASSO := 17;
             /*Itens cancelados*/
             FOR C_ITVENDACAN IN
                (SELECT ROWID
                   FROM ITVENDACAN
                 WHERE CDFILIAL   = C_VENDA.CDFILIAL
                   AND CDCAIXA    = C_VENDA.CDCAIXA
                   AND NRSEQVENDA = C_VENDA.NRSEQVENDA)
             LOOP
                DELETE FROM ITVENDACAN
                 WHERE ITVENDACAN.ROWID = C_ITVENDACAN.ROWID;
                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             V_PASSO := 18;
             FOR C_EXTRATOCONS IN
                (SELECT ROWID
                   FROM EXTRATOCONS
                  WHERE CDFILIAL = C_VENDA.CDFILIAL
                    AND CDCAIXA = C_VENDA.CDCAIXA
                    AND NRSEQVENDA = C_VENDA.NRSEQVENDA)
             LOOP
                DELETE FROM EXTRATOCONS
                 WHERE EXTRATOCONS.ROWID = C_EXTRATOCONS.ROWID;
                COMMIT;
                /*Verifica se a procedure estourou o tempo limite*/
                VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             END LOOP;

             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
             V_PASSO := 19;
             DELETE FROM VENDA
             WHERE ROWID = C_VENDA.LINHA;
             V_EXCLUVENDA := SQL%ROWCOUNT + V_EXCLUVENDA;
             V_PASSO := 20;
             COMMIT;
             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          END LOOP;

          /*Verifica se a procedure estourou o tempo limite*/
          VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          V_PASSO := 21;
          /*Fechamento de caixa */
          FOR C_FECHACAIXA IN
             (SELECT ROWID
                FROM FECHACAIXA
               WHERE CDFILIAL   = C_TURCAIXA.CDFILIAL
                 AND CDCAIXA    = C_TURCAIXA.CDCAIXA
                 AND DTABERCAIX = C_TURCAIXA.DTABERCAIX)
          LOOP
             DELETE FROM FECHACAIXA
              WHERE FECHACAIXA.ROWID = C_FECHACAIXA.ROWID;
             COMMIT;
             /*Verifica se a procedure estourou o tempo limite*/
             VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          END LOOP;

          /*Verifica se a procedure estourou o tempo limite*/
          VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          V_PASSO := 22;
          DELETE TURCAIXA
          WHERE ROWID = C_TURCAIXA.LINHA;
          V_EXCLUTURCAIXA := SQL%ROWCOUNT + V_EXCLUTURCAIXA;
          COMMIT;
          V_PASSO := 23;
          UPDATE TRABPROCLIMPEZA
            SET QTREGEXCLIMPEZA = V_EXCLUTURCAIXA
          WHERE IDLIMPEZA = P_IDSISTEMA
            AND NMTABELALIMP = 'TURCAIXA';
          COMMIT;
          V_PASSO := 99;
          /*Verifica se a procedure estourou o tempo limite*/
          VERIFTIMEOUT(V_DTHRFINLIMPEZA);
          V_PASSO := 100;          
      END LOOP;
   END LOOP;

   CLOSE C_LISTA;
   V_PASSO := 25;
   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLUTURCAIXA,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA AND
          NMTABELALIMP = 'TURCAIXA';
   COMMIT;
   V_PASSO := 26;
   /*deleta a tabela temporaria da limpeza */
   UPDATE TRABLIMPEZA
   SET IDSTATUSLIMPEZA = 'C'
   WHERE IDLIMPEZA = P_IDSISTEMA;
   V_PASSO := 27;
   COMMIT;

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (P_DSSISTLIMPEZ, 'TURCAIXA', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'TURCAIXA', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUTURCAIXA);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (P_DSSISTLIMPEZ, 'MOVICLIE', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'MOVICLIE', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUMOVICLIE);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (P_DSSISTLIMPEZ, 'MOVCAIXA', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'MOVCAIXA', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUMOVCAIXA);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (P_DSSISTLIMPEZ, 'VENDA', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'VENDA', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUVENDA);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (P_DSSISTLIMPEZ, 'ITEMVENDA', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'ITEMVENDA', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUITEMVENDA);
   V_PASSO := 28;
   /*Apagando a lista utilizada para a limpeza*/
   DELETE FROM LISTA
   WHERE NRLISTA =P_NRLISTA;
   V_PASSO := 29;
   COMMIT;

EXCEPTION
  WHEN OTHERS THEN
   V_ERROR:= SQLERRM(SQLCODE);

   IF INSTR(V_ERROR, 'TIMEOUT - EXCECAO PROPOSITAL TEKNISA') = 0 THEN
      /*Apagando a lista utilizada para a limpeza*/
      DELETE FROM LISTA
      WHERE NRLISTA =P_NRLISTA;

      UPDATE TRABLIMPEZA
      SET IDSTATUSLIMPEZA = 'C', IDLIMPEZACONCERRO = 'S'
      WHERE IDLIMPEZA = P_IDSISTEMA;
   ELSE
       UPDATE TRABLIMPEZA
       SET IDSTATUSLIMPEZA = 'P'
       WHERE IDLIMPEZA = P_IDSISTEMA;
   END IF;
   COMMIT;

   IF (V_EXCLUTURCAIXA = 0) THEN
      INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES (P_DSSISTLIMPEZ, 'TURCAIXA', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'TURCAIXA', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUTURCAIXA);
   END IF;

   IF (V_EXCLUMOVICLIE = 0) THEN
      INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES (P_DSSISTLIMPEZ, 'MOVICLIE', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'MOVICLIE', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUMOVICLIE);
   END IF;

   IF (V_EXCLUMOVCAIXA = 0) THEN
      INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES (P_DSSISTLIMPEZ, 'MOVCAIXA', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'MOVCAIXA', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUMOVCAIXA);
   END IF;

   IF (V_EXCLUVENDA = 0) THEN
      INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES (P_DSSISTLIMPEZ, 'VENDA', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'VENDA', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUVENDA);
   END IF;

   IF (V_EXCLUITEMVENDA = 0) THEN
      INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES (P_DSSISTLIMPEZ, 'ITEMVENDA', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'ITEMVENDA', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUITEMVENDA);
   END IF;
   COMMIT;
   RAISE_APPLICATION_ERROR (-20101,  'PASSO : ' || V_PASSO || '   -   ' || V_ERROR);
END;
/