CREATE OR REPLACE FUNCTION BUSCA_SITUACAO_COLETA_IUM(
   P_CDFILIAL     IN ITEMPRODUTO.CDFILIAL%TYPE,
   P_NRLANCTONF   IN ITEMPRODUTO.NRLANCTONF%TYPE,
   P_CDPRODUTO    IN ITEMPRODUTO.CDPRODUTO%TYPE) RETURN VARCHAR2 IS

   V_QTITEMPROD   DOUBLE PRECISION;
   V_QTRESPRODPED DOUBLE PRECISION;
   V_QTPERADIC    DOUBLE PRECISION;
   V_VRPEADIEXP   DOUBLE PRECISION;
   V_RESULT       VARCHAR2(01);
BEGIN

   SELECT SUM(QTEXPEDIR)
     INTO V_QTITEMPROD
     FROM ITEMPRODUTO
    WHERE CDFILIAL = P_CDFILIAL
      AND NRLANCTONF = P_NRLANCTONF
      AND CDPRODUTO = P_CDPRODUTO;

   SELECT DECODE(MAX(IDPERADIEXP), 'S', MAX(VRPEADIEXP), 0)
     INTO V_VRPEADIEXP
     FROM PAREXPEDICAO
    WHERE CDFILIAL = P_CDFILIAL;

   V_QTPERADIC :=   ROUND(V_QTITEMPROD+((V_VRPEADIEXP/100)*V_QTITEMPROD), 2);

   SELECT SUM(QTRESPRODPED)
     INTO V_QTRESPRODPED
      FROM IUMITEMPROD
    WHERE CDFILIAL = P_CDFILIAL
      AND NRLANCTONF = P_NRLANCTONF
      AND CDPRODUTO = P_CDPRODUTO;

   IF ((V_QTRESPRODPED = 0) OR (V_QTRESPRODPED IS NULL)) THEN
      V_RESULT := 'N';
   ELSIF (V_QTRESPRODPED = V_QTITEMPROD) THEN
      V_RESULT := 'V';
   ELSIF ((V_QTRESPRODPED > V_QTITEMPROD) AND (V_QTRESPRODPED <= V_QTPERADIC)) THEN
      V_RESULT := 'A';
   ELSIF ((V_QTRESPRODPED > V_QTITEMPROD) AND (V_QTRESPRODPED > V_QTPERADIC)) THEN
      V_RESULT := 'E';
   ELSE
      V_RESULT := 'M';
   END IF;

   RETURN(V_RESULT);
END;
/