DECLARE
V_EXISTE         VARCHAR2(200);
V_FILIPADRAO VARCHAR2(1);
V_CDFILIAL      VARCHAR2(4);
BEGIN 
  FOR C_FILIAL IN(
      SELECT CDFILIAL FROM PARFILIALROP
  )LOOP
        BEGIN
          SELECT IDUTPADRROPFIL 
           INTO V_FILIPADRAO
           FROM PARFILIALROP
          WHERE CDFILIAL = C_FILIAL.CDFILIAL;
        EXCEPTION
        WHEN NO_DATA_FOUND THEN
          V_FILIPADRAO :='N';
        END;
        
        IF V_FILIPADRAO = 'S' THEN
           V_CDFILIAL := 'P';
        ELSE
           V_CDFILIAL := C_FILIAL.CDFILIAL;
        END IF;
      
       FOR C_PRODUTOS IN (
      SELECT PROD.CDPRODUTO,PROD.CDARVPROD,PROD.CDNVPRODUTO
        FROM PRODUTO PROD 
       WHERE PROD.CDPRODUTO NOT IN(
            SELECT PROD.CDPRODUTO  
              FROM PRODUTO PROD,
               (SELECT PP.CDFILIAL,
                       PP.CDPRODUTO,
                       PP.IDTPPRODUTOROP,
                       PR.CDARVPROD,
                       PR.NMPRODUTO,
                       PP.NRORG
                  FROM PRODUTOROP PP,PRODUTO PR
                 WHERE PP.CDFILIAL       = NVL(V_CDFILIAL,'P')
                   AND PP.IDTPPRODUTOROP IN ('DE','MO','CO')
                   AND PP.CDPRODUTO      = PR.CDPRODUTO
                 ORDER BY PR.CDARVPROD) PRODUTOROP
            WHERE PROD.CDARVPROD LIKE PRODUTOROP.CDARVPROD||'%'
            UNION ALL
            SELECT PROD.CDPRODUTO  
            FROM PRODUTO PROD,
               (SELECT PP.CDFILIAL,
                       PP.CDPRODUTO,
                       PP.IDTPPRODUTOROP,
                       PR.CDARVPROD,
                       PR.NMPRODUTO,
                       PP.NRORG
                  FROM PRODUTOROP PP,PRODUTO PR
                 WHERE PP.CDFILIAL       = NVL(V_CDFILIAL,'P')
                   AND PP.IDTPPRODUTOROP IN ('DE','MO','CO')
                   AND PP.CDPRODUTO      = PR.CDPRODUTO
                 ORDER BY PR.CDARVPROD) PRODUTOROP
         WHERE PRODUTOROP.CDARVPROD LIKE PROD.CDARVPROD||'%' 
        )ORDER BY CDARVPROD ASC
    )LOOP
      V_EXISTE := NULL;
      BEGIN
         SELECT PR.CDPRODUTO
          INTO V_EXISTE
           FROM PRODUTOROP PR,PRODUTO P
          WHERE PR.CDPRODUTO      = P.CDPRODUTO 
            AND PR.CDFILIAL       = V_CDFILIAL
            AND PR.IDTPPRODUTOROP IN('MO','DE','CO')
            AND C_PRODUTOS.CDARVPROD LIKE  P.CDARVPROD||'%';
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
        V_EXISTE := NULL;
      END;
      IF(V_EXISTE IS NULL) THEN  
        INSERT INTO PRODUTOROP (CDFILIAL,CDPRODUTO,IDTPPRODUTOROP) VALUES (V_CDFILIAL,C_PRODUTOS.CDPRODUTO,'CO');
        COMMIT;     
      END IF;
    END LOOP;
  END LOOP;
END;