create or replace PROCEDURE LIMPEZA_DADOS_OPL(P_NRLISTA       IN VARCHAR2,
                                              P_DTFINAL       IN DATE,
                                              P_DSSISTLIMPEZ  IN VARCHAR2,
                                              P_NMOPERLIMPEZ  IN VARCHAR2,
                                              P_IDSISTEMA     IN VARCHAR2)
AS
V_ERR0R              VARCHAR2(2000);
V_ERR0R2             VARCHAR2(2000);
V_PASSO              NUMBER := 0;
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_COUNT_COMMIT       NUMBER := 1;
V_NUM_TO_COMMIT      NUMBER := 10; -- NUMERO UTILIZADO PARA REGULARIZAR A QUANTIDADE DE DML´S PARA O COMMIT.
V_CDFILIAL           VARCHAR2(4);   

V_EXCLUMOVALTITMPEXOL   NUMBER := 0;
V_EXCLUPEDIDOEXOL       NUMBER := 0;
V_EXCLUITEMPEDEXOL      NUMBER := 0;
V_EXCLUCONSSOLOL        NUMBER := 0;
V_EXCLUESTOCONSSOLOL    NUMBER := 0;
V_EXCLUITMPRODCONSSOLOL NUMBER := 0;
V_EXCLURELACONSOLOLNC   NUMBER := 0;
V_EXCLUVERIFCONSSOLOL   NUMBER := 0;
V_EXCLURELACONSOLOL     NUMBER := 0;

