IF EXISTS (SELECT * FROM sysobjects O, sysusers U
           WHERE
            o.name = 'LIMPEZA_CMPSUP'  and
            type = 'P'                        and
            u.uid = o.uid                     and
            u.name = USER)

   DROP PROCEDURE LIMPEZA_CMPSUP;
GO

CREATE PROCEDURE LIMPEZA_CMPSUP
   @P_NRLISTA       VARCHAR,
   @P_DTFINAL       DATETIME,
   @P_DSSISTLIMPEZ  VARCHAR,
   @P_NMOPERLIMPEZ  VARCHAR,
   @P_IDSISTEMA     VARCHAR

AS
   DECLARE @V_ERROR           VARCHAR(2000);
   DECLARE @V_PASSO           NUMERIC;
   DECLARE @V_DSIP            VARCHAR(50);
   DECLARE @V_DSUSUARIO       VARCHAR(50);
   DECLARE @V_DSRDM           VARCHAR(50);
   DECLARE @V_DSMETODO        VARCHAR(250);
   DECLARE @V_DSOPERADOR      VARCHAR(12);
   DECLARE @V_NRORDEM         VARCHAR(03);

   DECLARE @V_COUNT_COMMIT     NUMERIC;
   DECLARE @V_NUM_TO_COMMIT    NUMERIC;

   DECLARE @V_EXCLMOVOPSOL     NUMERIC;
   DECLARE @V_EXCLSOLICITA     NUMERIC;
   DECLARE @V_EXCLPRODCOMPRA   NUMERIC;
   DECLARE @V_EXCLLOGCOLETAPR  NUMERIC;
   DECLARE @V_EXCLLOGITEMCOLE  NUMERIC;
   DECLARE @V_EXCLITMPREVLIST  NUMERIC;
   DECLARE @V_EXCLITEMCOLE     NUMERIC;
   DECLARE @V_EXCLCOLETAPR     NUMERIC;
   DECLARE @V_EXCLITEXCLISPREC NUMERIC;
   DECLARE @V_EXCLPREVLISTA    NUMERIC;
   DECLARE @V_EXCLLOGAUTOFORNE NUMERIC;
   DECLARE @V_EXCLITMAPURPREC  NUMERIC;
   DECLARE @V_EXCLCUSTOSUP     NUMERIC;
   DECLARE @V_EXCLLOGITEMAUTF  NUMERIC;
   DECLARE @V_EXCLFERICOMP     NUMERIC;
   DECLARE @V_EXCLAPURPRECO    NUMERIC;
   DECLARE @V_EXCLCALECOMP     NUMERIC;
   DECLARE @V_EXCLAUTOFORNE    NUMERIC;
   DECLARE @V_EXCLNFRELACAF    NUMERIC;
   DECLARE @V_EXCLNFRELACAFSAI NUMERIC;
   DECLARE @V_EXCLITEMSAIDOL   NUMERIC;

   DECLARE @V_CDFILIAL        VARCHAR(4);
   DECLARE @V_CDFILCENTCMP    VARCHAR(4);

   DECLARE @V_SOLICITA_CDFILSOLI   VARCHAR(4);
   DECLARE @V_SOLICITA_CDFILLANCA  VARCHAR(4);
   DECLARE @V_SOLICITA_NRSOLICMP   VARCHAR(10);

   DECLARE @V_COLETAPR_CDFILIAL    VARCHAR(4);
   DECLARE @V_COLETAPR_NRCOLEPRECO VARCHAR(10);

   DECLARE @V_ITCOLE_CDFILIAL      VARCHAR(4);
   DECLARE @V_ITCOLE_NRCOLEPRECO   VARCHAR(10);
   DECLARE @V_ITCOLE_CDFORNECED    VARCHAR(21);
   DECLARE @V_ITCOLE_CDPRODUTO     VARCHAR(10);

   DECLARE @V_PREVLISTA_CDFILIAL      VARCHAR(4);
   DECLARE @V_PREVLISTA_NRSEQPRELIST  VARCHAR(10);

   DECLARE @V_AUTOFORNE_CDFILDEST  VARCHAR(4);
   DECLARE @V_AUTOFORNE_CDFILLANC  VARCHAR(4);
   DECLARE @V_AUTOFORNE_NRAUTOFORN VARCHAR(10);

   DECLARE @V_CS_CDFILIAL   VARCHAR(4);
   DECLARE @V_CS_DTCUSTOSUP DATETIME;

   DECLARE @err varchar(100);   

