CREATE OR REPLACE FUNCTION BUSCA_ALMOX_RETIRADA_CDP_SEMI(P_CDFILIAL  IN FILIAL.CDFILIAL%TYPE,
                                                         P_CDPRODUTO IN PRODUTO.CDPRODUTO%TYPE,
                                                         P_IDPRODPILOTO IN ORDPRODUCAO.IDPRODPILOTO%TYPE)RETURN VARCHAR2
AS
   V_IDCTRLESTQ      PARAMFILIAL.IDCTRLESTQ%TYPE;
   V_IDUTILALMOX     PARAMFILIAL.IDUTILALMOX%TYPE;
   V_CDALMOXINSPRPIL ALMOXARIFADO.CDALMOXARIFE%TYPE;
   V_CDALMOXPRSEMACA ALMOXARIFADO.CDALMOXARIFE%TYPE;
BEGIN

   SELECT MAX(IDCTRLESTQ), MAX(IDUTILALMOX)
     INTO  V_IDCTRLESTQ,   V_IDUTILALMOX
     FROM PARAMFILIAL
    WHERE CDFILIAL = P_CDFILIAL;

   IF (V_IDCTRLESTQ <> 'N') AND (V_IDUTILALMOX = 'S') THEN
      SELECT MAX(CDALMOXINSPRPIL), MAX(CDALMOXPRSEMACA)
        INTO V_CDALMOXINSPRPIL,    V_CDALMOXPRSEMACA
        FROM PRODFILI PF JOIN PRODUTO P
                           ON PF.CDPRODUTO = P.CDPRODESTO
       WHERE PF.CDFILIAL = P_CDFILIAL
         AND P.CDPRODUTO = P_CDPRODUTO;

      IF (P_IDPRODPILOTO = 'S') THEN
         RETURN(V_CDALMOXINSPRPIL);
      ELSE
         IF V_CDALMOXPRSEMACA IS NOT NULL THEN
            RETURN(V_CDALMOXPRSEMACA);
         ELSE
            RETURN(NULL);
         END IF;
      END IF;
   ELSE
      RETURN(' ');
   END IF;
END;
/