V_CDOPERADOR         VARCHAR2(12);
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
   V_CDOPERADOR := NULL;
   SELECT MAX(CDOPERADOR)
     INTO V_CDOPERADOR
     FROM OPERADOR
    WHERE CDOPERADOR = '000000000999';

   IF V_CDOPERADOR IS NULL THEN
      SELECT MAX(CDOPERADOR)
        INTO V_CDOPERADOR
        FROM OPERADOR;
   END IF;

   DELETE FROM TRABPROCLIMPEZA
   WHERE IDLIMPEZA = P_IDSISTEMA;

   V_NRORDEM := '0';

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

   --PEGA A DATA INICIAL E FINAL DA EXECUÇÃO
   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;
   
   WEBTUNNING(V_DSIP, V_DSUSUARIO, V_DSRDM, V_DSMETODO,  V_DSOPERADOR);

   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'MOVALTITMPEXOL');

   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'PEDIDOEXOL');
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_SUP_PEDIDOEXOL DISABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;

   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'ITEMPEDEXOL');
      
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_SUP_ITEMPEDEXOL DISABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;

   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'CONSSOLOL');
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_OPL_CONSSOLOL DISABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');
   
    UPDATE TABLIMPEZA
      SET NRORDEMLIMPEZA = V_NRORDEM
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'ESTOCONSSOLOL';

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'ESTOCONSSOLOL');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');
   
    UPDATE TABLIMPEZA
      SET NRORDEMLIMPEZA = V_NRORDEM
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'ITMPRODCONSSOLOL';

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'ITMPRODCONSSOLOL');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');
      
    UPDATE TABLIMPEZA
      SET NRORDEMLIMPEZA = V_NRORDEM
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'RELACONSOLOLNC';

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'RELACONSOLOLNC');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');
      
    UPDATE TABLIMPEZA
      SET NRORDEMLIMPEZA = V_NRORDEM
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'VERIFCONSSOLOL';

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'VERIFCONSSOLOL');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');
      
    UPDATE TABLIMPEZA
      SET NRORDEMLIMPEZA = V_NRORDEM
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'RELACONSOLOL';

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'RELACONSOLOL');


   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'A'
    WHERE IDLIMPEZA = P_IDSISTEMA 
      AND NMTABELALIMP = 'MOVALTITMPEXOL';

   COMMIT;
   VERIFTIMEOUT(V_DTHRFINLIMPEZA);

   V_PASSO := 0;

   OPEN C_LISTA;
   LOOP
      FETCH C_LISTA INTO V_CDFILIAL;
      EXIT WHEN C_LISTA%NOTFOUND;

      FOR C_MOVALTITMPEXOL IN(SELECT ROWID LINHA 
                                FROM MOVALTITMPEXOL
                               WHERE DTOPERACAO <= P_DTFINAL
                                 AND CDFILDESTMOV = V_CDFILIAL)LOOP
                         
          DELETE MOVALTITMPEXOL
           WHERE ROWID = C_MOVALTITMPEXOL.LINHA;

          V_EXCLUMOVALTITMPEXOL := SQL%ROWCOUNT + V_EXCLUMOVALTITMPEXOL;
          
          IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                
                UPDATE TRABPROCLIMPEZA
                  SET QTREGEXCLIMPEZA = V_EXCLUMOVALTITMPEXOL
                WHERE IDLIMPEZA = P_IDSISTEMA
                  AND NMTABELALIMP = 'MOVALTITMPEXOL';

               /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
               V_COUNT_COMMIT:= 1;
               COMMIT;
          ELSE
               V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
          END IF;
          /*Verifica se a procedure estourou o tempo limite*/
          VERIFTIMEOUT(V_DTHRFINLIMPEZA);
      END LOOP;
   END LOOP;

   V_PASSO := 1;

   CLOSE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLUMOVALTITMPEXOL,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'MOVALTITMPEXOL';

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'A'
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'PEDIDOEXOL';

   V_COUNT_COMMIT:= 1;
   COMMIT;
   VERIFTIMEOUT(V_DTHRFINLIMPEZA);

   OPEN C_LISTA;
   LOOP
      FETCH C_LISTA INTO V_CDFILIAL;
      EXIT WHEN C_LISTA%NOTFOUND;
   
      FOR C_PEDIDOEXOL IN (SELECT ROWID AS LINHA, CDFILDEST, CDFILLANC, NRPEDEXOL
                            FROM PEDIDOEXOL P
                           WHERE DTPEDEXOL <= P_DTFINAL
                             AND CDFILDEST = V_CDFILIAL
                             AND NOT EXISTS(SELECT 1
                                              FROM ITEMPEDEXOL 
                                             WHERE CDFILLANC = P.CDFILLANC
                                               AND NRPEDEXOL = P.NRPEDEXOL
                                               AND CDFILDEST = P.CDFILDEST
                                               AND DTPROGENPEOL >= P.DTPEDEXOL)) LOOP
         
         /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
         UPDATE TRABPROCLIMPEZA
            SET IDSITUPROCLIMP = 'A'
          WHERE IDLIMPEZA = P_IDSISTEMA
            AND NMTABELALIMP = 'ITEMPEDEXOL';
      
         V_COUNT_COMMIT:= 1;
         COMMIT;
         VERIFTIMEOUT(V_DTHRFINLIMPEZA);
         
         FOR C_ITEMPEDEXOL IN (SELECT ROWID AS LINHA 
                                 FROM ITEMPEDEXOL 
                                WHERE CDFILDEST = C_PEDIDOEXOL.CDFILDEST
                                  AND CDFILLANC = C_PEDIDOEXOL.CDFILLANC
                                  AND NRPEDEXOL = C_PEDIDOEXOL.NRPEDEXOL) LOOP
                                  
            DELETE ITEMPEDEXOL
             WHERE ROWID = C_ITEMPEDEXOL.LINHA;
           
            V_EXCLUITEMPEDEXOL := SQL%ROWCOUNT + V_EXCLUITEMPEDEXOL;
  
           IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
              
              UPDATE TRABPROCLIMPEZA
                SET QTREGEXCLIMPEZA = V_EXCLUITEMPEDEXOL
              WHERE IDLIMPEZA = P_IDSISTEMA
                AND NMTABELALIMP = 'ITEMPEDEXOL';
  
             /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
             V_COUNT_COMMIT:= 1;
             COMMIT;
           ELSE
             V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
           END IF;
           /*Verifica se a procedure estourou o tempo limite*/
           VERIFTIMEOUT(V_DTHRFINLIMPEZA);
         
         END LOOP;
         
         DELETE PEDIDOEXOL
          WHERE ROWID = C_PEDIDOEXOL.LINHA;
         
         V_EXCLUPEDIDOEXOL := SQL%ROWCOUNT + V_EXCLUPEDIDOEXOL;

         IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
            
            UPDATE TRABPROCLIMPEZA
              SET QTREGEXCLIMPEZA = V_EXCLUPEDIDOEXOL
            WHERE IDLIMPEZA = P_IDSISTEMA
              AND NMTABELALIMP = 'PEDIDOEXOL';

           /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
           V_COUNT_COMMIT:= 1;
           COMMIT;
         ELSE
           V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
         END IF;
         /*Verifica se a procedure estourou o tempo limite*/
         VERIFTIMEOUT(V_DTHRFINLIMPEZA);
      END LOOP;
    END LOOP;

   V_PASSO := 2;
  
  CLOSE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLUITEMPEDEXOL,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'ITEMPEDEXOL';
   
   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLUPEDIDOEXOL,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'PEDIDOEXOL';
 
   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'A'
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'CONSSOLOL';

   V_COUNT_COMMIT:= 1;
   COMMIT;
   VERIFTIMEOUT(V_DTHRFINLIMPEZA);

   V_PASSO := 3;

   OPEN C_LISTA;
   LOOP
      FETCH C_LISTA INTO V_CDFILIAL;
      EXIT WHEN C_LISTA%NOTFOUND;
      
      FOR C_CONSSOLOL IN (SELECT ROWID AS LINHA, CDFILIOPELOG AS CDFILIAL_OL, NRSEQUCONSOL
                                 FROM CONSSOLOL 
                                WHERE CDFILIOPELOG   = V_CDFILIAL 
                                  AND DTCONSSOLOL  <= P_DTFINAL) LOOP
                                  
         /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
         UPDATE TRABPROCLIMPEZA
            SET IDSITUPROCLIMP = 'A'
          WHERE IDLIMPEZA = P_IDSISTEMA
            AND NMTABELALIMP = 'ESTOCONSSOLOL';   
            
         V_PASSO := 4;
                                  
         --ESTOCONSSOLOL
         FOR C_ESTOCONSSOLOL IN (SELECT ROWID AS LINHA
                                    FROM ESTOCONSSOLOL
                                   WHERE NRSEQUCONSOL = C_CONSSOLOL.NRSEQUCONSOL
                                     AND CDFILSOLI = C_CONSSOLOL.CDFILIAL_OL) LOOP
         
            DELETE ESTOCONSSOLOL
            WHERE ROWID = C_ESTOCONSSOLOL.LINHA;
              
            V_EXCLUESTOCONSSOLOL := SQL%ROWCOUNT + V_EXCLUESTOCONSSOLOL;

            IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
               
               UPDATE TRABPROCLIMPEZA
                 SET QTREGEXCLIMPEZA = V_EXCLUESTOCONSSOLOL
               WHERE IDLIMPEZA = P_IDSISTEMA
                 AND NMTABELALIMP = 'ESTOCONSSOLOL';

              /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
              V_COUNT_COMMIT:= 1;
              COMMIT;
            ELSE
              V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
            END IF;
            /*Verifica se a procedure estourou o tempo limite*/
            VERIFTIMEOUT(V_DTHRFINLIMPEZA);
         
         END LOOP;
         
         /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
         UPDATE TRABPROCLIMPEZA
            SET IDSITUPROCLIMP = 'A'
          WHERE IDLIMPEZA = P_IDSISTEMA
            AND NMTABELALIMP = 'ITMPRODCONSSOLOL';

         V_PASSO := 5;
                                  
         --ITMPRODCONSSOLOL NRSEQUCONSOL, CDFILSOLI
         FOR C_ITMPRODCONSSOLOL IN (SELECT ROWID AS LINHA
                                      FROM ITMPRODCONSSOLOL
                                     WHERE NRSEQUCONSOL = C_CONSSOLOL.NRSEQUCONSOL
                                       AND CDFILSOLI = C_CONSSOLOL.CDFILIAL_OL) LOOP
         
            DELETE ITMPRODCONSSOLOL
            WHERE ROWID = C_ITMPRODCONSSOLOL.LINHA;
              
            V_EXCLUITMPRODCONSSOLOL := SQL%ROWCOUNT + V_EXCLUITMPRODCONSSOLOL;

            IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
               
               UPDATE TRABPROCLIMPEZA
                 SET QTREGEXCLIMPEZA = V_EXCLUITMPRODCONSSOLOL
               WHERE IDLIMPEZA = P_IDSISTEMA
                 AND NMTABELALIMP = 'ITMPRODCONSSOLOL';

              /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
              V_COUNT_COMMIT:= 1;
              COMMIT;
            ELSE
              V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
            END IF;
            /*Verifica se a procedure estourou o tempo limite*/
            VERIFTIMEOUT(V_DTHRFINLIMPEZA);
         
         END LOOP;
         
         /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
         UPDATE TRABPROCLIMPEZA
            SET IDSITUPROCLIMP = 'A'
          WHERE IDLIMPEZA = P_IDSISTEMA
            AND NMTABELALIMP = 'RELACONSOLOLNC';   
            
         V_PASSO := 6;
                                  
         --RELACONSOLOLNC 
         FOR C_RELACONSOLOLNC IN (SELECT ROWID AS LINHA
                                    FROM RELACONSOLOLNC
                                   WHERE NRSEQUCONSOL = C_CONSSOLOL.NRSEQUCONSOL
                                     AND CDFILSOLCONS = C_CONSSOLOL.CDFILIAL_OL) LOOP
         
            DELETE RELACONSOLOLNC
            WHERE ROWID = C_RELACONSOLOLNC.LINHA;
              
            V_EXCLURELACONSOLOLNC := SQL%ROWCOUNT + V_EXCLURELACONSOLOLNC;

            IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
               
               UPDATE TRABPROCLIMPEZA
                 SET QTREGEXCLIMPEZA = V_EXCLURELACONSOLOLNC
               WHERE IDLIMPEZA = P_IDSISTEMA
                 AND NMTABELALIMP = 'RELACONSOLOLNC';

              /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
              V_COUNT_COMMIT:= 1;
              COMMIT;
            ELSE
              V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
            END IF;
            /*Verifica se a procedure estourou o tempo limite*/
            VERIFTIMEOUT(V_DTHRFINLIMPEZA);
         
         END LOOP;
         
         /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
         UPDATE TRABPROCLIMPEZA
            SET IDSITUPROCLIMP = 'A'
          WHERE IDLIMPEZA = P_IDSISTEMA
            AND NMTABELALIMP = 'VERIFCONSSOLOL';  

         V_PASSO := 7;            
         
         --VERIFCONSSOLOL
         FOR C_VERIFCONSSOLOL IN (SELECT ROWID AS LINHA
                                    FROM VERIFCONSSOLOL
                                   WHERE NRSEQUCONSOL = C_CONSSOLOL.NRSEQUCONSOL
                                     AND CDFILIOPELOG = C_CONSSOLOL.CDFILIAL_OL) LOOP
         
            DELETE VERIFCONSSOLOL
            WHERE ROWID = C_VERIFCONSSOLOL.LINHA;
              
            V_EXCLUVERIFCONSSOLOL := SQL%ROWCOUNT + V_EXCLUVERIFCONSSOLOL;

            IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
               
               UPDATE TRABPROCLIMPEZA
                 SET QTREGEXCLIMPEZA = V_EXCLUVERIFCONSSOLOL
               WHERE IDLIMPEZA = P_IDSISTEMA
                 AND NMTABELALIMP = 'VERIFCONSSOLOL';

              /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
              V_COUNT_COMMIT:= 1;
              COMMIT;
            ELSE
              V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
            END IF;
            /*Verifica se a procedure estourou o tempo limite*/
            VERIFTIMEOUT(V_DTHRFINLIMPEZA);
         
         END LOOP;
         
         /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
         UPDATE TRABPROCLIMPEZA
            SET IDSITUPROCLIMP = 'A'
          WHERE IDLIMPEZA = P_IDSISTEMA
            AND NMTABELALIMP = 'RELACONSOLOL';   
            
         V_PASSO := 8;
         
         --RELACONSOLOL CDFILSOLCONS/NRSEQUCONSOL
         FOR C_RELACONSOLOL IN (SELECT ROWID AS LINHA
                                    FROM RELACONSOLOL
                                   WHERE NRSEQUCONSOL = C_CONSSOLOL.NRSEQUCONSOL
                                     AND CDFILSOLCONS = C_CONSSOLOL.CDFILIAL_OL) LOOP
         
            DELETE RELACONSOLOL
            WHERE ROWID = C_RELACONSOLOL.LINHA;
              
            V_EXCLURELACONSOLOL := SQL%ROWCOUNT + V_EXCLURELACONSOLOL;

            IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
               
               UPDATE TRABPROCLIMPEZA
                 SET QTREGEXCLIMPEZA = V_EXCLURELACONSOLOL
               WHERE IDLIMPEZA = P_IDSISTEMA
                 AND NMTABELALIMP = 'RELACONSOLOL';

              /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
              V_COUNT_COMMIT:= 1;
              COMMIT;
            ELSE
              V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
            END IF;
            /*Verifica se a procedure estourou o tempo limite*/
            VERIFTIMEOUT(V_DTHRFINLIMPEZA);
         
         END LOOP;
         
         /*PARA NÃO DAR ERRO NA FKCMP00377CONSSOLO TIRA O VINCULO DA CONSOLIDACAO OL COM O ITEM DA SOLICITACAO DE COMPRAS*/
         UPDATE ITEMSOLI
            SET NRSEQUCONSOL = NULL, CDFILIOPELOG = NULL
          WHERE NRSEQUCONSOL = C_CONSSOLOL.NRSEQUCONSOL;
           -- AND CDFILIOPELOG = C_CONSSOLOL.CDFILIAL_OL;
         
         V_PASSO := 4;
         
         BEGIN
           DELETE CONSSOLOL
           WHERE ROWID = C_CONSSOLOL.LINHA;
         EXCEPTION
            WHEN OTHERS THEN
             V_ERR0R2 := SQLERRM(SQLCODE)||' - NRSEQUCONSOL: '||C_CONSSOLOL.NRSEQUCONSOL||'CDFILIOPELOG: '||C_CONSSOLOL.CDFILIAL_OL;
             RAISE_APPLICATION_ERROR(-20000, V_ERR0R2);
         END;
           
         V_EXCLUCONSSOLOL:= SQL%ROWCOUNT + V_EXCLUCONSSOLOL;

         IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
            
            UPDATE TRABPROCLIMPEZA
              SET QTREGEXCLIMPEZA = V_EXCLUCONSSOLOL
            WHERE IDLIMPEZA = P_IDSISTEMA
              AND NMTABELALIMP = 'CONSSOLOL';

           /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
           V_COUNT_COMMIT:= 1;
           COMMIT;
         ELSE
           V_COUNT_COMMIT:= V_COUNT_COMMIT + 1;
         END IF;
         /*Verifica se a procedure estourou o tempo limite*/
         VERIFTIMEOUT(V_DTHRFINLIMPEZA);
      END LOOP;
   END LOOP;

   CLOSE C_LISTA;

    /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLURELACONSOLOLNC,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'RELACONSOLOL';
      
   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLURELACONSOLOLNC,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'VERIFCONSSOLOL';
   
   
   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLURELACONSOLOLNC,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'RELACONSOLOLNC';
   
   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLUITMPRODCONSSOLOL,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'ITMPRODCONSSOLOL';
   
   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLUESTOCONSSOLOL,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'ESTOCONSSOLOL';

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLUCONSSOLOL,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'CONSSOLOL';

   V_COUNT_COMMIT:= 1;
   COMMIT;
   VERIFTIMEOUT(V_DTHRFINLIMPEZA);
   
   UPDATE TRABLIMPEZA
   SET IDSTATUSLIMPEZA = 'C', IDLIMPEZACONCERRO = 'N'
   WHERE IDLIMPEZA = P_IDSISTEMA;
   V_COUNT_COMMIT:= 1;
   COMMIT;

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

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

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

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

   INSERT INTO LOGLIMPEZA
     (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES
     (P_DSSISTLIMPEZ, 'CONSSOLOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'CONSSOLOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUCONSSOLOL);
     
   INSERT INTO LOGLIMPEZA
     (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES
     (P_DSSISTLIMPEZ, 'ITEMPEDEXOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'ITEMPEDEXOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUITEMPEDEXOL);
     
   INSERT INTO LOGLIMPEZA
     (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES
     (P_DSSISTLIMPEZ, 'PEDIDOEXOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'PEDIDOEXOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUPEDIDOEXOL);
     
   INSERT INTO LOGLIMPEZA
     (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES
     (P_DSSISTLIMPEZ, 'MOVALTITMPEXOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'MOVALTITMPEXOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUMOVALTITMPEXOL);
  
   /*Apagando a lista utilizada para a limpeza*/
   DELETE FROM LISTA
   WHERE NRLISTA =P_NRLISTA;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_SUP_PEDIDOEXOL ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_OPL_CONSSOLOL ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_SUP_ITEMPEDEXOL ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;

   COMMIT;
EXCEPTION
WHEN OTHERS THEN

   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_SUP_PEDIDOEXOL ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_OPL_CONSSOLOL ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_SUP_ITEMPEDEXOL ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
  
   V_ERR0R := SQLERRM(SQLCODE);

   IF INSTR(V_ERR0R, '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;

      COMMIT;
   ELSE
       UPDATE TRABLIMPEZA
       SET IDSTATUSLIMPEZA = 'P'
       WHERE IDLIMPEZA = P_IDSISTEMA;
   END IF;

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

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

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

   IF (V_EXCLUCONSSOLOL > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'CONSSOLOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'CONSSOLOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUCONSSOLOL);
   END IF;
   
   IF (V_EXCLUESTOCONSSOLOL > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'ESTOCONSSOLOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'ESTOCONSSOLOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUESTOCONSSOLOL);
   END IF;
   
   IF (V_EXCLUITMPRODCONSSOLOL > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'ITMPRODCONSSOLOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'ITMPRODCONSSOLOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUITMPRODCONSSOLOL);
   END IF;
   
   IF (V_EXCLURELACONSOLOLNC > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'RELACONSOLOLNC', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'RELACONSOLOLNC', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLURELACONSOLOLNC);
   END IF;
   
   IF (V_EXCLUVERIFCONSSOLOL > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'VERIFCONSSOLOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'VERIFCONSSOLOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUVERIFCONSSOLOL);
   END IF;
   
   IF (V_EXCLURELACONSOLOL > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'RELACONSOLOL', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'RELACONSOLOL', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLURELACONSOLOL);
   END IF;

   COMMIT;

   RAISE_APPLICATION_ERROR (-20101, 'PASSO : ' || V_PASSO || '   -   ' || V_ERR0R|| '  -  '||V_ERR0R2);

END;
/
-- VERSAO --
BEGIN ATUVEROBJ('LIMPEZA_DADOS_OPL','6.39.006'); END;
/
