create or replace PROCEDURE LIMPEZA_DADOS_PED_EXP(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_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_EXCLUPEDIDO     NUMBER := 0;
V_EXCLUITEMPEDIDO NUMBER := 0;
V_EXCLUCOMPITEMPED NUMBER := 0;
V_EXCLURESERPRODPED NUMBER := 0;
V_EXCLUDADOSENDPED NUMBER := 0;
V_EXCLUDADOSADICPED NUMBER := 0;
V_EXCLUENCARGOPED NUMBER := 0;
V_EXCLUPRAZOPGTOPED NUMBER := 0;
V_EXCLUVENDPEDAUX NUMBER := 0;
V_EXCLUHISITEMPED NUMBER := 0;
V_EXCLUGRADEDISTR NUMBER := 0;
V_EXCLUITGRADEDISTR 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 = 'PEDIDO';

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'PEDIDO');
      
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_PEDIDO 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 = 'ITEMPEDIDO';

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'ITEMPEDIDO');
      
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_ITEMPEDIDO DISABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER ATUSALDO_EMPITEM DISABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER RETORNA_PEDIDOOL_NENVIADO 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 = 'COMPITEMPED';

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

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

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

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'RESERPRODPED');
      
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_RESERPRODPED 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 = 'DADOSENDPED';

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

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

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

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'DADOSADICPED');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'ENCARGOPED');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

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

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

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'VENDPEDAUX');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'HISITEMPED');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'GRADEDISTR');
      
   V_NRORDEM := LPAD(TO_CHAR(TO_NUMBER(V_NRORDEM)+1), 3, '0');

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

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

   INSERT INTO TRABPROCLIMPEZA
      (IDLIMPEZA, NMTABELALIMP)
   VALUES
      (P_IDSISTEMA, 'ITGRADEDISTR');
  
  /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'A'
    WHERE IDLIMPEZA = P_IDSISTEMA 
      AND NMTABELALIMP = 'PEDIDO';

   COMMIT;
   VERIFTIMEOUT(V_DTHRFINLIMPEZA);

   V_PASSO := 0;

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

      FOR C_PEDIDO IN(SELECT ROWID LINHA, CDFILIAL, NRPEDIDO
                        FROM PEDIDO
                       WHERE DTPEDIDO <= P_DTFINAL
                         AND CDFILIAL = V_CDFILIAL
                         AND IDSITPEDIDO IN(3,4,5))LOOP
                         
          
          /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
          UPDATE TRABPROCLIMPEZA
             SET IDSITUPROCLIMP = 'A'
           WHERE IDLIMPEZA = P_IDSISTEMA 
             AND NMTABELALIMP = 'ITEMPEDIDO';
             
          V_PASSO := 1;
          
          FOR C_ITEMPEDIDO IN(SELECT ROWID LINHA
                                FROM ITEMPEDIDO
                               WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                 AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                   
             DELETE ITEMPEDIDO
              WHERE ROWID = C_ITEMPEDIDO.LINHA;
   
             V_EXCLUITEMPEDIDO := SQL%ROWCOUNT + V_EXCLUITEMPEDIDO;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                     SET QTREGEXCLIMPEZA = V_EXCLUITEMPEDIDO
                   WHERE IDLIMPEZA = P_IDSISTEMA
                     AND NMTABELALIMP = 'ITEMPEDIDO';
   
                  /*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 = 'COMPITEMPED';
             
          V_PASSO := 2;
             
          FOR C_COMPITEMPED IN (SELECT ROWID AS LINHA
                                  FROM COMPITEMPED
                                 WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                   AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                                   
             DELETE COMPITEMPED
              WHERE ROWID = C_COMPITEMPED.LINHA;
   
             V_EXCLUCOMPITEMPED := SQL%ROWCOUNT + V_EXCLUCOMPITEMPED;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                     SET QTREGEXCLIMPEZA = V_EXCLUCOMPITEMPED
                   WHERE IDLIMPEZA = P_IDSISTEMA
                     AND NMTABELALIMP = 'COMPITEMPED';
   
                  /*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 = 'RESERPRODPED';
             
          V_PASSO := 3;
             
          FOR C_RESERPRODPED IN (SELECT ROWID AS LINHA
                                   FROM RESERPRODPED
                                  WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                    AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                                   
             DELETE RESERPRODPED
              WHERE ROWID = C_RESERPRODPED.LINHA;
   
             V_EXCLURESERPRODPED := SQL%ROWCOUNT + V_EXCLURESERPRODPED;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                     SET QTREGEXCLIMPEZA = V_EXCLURESERPRODPED
                   WHERE IDLIMPEZA = P_IDSISTEMA
                     AND NMTABELALIMP = 'RESERPRODPED';
   
                  /*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 = 'DADOSENDPED';
             
          V_PASSO := 4;
             
          FOR C_DADOSENDPED IN (SELECT ROWID AS LINHA
                                  FROM DADOSENDPED
                                 WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                   AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                                   
             DELETE DADOSENDPED
              WHERE ROWID = C_DADOSENDPED.LINHA;
   
             V_EXCLUDADOSENDPED := SQL%ROWCOUNT + V_EXCLUDADOSENDPED;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                     SET QTREGEXCLIMPEZA = V_EXCLUDADOSENDPED
                   WHERE IDLIMPEZA = P_IDSISTEMA
                     AND NMTABELALIMP = 'DADOSENDPED';
   
                  /*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 = 'DADOSADICPED';
             
          V_PASSO := 5;
             
          FOR C_DADOSADICPED IN (SELECT ROWID AS LINHA
                                  FROM DADOSADICPED
                                 WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                   AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                                   
             DELETE DADOSADICPED
              WHERE ROWID = C_DADOSADICPED.LINHA;
   
             V_EXCLUDADOSADICPED:= SQL%ROWCOUNT + V_EXCLUDADOSADICPED;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                     SET QTREGEXCLIMPEZA = V_EXCLUDADOSADICPED
                   WHERE IDLIMPEZA = P_IDSISTEMA
                     AND NMTABELALIMP = 'DADOSADICPED';
   
                  /*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 = 'ENCARGOPED';
             
          V_PASSO := 6;
             
          FOR C_ENCARGOPED IN (SELECT ROWID AS LINHA
                                 FROM ENCARGOPED
                                WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                  AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                                   
             DELETE ENCARGOPED
              WHERE ROWID = C_ENCARGOPED.LINHA;
   
             V_EXCLUENCARGOPED:= SQL%ROWCOUNT + V_EXCLUENCARGOPED;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                     SET QTREGEXCLIMPEZA = V_EXCLUENCARGOPED
                   WHERE IDLIMPEZA = P_IDSISTEMA
                     AND NMTABELALIMP = 'ENCARGOPED';
   
                  /*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 = 'PRAZOPGTOPED';
             
          V_PASSO := 7;
             
          FOR C_PRAZOPGTOPED IN (SELECT ROWID AS LINHA
                                   FROM PRAZOPGTOPED
                                  WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                    AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                                   
             DELETE PRAZOPGTOPED
              WHERE ROWID = C_PRAZOPGTOPED.LINHA;
   
             V_EXCLUPRAZOPGTOPED:= SQL%ROWCOUNT + V_EXCLUPRAZOPGTOPED;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                     SET QTREGEXCLIMPEZA = V_EXCLUPRAZOPGTOPED
                   WHERE IDLIMPEZA = P_IDSISTEMA
                     AND NMTABELALIMP = 'PRAZOPGTOPED';
   
                  /*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 = 'VENDPEDAUX';
             
          V_PASSO := 8;
             
          FOR C_VENDPEDAUX IN (SELECT ROWID AS LINHA
                                 FROM VENDPEDAUX
                                WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                  AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                                   
             DELETE VENDPEDAUX
              WHERE ROWID = C_VENDPEDAUX.LINHA;
   
             V_EXCLUVENDPEDAUX := SQL%ROWCOUNT + V_EXCLUVENDPEDAUX;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                     SET QTREGEXCLIMPEZA = V_EXCLUVENDPEDAUX
                   WHERE IDLIMPEZA = P_IDSISTEMA
                     AND NMTABELALIMP = 'VENDPEDAUX';
   
                  /*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 = 'HISITEMPED';
             
          V_PASSO := 9;
             
          FOR C_HISITEMPED IN (SELECT ROWID AS LINHA
                                 FROM HISITEMPED
                                WHERE CDFILIAL = C_PEDIDO.CDFILIAL
                                  AND NRPEDIDO = C_PEDIDO.NRPEDIDO) LOOP
                                   
             DELETE HISITEMPED
              WHERE ROWID = C_HISITEMPED.LINHA;
   
             V_EXCLUHISITEMPED := SQL%ROWCOUNT + V_EXCLUHISITEMPED;
             
             IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
                   
                   UPDATE TRABPROCLIMPEZA
                      SET QTREGEXCLIMPEZA = V_EXCLUHISITEMPED
                    WHERE IDLIMPEZA = P_IDSISTEMA
                      AND NMTABELALIMP = 'HISITEMPED';
   
                  /*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;
          
          V_PASSO := 10;
          
          DELETE PEDIDO
           WHERE ROWID = C_PEDIDO.LINHA;

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

               /*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 := 11;

   CLOSE C_LISTA;

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

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

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

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

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

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

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

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

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

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

   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_GRADEDISTR IN (SELECT ROWID AS LINHA, CDFILIAL, NRGRADEDISTR
                             FROM GRADEDISTR
                            WHERE DTHRGERGRADE <= P_DTFINAL
                              AND CDFILIAL = V_CDFILIAL) LOOP
                              
         /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA ANDAMENTO */
         UPDATE TRABPROCLIMPEZA
            SET IDSITUPROCLIMP = 'A'
          WHERE IDLIMPEZA = P_IDSISTEMA
            AND NMTABELALIMP = 'GRADEDISTR';
            
          V_PASSO := 12;
                             
         FOR C_ITGRADEDISTR IN (SELECT ROWID AS LINHA
                                  FROM ITGRADEDISTR
                                 WHERE CDFILIAL = C_GRADEDISTR.CDFILIAL
                                   AND NRGRADEDISTR = C_GRADEDISTR.NRGRADEDISTR) LOOP
         
            DELETE ITGRADEDISTR
             WHERE ROWID = C_ITGRADEDISTR.LINHA;
            
            V_EXCLUITGRADEDISTR := SQL%ROWCOUNT + V_EXCLUITGRADEDISTR;
   
            IF V_COUNT_COMMIT >= V_NUM_TO_COMMIT THEN
               
               UPDATE TRABPROCLIMPEZA
                 SET QTREGEXCLIMPEZA = V_EXCLUITGRADEDISTR
               WHERE IDLIMPEZA = P_IDSISTEMA
                 AND NMTABELALIMP = 'ITGRADEDISTR';
   
              /*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 GRADEDISTR
          WHERE ROWID = C_GRADEDISTR.LINHA;
         
         V_EXCLUGRADEDISTR := SQL%ROWCOUNT + V_EXCLUGRADEDISTR;

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

           /*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_EXCLUITGRADEDISTR,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'ITGRADEDISTR';
      
   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = V_EXCLUGRADEDISTR,
          DTHRFINLIMPEZA = SYSDATE
    WHERE IDLIMPEZA = P_IDSISTEMA
      AND NMTABELALIMP = 'GRADEDISTR';
      
    UPDATE TRABLIMPEZA
      SET IDSTATUSLIMPEZA = 'C'
    WHERE IDLIMPEZA = P_IDSISTEMA;

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

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

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

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

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

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

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

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

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

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

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

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

   /*Apagando a lista utilizada para a limpeza*/
   DELETE FROM LISTA
   WHERE NRLISTA =P_NRLISTA;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_PEDIDO ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_ITEMPEDIDO ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER ATUSALDO_EMPITEM ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER RETORNA_PEDIDOOL_NENVIADO ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_RESERPRODPED ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;

   COMMIT;
   
EXCEPTION
WHEN OTHERS THEN

   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_PEDIDO ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_ITEMPEDIDO ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER ATUSALDO_EMPITEM ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER RETORNA_PEDIDOOL_NENVIADO ENABLE';
   EXCEPTION
      WHEN OTHERS THEN NULL;
   END;
   
   BEGIN
      EXECUTE IMMEDIATE 'ALTER TRIGGER LOG_PED_RESERPRODPED 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_EXCLUPEDIDO > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'PEDIDO', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'PEDIDO', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUPEDIDO);
   END IF;

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

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

   IF (V_EXCLURESERPRODPED > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'RESERPRODPED', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'RESERPRODPED', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLURESERPRODPED);
   END IF;
   
   IF (V_EXCLUDADOSENDPED > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'DADOSENDPED', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'DADOSENDPED', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUDADOSENDPED);
   END IF;
   
   IF (V_EXCLUDADOSADICPED > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'DADOSADICPED', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'DADOSADICPED', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUDADOSADICPED);
   END IF;
   
   IF (V_EXCLUENCARGOPED > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'ENCARGOPED', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'ENCARGOPED', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUENCARGOPED);
   END IF;
   
   IF (V_EXCLUPRAZOPGTOPED > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'PRAZOPGTOPED', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'PRAZOPGTOPED', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUPRAZOPGTOPED);
   END IF;
   
   IF (V_EXCLUVENDPEDAUX > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'VENDPEDAUX', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'VENDPEDAUX', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUVENDPEDAUX);
   END IF;
   
   IF (V_EXCLUHISITEMPED > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'HISITEMPED', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'HISITEMPED', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUHISITEMPED);
   END IF;
   
   IF (V_EXCLUGRADEDISTR > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'GRADEDISTR', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'GRADEDISTR', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUGRADEDISTR);
   END IF;
   
   IF (V_EXCLUITGRADEDISTR > 0) THEN
      INSERT INTO LOGLIMPEZA
        (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
      VALUES
        (P_DSSISTLIMPEZ, 'ITGRADEDISTR', SYSDATE, P_NMOPERLIMPEZ, P_DTFINAL, 'ITGRADEDISTR', V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_EXCLUITGRADEDISTR);
   END IF;

   COMMIT;

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

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