-- =============================================================================
--   Database name :  COMISSARIA
--   Created on    :  24/11/1998  14:28
--   Programador   :  Leonardo Monteiro
-- =============================================================================
-- @c:\win_v4\sql\end_conv\oracle\1850_COCSTPO.sql
-- =============================================================================

CREATE OR REPLACE PROCEDURE SUB_EXC_PROD(
P_CDFILIAL   IN FILIAL.CDFILIAL%TYPE,
P_CDCIA      IN COMPANHIA.CDCIA%TYPE,
P_CDMANCIA   IN MANUALCIA.CDMANCIA%TYPE,
P_CDSERVICO  IN SERVICOCIA.CDSERVICO%TYPE,
P_CDPRODUTO  IN PRODUTO.CDPRODUTO%TYPE,
P_CDPRODUTO2 IN PRODUTO.CDPRODUTO%TYPE,
P_IDTIPOPER  IN NUMBER)

AS

BEGIN

--------------------------------------------------------------------------------
--              Substitui um produto por outro.
--------------------------------------------------------------------------------
   IF P_IDTIPOPER = 1 THEN
      FOR CUR_COMPPROD IN (SELECT CP.CDPRODUTO, CP.CDESPEPROD, CP.CDTIPOCOMP, CP.CDPRODINSUMO
                           FROM COMPPROD CP, ESPEPROD EP
                           WHERE
                              (CP.CDPRODUTOAUX = EP.CDPRODUTO ) AND
                              (CP.CDESPPRODAUX = EP.CDESPEPROD) AND
                              (EP.CDFILIAL     = P_CDFILIAL   ) AND
                              (EP.CDCIA        = P_CDCIA      ) AND
                              (EP.CDMANCIA     = P_CDMANCIA   ) AND
                              (CP.CDPRODINSUMO = P_CDPRODUTO  ) AND
                              ((INSTR(P_CDSERVICO, CP.CDPRODUTOAUX) <> 0) OR
                              (P_CDSERVICO = 'T'       ))) 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;
--------------------------------------------------------------------------------
--              Exclui um produto.
--------------------------------------------------------------------------------
   IF P_IDTIPOPER = 0 THEN
      FOR CUR_COMPPROD IN (SELECT CP.CDPRODUTO, CP.CDESPEPROD, CP.CDTIPOCOMP, CP.CDPRODINSUMO
                           FROM COMPPROD CP, ESPEPROD EP
                           WHERE
                              (CP.CDPRODUTOAUX = EP.CDPRODUTO ) AND
                              (CP.CDESPPRODAUX = EP.CDESPEPROD) AND
                              (EP.CDFILIAL     = P_CDFILIAL   ) AND
                              (EP.CDCIA        = P_CDCIA      ) AND
                              (EP.CDMANCIA     = P_CDMANCIA   ) AND
                              (CP.CDPRODINSUMO = P_CDPRODUTO  ) AND
                              ((INSTR(P_CDSERVICO, CP.CDPRODUTOAUX) <> 0) OR
                              (P_CDSERVICO = 'T'       ))) 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;
END;
/


-- VERSAO --
BEGIN ATUVEROBJ('SUB_EXC_PROD','4.11.180'); END;
/

