CREATE OR REPLACE FUNCTION COMP_LOCAL ( P_CDFILIAL     IN FILIAL.CDFILIAL%TYPE,
                                        P_CDPRODUTO    IN PRODUTO.CDPRODUTO%TYPE,
                                        P_NRPEDIDO     IN PEDIDO.NRPEDIDO%TYPE DEFAULT NULL,
                                        P_NRITEMPED    IN COMPITEMPED.NRITEMPED%TYPE DEFAULT NULL
                                      ) RETURN VARCHAR2
AS
   V_CTREG INTEGER;
   V_IDTPCOMPPROD VARCHAR2(1);
BEGIN
   SELECT IDTPCOMPPROD
     INTO V_IDTPCOMPPROD
     FROM PARAMPEDIDO
     WHERE CDFILIAL = P_CDFILIAL;

   V_CTREG := 0;

   IF V_IDTPCOMPPROD = 'V' THEN
      SELECT COUNT(*) INTO V_CTREG
      FROM COMPITEMPED
      WHERE(CDFILIAL  = P_CDFILIAL ) AND
           (NRPEDIDO  = P_NRPEDIDO)  AND
           (NRITEMPED = P_NRITEMPED) AND
           (CDPRODUTO = P_CDPRODUTO);
   END IF;        

   IF V_CTREG > 0 THEN
      RETURN('C'); 
   ELSE
      SELECT COUNT(*) INTO V_CTREG
      FROM
         ROTFABLOCAL
      WHERE(CDFILIAL  = P_CDFILIAL ) AND
           (CDPRODUTO = P_CDPRODUTO);

      IF V_CTREG > 0 THEN
         RETURN(P_CDFILIAL);
      ELSE
         SELECT COUNT(*) INTO V_CTREG
         FROM
            ROTFABRICA
         WHERE
            (CDPRODUTO = P_CDPRODUTO);

         IF V_CTREG > 0 THEN
            RETURN('P');
         ELSE
            RETURN('N');
         END IF;
      END IF;
   END IF;
END;
/