BEGIN
   ALTER TABLE SOLICITA     DISABLE TRIGGER GRAVA_LOGSOLICITA;
   ALTER TABLE ITEMSOLI     DISABLE TRIGGER GRAVA_MOVOPSOL;
   ALTER TABLE LOGSOLICITA  DISABLE TRIGGER GRAVA_LOGSOLICITA
   ALTER TABLE LOGITEMCOLE  DISABLE TRIGGER GRAVA_LOGITEMCOLE
   ALTER TABLE LOGCOLETAPR  DISABLE TRIGGER GRAVA_LOGCOLETAPR
   ALTER TABLE ITEMPRODUTO  DISABLE TRIGGER ATUALIZA_PEDIDO
   ALTER TABLE ITEMPRODUTO  DISABLE TRIGGER LOG_FIS_ITEMPRODUTO
   ALTER TABLE LOGAUTOFORNE DISABLE TRIGGER GRAVA_LOGAUTOFORNE
   ALTER TABLE LOGITEMAUTF  DISABLE TRIGGER GRAVA_LOGITEMAUTF
   ALTER TABLE ITEMPRODUTO  DISABLE TRIGGER NF_BAIXA_AF

   SET @V_EXCLMOVOPSOL     = 0;
   SET @V_EXCLSOLICITA     = 0;
   SET @V_EXCLPRODCOMPRA   = 0;
   SET @V_EXCLLOGCOLETAPR  = 0;
   SET @V_EXCLLOGITEMCOLE  = 0;
   SET @V_EXCLITMPREVLIST  = 0;
   SET @V_EXCLITEMCOLE     = 0;
   SET @V_EXCLCOLETAPR     = 0;
   SET @V_EXCLITEXCLISPREC = 0;
   SET @V_EXCLPREVLISTA    = 0;
   SET @V_EXCLLOGAUTOFORNE = 0;
   SET @V_EXCLITMAPURPREC  = 0;
   SET @V_EXCLCUSTOSUP     = 0;
   SET @V_EXCLLOGITEMAUTF  = 0;
   SET @V_EXCLFERICOMP     = 0;
   SET @V_EXCLAPURPRECO    = 0;
   SET @V_EXCLCALECOMP     = 0;
   SET @V_EXCLAUTOFORNE    = 0;
   SET @V_EXCLNFRELACAF    = 0;
   SET @V_EXCLNFRELACAFSAI = 0;
   SET @V_EXCLITEMSAIDOL   = 0;

   SET @V_COUNT_COMMIT  = 1;
   SET @V_NUM_TO_COMMIT = 1000;

   SET @V_PASSO = 0;
   EXEC WEBTUNNING @V_DSIP, @V_DSUSUARIO, @V_DSRDM, @V_DSMETODO, @V_DSOPERADOR;

   SET @V_NRORDEM = '0';

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

   COMMIT;

   /* TABELA SOLICITA  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'SOLICITA', @V_NRORDEM);
    END;

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

   /* TABELA LOGCOLETAPR  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'LOGCOLETAPR', @V_NRORDEM);
    END;

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

   /* TABELA LOGITEMCOLE  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'LOGITEMCOLE', @V_NRORDEM);
    END;

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

    /* TABELA COLETAPR  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

   IF NOT(@@ROWCOUNT > 0) BEGIN
      INSERT INTO TABLIMPEZA
      VALUES
      (@P_IDSISTEMA, 'COLETAPR', @V_NRORDEM);
   END;

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

    /* TABELA PREVLISTA  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'PREVLISTA', @V_NRORDEM);
    END;

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

    /* TABELA LOGAUTOFORNE  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'LOGAUTOFORNE', @V_NRORDEM);
    END;

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

    /* TABELA LOGITEMAUTF  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'LOGITEMAUTF', @V_NRORDEM);
    END;

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

    /* TABELA AUTOFORNE  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'AUTOFORNE', @V_NRORDEM);
    END;

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

    /* TABELA CALECOMP  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'CALECOMP', @V_NRORDEM);
    END;

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

    /* TABELA FERICOMP  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'FERICOMP', @V_NRORDEM);
    END;

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

    /* TABELA APURPRECO  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'APURPRECO', @V_NRORDEM);
    END;

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

    /* TABELA ITMAPURPREC  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'ITMAPURPREC', @V_NRORDEM);
    END;

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

    /* TABELA CUSTOSUP  */
   SET @V_NRORDEM =  RIGHT(REPLICATE('0', 3) + CONVERT(CHAR(3),(CONVERT(INT, @V_NRORDEM)+1)), 3);

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

    IF NOT(@@ROWCOUNT > 0) BEGIN
       INSERT INTO TABLIMPEZA
       VALUES
       (@P_IDSISTEMA, 'CUSTOSUP', @V_NRORDEM);
    END;

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

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

   COMMIT;

   DECLARE C_LISTA CURSOR FOR
      (SELECT CDLISTA AS CDFILIAL
       FROM LISTA
       WHERE NRLISTA = @P_NRLISTA);

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN

      DECLARE C_SOLICITA CURSOR FOR
          SELECT SOLICITA.CDFILSOLI, SOLICITA.CDFILLANCA, SOLICITA.NRSOLICMP
          FROM SOLICITA
          WHERE SOLICITA.CDFILSOLI = @V_CDFILIAL
            AND SOLICITA.CDFILLANCA <> 'X'
            AND SOLICITA.DTSOLCMP <= @P_DTFINAL
          ORDER BY SOLICITA.CDFILSOLI

      OPEN C_SOLICITA
      FETCH NEXT FROM C_SOLICITA INTO @V_SOLICITA_CDFILSOLI, @V_SOLICITA_CDFILLANCA, @V_SOLICITA_NRSOLICMP;
      WHILE (@@FETCH_STATUS = 0)
      BEGIN

         SET @V_PASSO = 0;

         UPDATE PEDIDO
           SET CDFILLANCA = NULL,
               CDFILSOLI = NULL,
               NRSOLICMP = NULL
         WHERE CDFILLANCA = @V_SOLICITA_CDFILSOLI
           AND CDFILSOLI = @V_SOLICITA_CDFILSOLI
           AND NRSOLICMP = @V_SOLICITA_NRSOLICMP;

         DELETE MOVOPSOL
          WHERE MOVOPSOL.CDFILSOLMOV = @V_SOLICITA_CDFILSOLI
            AND MOVOPSOL.CDFILLANMOV = @V_SOLICITA_CDFILLANCA
            AND MOVOPSOL.NRSOLIMOV = @V_SOLICITA_NRSOLICMP;

         SET @V_EXCLMOVOPSOL = @@ROWCOUNT + @V_EXCLMOVOPSOL;

         DELETE PRODCOMPRA
          WHERE CDFILSOLI = @V_SOLICITA_CDFILSOLI
            AND CDFILLAN = @V_SOLICITA_CDFILLANCA
            AND NRSOLICMP = @V_SOLICITA_NRSOLICMP;

         SET @V_EXCLPRODCOMPRA = @@ROWCOUNT + @V_EXCLPRODCOMPRA;

         SET @V_PASSO = 1;

         DELETE SOLICITA
         WHERE  SOLICITA.CDFILSOLI  = @V_SOLICITA_CDFILSOLI  AND
                SOLICITA.CDFILLANCA = @V_SOLICITA_CDFILLANCA AND
                SOLICITA.NRSOLICMP  = @V_SOLICITA_NRSOLICMP;

         SET @V_EXCLSOLICITA = @@ROWCOUNT + @V_EXCLSOLICITA;
         IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
            UPDATE TRABPROCLIMPEZA
              SET QTREGEXCLIMPEZA = @V_EXCLSOLICITA
            WHERE IDLIMPEZA = @P_IDSISTEMA
              AND NMTABELALIMP = 'SOLICITA';

           /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
           SET @V_COUNT_COMMIT = 1;
           COMMIT;
         END
         ELSE BEGIN
           SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
         END;                                   

         FETCH NEXT FROM C_SOLICITA INTO @V_SOLICITA_CDFILSOLI, @V_SOLICITA_CDFILLANCA, @V_SOLICITA_NRSOLICMP;
      END;
      CLOSE C_SOLICITA;
      DEALLOCATE C_SOLICITA;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLSOLICITA,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'SOLICITA';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   SET @V_PASSO = 2;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DELETE LOGCOLETAPR
      WHERE
         CDFILIALLOG =  @V_CDFILIAL AND
         DTFINVALLOG <= @P_DTFINAL;

      SET @V_EXCLLOGCOLETAPR = @@ROWCOUNT + @V_EXCLLOGCOLETAPR;

      IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
         UPDATE TRABPROCLIMPEZA
           SET QTREGEXCLIMPEZA = @V_EXCLLOGCOLETAPR
         WHERE IDLIMPEZA = @P_IDSISTEMA
           AND NMTABELALIMP = 'LOGCOLETAPR';

        /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
        SET @V_COUNT_COMMIT = 1;
        COMMIT;
      END
      ELSE BEGIN
        SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
      END;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLLOGCOLETAPR,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'LOGCOLETAPR';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;


   SET @V_PASSO = 3;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DELETE LOGITEMCOLE
      WHERE CDFILIALLIC = @V_CDFILIAL
        AND DTFINVALLIC <= @P_DTFINAL;

      SET @V_EXCLLOGITEMCOLE = @@ROWCOUNT + @V_EXCLLOGITEMCOLE;

      IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
         UPDATE TRABPROCLIMPEZA
           SET QTREGEXCLIMPEZA = @V_EXCLLOGITEMCOLE
         WHERE IDLIMPEZA = @P_IDSISTEMA
           AND NMTABELALIMP = 'LOGITEMCOLE';

        /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
        SET @V_COUNT_COMMIT = 1;
        COMMIT;
      END
      ELSE BEGIN
        SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
      END;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLLOGITEMCOLE,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'LOGITEMCOLE';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   SET @V_PASSO = 3;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN

      /* DELETA AS TABELAS COLETAPR, ITMPREVLIST, ITEMCOLE*/
      SELECT @V_CDFILCENTCMP = ISNULL(MAX(CDFILCENTCMP), @V_CDFILIAL)
      FROM FILIAL
      WHERE FILIAL.CDFILIAL = @V_CDFILIAL;

      DECLARE C_COLETAPR CURSOR FOR
         SELECT COLETAPR.CDFILIAL, COLETAPR.NRCOLEPRECO
           FROM COLETAPR
          WHERE CDFILIAL = @V_CDFILCENTCMP
            AND DTFINVALCOL <= @P_DTFINAL

      OPEN C_COLETAPR
      FETCH NEXT FROM C_COLETAPR INTO @V_COLETAPR_CDFILIAL, @V_COLETAPR_NRCOLEPRECO;
      WHILE (@@FETCH_STATUS = 0)
      BEGIN
         DELETE FROM ITMPREVLIST
         WHERE ITMPREVLIST.CDFILIAL = @V_COLETAPR_CDFILIAL
           AND ITMPREVLIST.NRCOLEPRECO = @V_COLETAPR_NRCOLEPRECO;

         SET @V_EXCLITMPREVLIST = @@ROWCOUNT + @V_EXCLITMPREVLIST;

         DELETE FROM ITEMCOLE
         WHERE ITEMCOLE.CDFILIAL = @V_COLETAPR_CDFILIAL
           AND ITEMCOLE.NRCOLEPRECO = @V_COLETAPR_NRCOLEPRECO;

         SET @V_EXCLITEMCOLE = @@ROWCOUNT + @V_EXCLITEMCOLE;

        UPDATE PARTFILI
           SET CDFILCOTA = NULL,
               NRCOLEPRECO = NULL
         WHERE PARTFILI.CDFILCOTA = @V_COLETAPR_CDFILIAL
           AND PARTFILI.NRCOLEPRECO = @V_COLETAPR_NRCOLEPRECO;

         UPDATE PARAMPRODSUP
            SET CDFILCOLETA = NULL,
                NRCOLEPRECO = NULL
         WHERE PARAMPRODSUP.CDFILCOLETA = @V_COLETAPR_CDFILIAL
           AND PARAMPRODSUP.NRCOLEPRECO = @V_COLETAPR_NRCOLEPRECO;

         DELETE FROM COLETAPR
          WHERE COLETAPR.CDFILIAL = @V_COLETAPR_CDFILIAL
            AND COLETAPR.NRCOLEPRECO <= @V_COLETAPR_NRCOLEPRECO;

         SET @V_EXCLCOLETAPR = @@ROWCOUNT + @V_EXCLCOLETAPR;

         IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
            UPDATE TRABPROCLIMPEZA
              SET QTREGEXCLIMPEZA = @V_EXCLCOLETAPR
            WHERE IDLIMPEZA = @P_IDSISTEMA
              AND NMTABELALIMP = 'COLETAPR';

           /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
           SET @V_COUNT_COMMIT = 1;
           COMMIT;
         END
         ELSE BEGIN
           SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
         END;


         FETCH NEXT FROM C_COLETAPR INTO @V_COLETAPR_CDFILIAL, @V_COLETAPR_NRCOLEPRECO;
      END;
      CLOSE C_COLETAPR;
      DEALLOCATE C_COLETAPR;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLCOLETAPR,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'COLETAPR';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   SET @V_PASSO = 4;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DECLARE C_PREVLISTA CURSOR FOR
         SELECT CDFILIAL, NRSEQPRELIST
           FROM PREVLISTA
          WHERE NOT EXISTS(SELECT '1'
                           FROM ITEMCOLE
                           WHERE ITEMCOLE.NRSEQPRELIST = PREVLISTA.NRSEQPRELIST
                             AND ITEMCOLE.CDFILIAL = PREVLISTA.CDFILIAL)

      OPEN C_PREVLISTA
      FETCH NEXT FROM C_PREVLISTA INTO @V_PREVLISTA_CDFILIAL, @V_PREVLISTA_NRSEQPRELIST;
      WHILE (@@FETCH_STATUS = 0)
      BEGIN
          DELETE FROM ITEXCLISPREC
          WHERE CDFILIAL = @V_PREVLISTA_CDFILIAL
            AND NRSEQPRELIST = @V_PREVLISTA_NRSEQPRELIST;

          SET @V_EXCLITEXCLISPREC = @@ROWCOUNT + @V_EXCLITEXCLISPREC;

          DELETE ITEMCOLE
           WHERE CDFILIAL = @V_PREVLISTA_CDFILIAL
             AND NRSEQPRELIST = @V_PREVLISTA_NRSEQPRELIST;


          DELETE FROM PREVLISTA
          WHERE CDFILIAL = @V_PREVLISTA_CDFILIAL
            AND NRSEQPRELIST = @V_PREVLISTA_NRSEQPRELIST;

          SET @V_EXCLPREVLISTA = @@ROWCOUNT + @V_EXCLPREVLISTA;

          IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
             UPDATE TRABPROCLIMPEZA
               SET QTREGEXCLIMPEZA = @V_EXCLPREVLISTA
             WHERE IDLIMPEZA = @P_IDSISTEMA
               AND NMTABELALIMP = 'PREVLISTA';

            /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
            SET @V_COUNT_COMMIT = 1;
            COMMIT;
          END
          ELSE BEGIN
            SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
          END;

          FETCH NEXT FROM C_PREVLISTA INTO @V_PREVLISTA_CDFILIAL, @V_PREVLISTA_NRSEQPRELIST;
      END;
      CLOSE C_PREVLISTA;
      DEALLOCATE C_PREVLISTA;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLPREVLISTA,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'PREVLISTA';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   SET @V_PASSO = 5;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DELETE FROM LOGAUTOFORNE
      WHERE CDFILDESLAF = @V_CDFILIAL
        AND CDFILLANLAF <> 'X'
        AND NRAUTFORLAF <> 'X'
        AND DTOPERALAF <= @P_DTFINAL;

      SET @V_EXCLLOGAUTOFORNE = @@ROWCOUNT + @V_EXCLLOGAUTOFORNE;

      IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
         UPDATE TRABPROCLIMPEZA
           SET QTREGEXCLIMPEZA = @V_EXCLLOGAUTOFORNE
         WHERE IDLIMPEZA = @P_IDSISTEMA
           AND NMTABELALIMP = 'LOGAUTOFORNE';

        /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
        SET @V_COUNT_COMMIT = 1;
        COMMIT;
      END
      ELSE BEGIN
        SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
      END;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLLOGAUTOFORNE,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'LOGAUTOFORNE';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   SET @V_PASSO = 6;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DELETE LOGITEMAUTF
      WHERE
         CDFIDESLITAF =  @V_CDFILIAL AND
         CDFILANLITAF <> 'X' AND
         NRAUTOFLITAF <> 'X' AND
         CDMARCALITAF <> 'X' AND
         CDPRODLITAF  <> 'X' AND
         DTPROGLITAF  <= @P_DTFINAL;

      SET @V_EXCLLOGITEMAUTF = @@ROWCOUNT + @V_EXCLLOGITEMAUTF;

      IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
         UPDATE TRABPROCLIMPEZA
           SET QTREGEXCLIMPEZA = @V_EXCLLOGITEMAUTF
         WHERE IDLIMPEZA = @P_IDSISTEMA
           AND NMTABELALIMP = 'LOGITEMAUTF';

        /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
        SET @V_COUNT_COMMIT = 1;
        COMMIT;
      END
      ELSE BEGIN
        SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
      END;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLLOGITEMAUTF,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'LOGITEMAUTF';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN

      DECLARE C_AUTOFORNE CURSOR FOR
          SELECT AUTOFORNE.CDFILDEST, AUTOFORNE.CDFILLANC, AUTOFORNE.NRAUTOFORN
          FROM AUTOFORNE
          WHERE CDFILDEST = @V_CDFILIAL
            AND CDFILLANC <> 'X'
            AND NRAUTOFORN  <> 'X'
            AND DTAUTOFORN <= @P_DTFINAL

      OPEN C_AUTOFORNE
      FETCH NEXT FROM C_AUTOFORNE INTO @V_AUTOFORNE_CDFILDEST, @V_AUTOFORNE_CDFILLANC, @V_AUTOFORNE_NRAUTOFORN;

      WHILE (@@FETCH_STATUS = 0)
      BEGIN
         UPDATE ITEMPRODUTO
         SET ITEMPRODUTO.CDFILDEST   = NULL,
             ITEMPRODUTO.NRAUTOFORN  = NULL,
             ITEMPRODUTO.CDMARCA     = NULL,
             ITEMPRODUTO.DTPROGENTAF = NULL
         WHERE ITEMPRODUTO.CDFILDEST   = @V_AUTOFORNE_CDFILDEST
           AND ITEMPRODUTO.CDFILIAL    = @V_AUTOFORNE_CDFILLANC
           AND ITEMPRODUTO.NRAUTOFORN  = @V_AUTOFORNE_NRAUTOFORN;

         SET @V_PASSO = 8;

         DELETE NFRELACAF
         WHERE
           NFRELACAF.CDFILDEST   = @V_AUTOFORNE_CDFILDEST  AND
           NFRELACAF.CDFILLANC   = @V_AUTOFORNE_CDFILLANC  AND
           NFRELACAF.NRAUTOFORN  = @V_AUTOFORNE_NRAUTOFORN;

         SET @V_EXCLNFRELACAF = @@ROWCOUNT + @V_EXCLNFRELACAF;

         SET @V_PASSO = 9;

         DELETE NFRELACAFSAI
         WHERE NFRELACAFSAI.CDFILDEST = @V_AUTOFORNE_CDFILDEST
           AND NFRELACAFSAI.CDFILLANC = @V_AUTOFORNE_CDFILLANC
           AND NFRELACAFSAI.NRAUTOFORN = @V_AUTOFORNE_NRAUTOFORN;

         SET @V_EXCLNFRELACAFSAI = @@ROWCOUNT + @V_EXCLNFRELACAFSAI;

         SET @V_PASSO = 10;

         DELETE ITEMSAIDOL
          WHERE ITEMSAIDOL.CDFILDEST = @V_AUTOFORNE_CDFILDEST
            AND ITEMSAIDOL.CDFILLANC = @V_AUTOFORNE_CDFILLANC
            AND ITEMSAIDOL.NRAUTOFORN = @V_AUTOFORNE_NRAUTOFORN;

         SET @V_EXCLITEMSAIDOL = @@ROWCOUNT + @V_EXCLITEMSAIDOL;   

         SET @V_PASSO = 11;

         UPDATE AUTOFORNE
            SET CDFILDESTCON = NULL,
                CDFILLANCCON = NULL,
                NRAUTOFORCON = NULL
         WHERE CDFILDESTCON = @V_AUTOFORNE_CDFILDEST
           AND CDFILLANCCON = @V_AUTOFORNE_CDFILLANC
           AND NRAUTOFORCON = @V_AUTOFORNE_NRAUTOFORN;

         SET @V_PASSO = 12;

           DELETE ITEMAUTF
         WHERE CDFILDESTOL = @V_AUTOFORNE_CDFILDEST
           AND CDFILLANCOL = @V_AUTOFORNE_CDFILLANC
           AND NRAUTOFORNOL = @V_AUTOFORNE_NRAUTOFORN;

         DELETE AUTOFORNE
          WHERE AUTOFORNE.CDFILDEST = @V_AUTOFORNE_CDFILDEST
            AND AUTOFORNE.CDFILLANC = @V_AUTOFORNE_CDFILLANC
            AND AUTOFORNE.NRAUTOFORN = @V_AUTOFORNE_NRAUTOFORN;

         SET @V_EXCLAUTOFORNE = @@ROWCOUNT + @V_EXCLAUTOFORNE;

         IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
            UPDATE TRABPROCLIMPEZA
              SET QTREGEXCLIMPEZA = @V_EXCLAUTOFORNE
            WHERE IDLIMPEZA = @P_IDSISTEMA
              AND NMTABELALIMP = 'AUTOFORNE';

           /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
           SET @V_COUNT_COMMIT = 1;
           COMMIT;
         END
         ELSE BEGIN
           SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
         END;

         FETCH NEXT FROM C_AUTOFORNE INTO @V_AUTOFORNE_CDFILDEST, @V_AUTOFORNE_CDFILLANC,  @V_AUTOFORNE_NRAUTOFORN;
      END;
      CLOSE C_AUTOFORNE;
      DEALLOCATE C_AUTOFORNE;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLAUTOFORNE,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'AUTOFORNE';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   SET @V_PASSO = 13;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DELETE FROM CALECOMP
      WHERE CDFILIAL = @V_CDFILIAL
        AND CDPERIENTR <> 'X'
        AND DTENTREGA <= @P_DTFINAL;

      SET @V_EXCLCALECOMP = @@ROWCOUNT + @V_EXCLCALECOMP;

      IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
         UPDATE TRABPROCLIMPEZA
           SET QTREGEXCLIMPEZA = @V_EXCLCALECOMP
         WHERE IDLIMPEZA = @P_IDSISTEMA
           AND NMTABELALIMP = 'CALECOMP';

        /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
        SET @V_COUNT_COMMIT = 1;
        COMMIT;
      END
      ELSE BEGIN
        SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
      END;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLCALECOMP,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'CALECOMP';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   SET @V_PASSO = 14;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DELETE FROM FERICOMP
      WHERE CDFILIAL = @V_CDFILIAL
        AND DTFERICOMP <= @P_DTFINAL;

      SET @V_EXCLFERICOMP = @@ROWCOUNT + @V_EXCLFERICOMP;

      IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
         UPDATE TRABPROCLIMPEZA
           SET QTREGEXCLIMPEZA = @V_EXCLFERICOMP
         WHERE IDLIMPEZA = @P_IDSISTEMA
           AND NMTABELALIMP = 'FERICOMP';

        /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
        SET @V_COUNT_COMMIT = 1;
        COMMIT;
      END
      ELSE BEGIN
        SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
      END;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLFERICOMP,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'FERICOMP';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;

   SET @V_PASSO = 15;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      SELECT @V_CDFILCENTCMP = ISNULL(MAX(CDFILCENTCMP), @V_CDFILIAL)
      FROM FILIAL
      WHERE FILIAL.CDFILIAL = @V_CDFILIAL;

      DELETE FROM APURPRECO
       WHERE CDFILCENTCMP =  @V_CDFILCENTCMP
         AND NRAPURPREC   <> 'X'
         AND DTFINAPUPREC <= @P_DTFINAL;

      SET @V_EXCLAPURPRECO = @@ROWCOUNT + @V_EXCLAPURPRECO;

      IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
         UPDATE TRABPROCLIMPEZA
           SET QTREGEXCLIMPEZA = @V_EXCLAPURPRECO
         WHERE IDLIMPEZA = @P_IDSISTEMA
           AND NMTABELALIMP = 'APURPRECO';

        /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
        SET @V_COUNT_COMMIT = 1;
        COMMIT;
      END
      ELSE BEGIN
        SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
      END;

      FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL;
   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLAPURPRECO,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'APURPRECO';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;


   SET @V_PASSO = 16;

   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DELETE FROM ITMAPURPREC
      WHERE
         CDCENTITMAP <> 'X'         AND
         NRSEQITMAP  <> 'X'         AND
         CDREGITMAP  <> 'X'         AND
         CDFORNITMAP <> 'X'         AND
         NRCOLEITMAP <> 'X'         AND
         DTENTRAPUT  <= @P_DTFINAL AND
         CDFILIAP    =  @V_CDFILIAL AND
         CDPRODITMAP <> 'X'         AND
         CDMARCITMAP <> 'X';

      SET @V_EXCLITMAPURPREC = @@ROWCOUNT + @V_EXCLITMAPURPREC;

      IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
         UPDATE TRABPROCLIMPEZA
           SET QTREGEXCLIMPEZA = @V_EXCLITMAPURPREC
         WHERE IDLIMPEZA = @P_IDSISTEMA
           AND NMTABELALIMP = 'ITMAPURPREC';

        /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
        SET @V_COUNT_COMMIT = 1;
        COMMIT;
      END
      ELSE BEGIN
        SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
      END;

   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLITMAPURPREC,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA
      AND NMTABELALIMP = 'ITMAPURPREC';

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

    /* PRECISA DO COMMIT PARA PODER ATUALIZAR A TELA */
   SET @V_COUNT_COMMIT = 1;
   COMMIT;


   OPEN C_LISTA;
   FETCH NEXT FROM C_LISTA INTO @V_CDFILIAL
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DECLARE C_CS CURSOR FOR
          SELECT CDFILIAL, DTCUSTOSUP
          FROM CUSTOSUP
          WHERE CDFILIAL = @V_CDFILIAL
            AND CDPRODUTO <> 'X'
            AND DTCUSTOSUP <= @P_DTFINAL
          GROUP BY CDFILIAL,DTCUSTOSUP
      OPEN C_CS
      FETCH NEXT FROM C_CS INTO @V_CS_CDFILIAL, @V_CS_DTCUSTOSUP;

      WHILE (@@FETCH_STATUS = 0)
      BEGIN
         SET @V_PASSO = 17;
         UPDATE CUSTOSUP
            SET CDFILIALORIG = NULL,
                CDPRODORIG   = NULL,
                DTCUSTSUPORI = NULL
         WHERE
            CDFILIALORIG = @V_CS_CDFILIAL   AND
            DTCUSTSUPORI = @V_CS_DTCUSTOSUP;
         DELETE CUSTOSUP
         WHERE CDFILIAL = @V_CS_CDFILIAL
           AND DTCUSTOSUP = @V_CS_DTCUSTOSUP;

         SET @V_EXCLCUSTOSUP = @@ROWCOUNT + @V_EXCLCUSTOSUP;

         IF @V_COUNT_COMMIT >= @V_NUM_TO_COMMIT BEGIN
            UPDATE TRABPROCLIMPEZA
              SET QTREGEXCLIMPEZA = @V_EXCLCUSTOSUP
            WHERE IDLIMPEZA = @P_IDSISTEMA
              AND NMTABELALIMP = 'CUSTOSUP';

           /*CONTROLE DE COMMIT HA CADA 1000 REGISTRO DELETEDO  E PARA ATUALIZAR A TELA DE LIMPEZA*/
           SET @V_COUNT_COMMIT = 1;
           COMMIT;
         END
         ELSE BEGIN
           SET @V_COUNT_COMMIT = @V_COUNT_COMMIT + 1;
         END;

         FETCH NEXT FROM C_CS INTO @V_CS_CDFILIAL, @V_CS_DTCUSTOSUP;
      END;
      CLOSE C_CS;
      DEALLOCATE C_CS;

   END;
   CLOSE C_LISTA;
   DEALLOCATE C_LISTA;

   /* COLOCA O STATUS DA TABELA DE LIMPEZA PARA CONCLUIDO */
   UPDATE TRABPROCLIMPEZA
      SET IDSITUPROCLIMP = 'C',
          QTREGEXCLIMPEZA = @V_EXCLCUSTOSUP,
          DTHRFINLIMPEZA = GETDATE()
    WHERE IDLIMPEZA = @P_IDSISTEMA AND
          NMTABELALIMP = 'CUSTOSUP';

   /*deleta a tabela temporaria da limpeza */
   DELETE FROM TRABLIMPEZA
   WHERE IDLIMPEZA = @P_IDSISTEMA;

   COMMIT;

   ALTER TABLE SOLICITA     ENABLE TRIGGER GRAVA_LOGSOLICITA;
   ALTER TABLE ITEMSOLI     ENABLE TRIGGER GRAVA_MOVOPSOL;
   ALTER TABLE LOGSOLICITA  ENABLE TRIGGER GRAVA_LOGSOLICITA;
   ALTER TABLE LOGITEMCOLE  ENABLE TRIGGER GRAVA_LOGITEMCOLE;
   ALTER TABLE LOGCOLETAPR  ENABLE TRIGGER GRAVA_LOGCOLETAPR;
   ALTER TABLE ITEMPRODUTO  ENABLE TRIGGER ATUALIZA_PEDIDO;
   ALTER TABLE ITEMPRODUTO  ENABLE TRIGGER LOG_FIS_ITEMPRODUTO;
   ALTER TABLE LOGAUTOFORNE ENABLE TRIGGER GRAVA_LOGAUTOFORNE;
   ALTER TABLE LOGITEMAUTF  ENABLE TRIGGER GRAVA_LOGITEMAUTF;
   ALTER TABLE ITEMPRODUTO  ENABLE TRIGGER NF_BAIXA_AF;

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'SOLICITA', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'SOLICITA', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLSOLICITA);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'MOVOPSOL', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'MOVOPSOL', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLMOVOPSOL);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'LOGCOLETAPR', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'LOGCOLETAPR', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLLOGCOLETAPR);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'LOGITEMCOLE', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'LOGITEMCOLE', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLLOGITEMCOLE);

   INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'COLETAPR', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'COLETAPR', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLCOLETAPR);

   INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'ITMPREVLIST', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITMPREVLIST', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITMPREVLIST);

   INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'ITEMCOLE', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITEMCOLE', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITEMCOLE);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'ITEXCLISPREC', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITEXCLISPREC', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITEXCLISPREC);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'PREVLISTA', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'PREVLISTA', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLPREVLISTA);

   INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'LOGAUTOFORNE', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'LOGAUTOFORNE', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLLOGAUTOFORNE);

   INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'LOGITEMAUTF', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'LOGITEMAUTF', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLLOGITEMAUTF);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES  (@P_DSSISTLIMPEZ, 'NFRELACAF', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'NFRELACAF', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLNFRELACAF);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES  (@P_DSSISTLIMPEZ, 'NFRELACAFSAI', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'NFRELACAFSAI', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLNFRELACAFSAI);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES  (@P_DSSISTLIMPEZ, 'ITEMSAIDOL', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITEMSAIDOL', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITEMSAIDOL);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'AUTOFORNE', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'AUTOFORNE', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLAUTOFORNE);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'CALECOMP', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'CALECOMP', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLCALECOMP);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'FERICOMP', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'FERICOMP', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLFERICOMP);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'APURPRECO', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'APURPRECO', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLAPURPRECO);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'ITMAPURPREC', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITMAPURPREC', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITMAPURPREC);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'CUSTOSUP', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'CUSTOSUP', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLCUSTOSUP);

   INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
   VALUES (@P_DSSISTLIMPEZ, 'PRODCOMPRA', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'PRODCOMPRA', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLPRODCOMPRA);

   COMMIT;

   IF @Err <> 0 BEGIN

      IF (@V_EXCLSOLICITA > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'SOLICITA', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'SOLICITA', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLSOLICITA);
      END;

      IF (@V_EXCLMOVOPSOL > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'MOVOPSOL', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'MOVOPSOL', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLMOVOPSOL);
      END;

      IF (@V_EXCLLOGCOLETAPR > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'LOGCOLETAPR', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'LOGCOLETAPR', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLLOGCOLETAPR);
      END;

      IF (@V_EXCLLOGITEMCOLE > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'LOGITEMCOLE', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'LOGITEMCOLE', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLLOGITEMCOLE);
      END;

      IF (@V_EXCLCOLETAPR > 0) BEGIN
         INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'COLETAPR', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'COLETAPR', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLCOLETAPR);
      END;

      IF (@V_EXCLITMPREVLIST > 0) BEGIN
         INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'ITMPREVLIST', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITMPREVLIST', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITMPREVLIST);
      END;

      IF (@V_EXCLITEXCLISPREC > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'ITEXCLISPREC', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITEXCLISPREC', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITEXCLISPREC);
      END;

      IF (@V_EXCLPREVLISTA > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'PREVLISTA', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'PREVLISTA', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLPREVLISTA);
      END;

      IF (@V_EXCLLOGAUTOFORNE > 0) BEGIN
          INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
          VALUES (@P_DSSISTLIMPEZ, 'LOGAUTOFORNE', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'LOGAUTOFORNE', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLLOGAUTOFORNE);
      END;

      IF (@V_EXCLLOGITEMAUTF > 0) BEGIN
         INSERT INTO LOGLIMPEZA  (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'LOGITEMAUTF', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'LOGITEMAUTF', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLLOGITEMAUTF);
      END;

      IF (@V_EXCLNFRELACAF > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES  (@P_DSSISTLIMPEZ, 'NFRELACAF', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'NFRELACAF', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLNFRELACAF);
      END;

      IF (@V_EXCLNFRELACAFSAI > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES  (@P_DSSISTLIMPEZ, 'NFRELACAFSAI', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'NFRELACAFSAI', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLNFRELACAFSAI);
      END;

      IF (@V_EXCLITEMSAIDOL > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES  (@P_DSSISTLIMPEZ, 'ITEMSAIDOL', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITEMSAIDOL', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITEMSAIDOL);
      END;

      IF (@V_EXCLAUTOFORNE > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'AUTOFORNE', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'AUTOFORNE', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLAUTOFORNE);
      END;

      IF (@V_EXCLCALECOMP > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'CALECOMP', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'CALECOMP', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLCALECOMP);
      END;

      IF (@V_EXCLFERICOMP > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'FERICOMP', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'FERICOMP', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLFERICOMP);
      END;

      IF (@V_EXCLAPURPRECO > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'APURPRECO', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'APURPRECO', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLAPURPRECO);
      END;

      IF (@V_EXCLITMAPURPREC > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'ITMAPURPREC', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'ITMAPURPREC', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLITMAPURPREC);
      END;

      IF (@V_EXCLCUSTOSUP > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'CUSTOSUP', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'CUSTOSUP', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLCUSTOSUP);
      END;

      IF (@V_EXCLPRODCOMPRA > 0) BEGIN
         INSERT INTO LOGLIMPEZA (DSSISTLIMPEZ, NMTABLIMP, DTLIMPDADOS, NMOPERLIMPEZ, DTFINALIMPEZ, DSLIMPEZA, DSRDMUSULOGL, DSENDUSULOGL, DSNMUSUOLOGL, DSMETUSULOGL, QTDLINHAEXCL)
         VALUES (@P_DSSISTLIMPEZ, 'PRODCOMPRA', GETDATE(), @P_NMOPERLIMPEZ, @P_DTFINAL, 'PRODCOMPRA', @V_DSRDM, @V_DSIP, @V_DSUSUARIO, @V_DSMETODO, @V_EXCLPRODCOMPRA);
      END;

      DELETE FROM TRABLIMPEZA
      WHERE IDLIMPEZA = @P_IDSISTEMA;

      COMMIT;

      ALTER TABLE SOLICITA     ENABLE TRIGGER GRAVA_LOGSOLICITA;
      ALTER TABLE ITEMSOLI     ENABLE TRIGGER GRAVA_MOVOPSOL;
      ALTER TABLE LOGSOLICITA  ENABLE TRIGGER GRAVA_LOGSOLICITA;
      ALTER TABLE LOGITEMCOLE  ENABLE TRIGGER GRAVA_LOGITEMCOLE;
      ALTER TABLE LOGCOLETAPR  ENABLE TRIGGER GRAVA_LOGCOLETAPR;
      ALTER TABLE ITEMPRODUTO  ENABLE TRIGGER ATUALIZA_PEDIDO;
      ALTER TABLE ITEMPRODUTO  ENABLE TRIGGER LOG_FIS_ITEMPRODUTO;
      ALTER TABLE LOGAUTOFORNE ENABLE TRIGGER GRAVA_LOGAUTOFORNE;
      ALTER TABLE LOGITEMAUTF  ENABLE TRIGGER GRAVA_LOGITEMAUTF;
      ALTER TABLE ITEMPRODUTO  ENABLE TRIGGER NF_BAIXA_AF;

      RAISERROR (@V_PASSO, 16, 1);

      RETURN (@Err)

   END   
END;
GO

-- VERSAO --
EXEC ATUVEROBJ 'LIMPEZA_CMPSUP','5.05.009';
GO

