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

CREATE PROCEDURE INATIVA_PROD
AS
   DECLARE @V_DTINATIVAPROD        DATETIME;
   DECLARE @V_CONT_COMMIT          NUMERIC = 0;

   DECLARE @V_C_FILIAL_CDFILIAL    VARCHAR(4);
   DECLARE @V_C_PRODUTO_CDPRODUTO  VARCHAR(10);
   DECLARE @V_C_PRODUTO_NMPRODUTO  VARCHAR(10);

BEGIN
BEGIN TRANSACTION
   DECLARE C_FILIAL
    CURSOR FOR
    SELECT CDFILIAL
      FROM FILIAL
     ORDER BY CDFILIAL
      OPEN C_FILIAL;
   FETCH NEXT FROM C_FILIAL INTO @V_C_FILIAL_CDFILIAL;
   WHILE (@@FETCH_STATUS = 0)
   BEGIN
      DECLARE C_PRODUTO
       CURSOR FOR
       SELECT CDPRODUTO, NMPRODUTO
                          FROM PRODUTO
                         WHERE CDPRODESTO IS NOT NULL
         OPEN C_PRODUTO;
      FETCH NEXT FROM C_PRODUTO INTO @V_C_PRODUTO_CDPRODUTO, @V_C_PRODUTO_NMPRODUTO;
      WHILE (@@FETCH_STATUS = 0)
      BEGIN
         IF '(INATIVO) ' = SUBSTRING(@V_C_PRODUTO_NMPRODUTO, 1, 10) BEGIN
            UPDATE PRODFILI 
               SET IDPRODATIV = 'I',
                   DTULTATUPRFIL = GETDATE()
             WHERE CDFILIAL  = @V_C_FILIAL_CDFILIAL
               AND CDPRODUTO = @V_C_PRODUTO_CDPRODUTO
               AND ISNULL(IDPRODATIV, 'A') =  'A';
            SET @V_CONT_COMMIT = @V_CONT_COMMIT + 1;
         END  
         ELSE BEGIN
            UPDATE PRODFILI
               SET IDPRODATIV = 'A',
                   DTULTATUPRFIL = GETDATE()
             WHERE CDFILIAL  = @V_C_FILIAL_CDFILIAL
               AND CDPRODUTO = @V_C_PRODUTO_CDPRODUTO
               AND ISNULL(IDPRODATIV, 'A') =  'I';
            SET @V_CONT_COMMIT = @V_CONT_COMMIT + 1;
         END;
         IF @V_CONT_COMMIT >= 500 BEGIN
            SET @V_CONT_COMMIT = 0;
            COMMIT;
         END;
         FETCH NEXT FROM C_PRODUTO INTO @V_C_PRODUTO_CDPRODUTO, @V_C_PRODUTO_NMPRODUTO;
         CLOSE C_PRODUTO;
         DEALLOCATE C_PRODUTO;
         COMMIT;
      END;
      FETCH NEXT FROM C_FILIAL INTO @V_C_FILIAL_CDFILIAL;
   END;
   CLOSE C_FILIAL;
   DEALLOCATE C_FILIAL;
   COMMIT;
END;
GO