CREATE OR REPLACE PROCEDURE SUB_EXC_PROD_REC(
P_CDFILIAL   IN FILIAL.CDFILIAL   %TYPE,
P_CDPRODUTO  IN PRODUTO.CDPRODUTO %TYPE,
P_CDPRODUTO2 IN PRODUTO.CDPRODUTO %TYPE,
P_CDRECEITA  IN PRODUTO.CDPRODUTO %TYPE,
P_IDTIPOPER  IN NUMBER)
AS
BEGIN
   IF P_IDTIPOPER = 0 THEN
      FOR CUR_COMPPROD IN (SELECT
                              CP.CDPRODUTO, CP.CDESPEPROD, CP.CDTIPOCOMP, CP.CDPRODINSUMO
                           FROM
                              COMPPROD CP, ESPEPROD EP, PRODUTO PR
                           WHERE
                              (CP.CDPRODUTO    = EP.CDPRODUTO     ) AND
                              (CP.CDESPEPROD   = EP.CDESPEPROD    ) AND
                              (CP.CDPRODUTO    = PR.CDPRODUTO     ) AND
                              (PR.IDPRODCOMISS = '3'              ) AND
                              (INSTR(P_CDRECEITA,EP.CDPRODUTO) > 0) AND
                              (CP.CDPRODINSUMO = P_CDPRODUTO      ) AND
                              (EP.CDFILIAL     = P_CDFILIAL       )) LOOP
         DELETE COMPPROD
         WHERE
            (CDPRODUTO    = CUR_COMPPROD.CDPRODUTO   ) AND
            (CDESPEPROD   = CUR_COMPPROD.CDESPEPROD  ) AND
            (CDTIPOCOMP   = CUR_COMPPROD.CDTIPOCOMP  ) AND
            (CDPRODINSUMO = CUR_COMPPROD.CDPRODINSUMO);
      END LOOP;
   END IF;

   IF P_IDTIPOPER = 1 THEN
      FOR CUR_COMPPROD IN (SELECT
                              CP.CDPRODUTO, CP.CDESPEPROD, CP.CDTIPOCOMP, CP.CDPRODINSUMO
                           FROM
                              COMPPROD CP, ESPEPROD EP, PRODUTO PR
                           WHERE
                              (CP.CDPRODUTO    = EP.CDPRODUTO     ) AND
                              (CP.CDESPEPROD   = EP.CDESPEPROD    ) AND
                              (CP.CDPRODUTO    = PR.CDPRODUTO     ) AND
                              (PR.IDPRODCOMISS = '3'              ) AND
                              (INSTR(P_CDRECEITA,EP.CDPRODUTO) > 0) AND
                              (CP.CDPRODINSUMO = P_CDPRODUTO      ) AND
                              (EP.CDFILIAL     = P_CDFILIAL       )) LOOP
          UPDATE COMPPROD
             SET CDPRODINSUMO = P_CDPRODUTO2
          WHERE
             (CDPRODUTO    = CUR_COMPPROD.CDPRODUTO   )AND
             (CDESPEPROD   = CUR_COMPPROD.CDESPEPROD  )AND
             (CDTIPOCOMP   = CUR_COMPPROD.CDTIPOCOMP  )AND
             (CDPRODINSUMO = CUR_COMPPROD.CDPRODINSUMO);
      END LOOP;
   END IF;
END;
/


-- VERSAO --
BEGIN ATUVEROBJ('SUB_EXC_PROD_REC','5.11.180'); END;
/
